]> source.dussan.org Git - archiva.git/blob
1f86c4e917656f64c81ef99da56389d3c5fb3c0c
[archiva.git] /
1 package org.apache.maven.archiva.web.startup;
2
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements.  See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership.  The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License.  You may obtain a copy of the License at
11  *
12  *  http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied.  See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */
21
22 import javax.servlet.ServletContextEvent;
23 import javax.servlet.ServletContextListener;
24
25 import org.apache.archiva.scheduler.ArchivaTaskScheduler;
26 import org.apache.archiva.scheduler.repository.RepositoryArchivaTaskScheduler;
27 import org.apache.maven.archiva.common.ArchivaException;
28 import org.codehaus.plexus.spring.PlexusToSpringUtils;
29 import org.codehaus.plexus.taskqueue.execution.TaskQueueExecutor;
30 import org.springframework.context.ApplicationContext;
31 import org.springframework.context.support.ClassPathXmlApplicationContext;
32 import org.springframework.web.context.WebApplicationContext;
33 import org.springframework.web.context.support.WebApplicationContextUtils;
34
35 /**
36  * ArchivaStartup - the startup of all archiva features in a deterministic order.
37  *
38  * @version $Id$
39  */
40 public class ArchivaStartup
41     implements ServletContextListener
42 {
43     public void contextInitialized( ServletContextEvent contextEvent )
44     {
45         WebApplicationContext wac =
46             WebApplicationContextUtils.getRequiredWebApplicationContext( contextEvent.getServletContext() );
47
48         SecuritySynchronization securitySync =
49             (SecuritySynchronization) wac.getBean( PlexusToSpringUtils.buildSpringId( SecuritySynchronization.class ) );
50         RepositoryArchivaTaskScheduler repositoryTaskScheduler = (RepositoryArchivaTaskScheduler) wac.getBean(
51             PlexusToSpringUtils.buildSpringId( ArchivaTaskScheduler.class, "repository" ) );
52         wac.getBean( PlexusToSpringUtils.buildSpringId( TaskQueueExecutor.class, "repository-scanning" ) );
53         wac.getBean( PlexusToSpringUtils.buildSpringId( TaskQueueExecutor.class, "indexing" ) );
54
55         try
56         {
57             securitySync.startup();
58             repositoryTaskScheduler.startup();
59             Banner.display();
60         }
61         catch ( ArchivaException e )
62         {
63             throw new RuntimeException( "Unable to properly startup archiva: " + e.getMessage(), e );
64         }
65     }
66
67     public void contextDestroyed( ServletContextEvent contextEvent )
68     {
69         ApplicationContext applicationContext =
70             WebApplicationContextUtils.getRequiredWebApplicationContext( contextEvent.getServletContext() );
71         if ( applicationContext != null && applicationContext instanceof ClassPathXmlApplicationContext )
72         {
73             ( (ClassPathXmlApplicationContext) applicationContext ).close();
74         }
75     }
76 }