]> source.dussan.org Git - archiva.git/blob
2faedf39a08e4432b21c8db0399d0ab1fe748348
[archiva.git] /
1 package org.apache.maven.archiva.common.spring;
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 java.io.IOException;
23
24 import org.springframework.beans.BeansException;
25 import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
26 import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
27 import org.springframework.context.ApplicationContext;
28 import org.springframework.context.support.ClassPathXmlApplicationContext;
29
30 /**
31  * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
32  * @since 1.1
33  */
34 public class PlexusClassPathXmlApplicationContext
35     extends ClassPathXmlApplicationContext
36 {
37
38     // TODO enable Field injection...
39     // @see http://forum.springframework.org/showthread.php?t=50181
40
41     public PlexusClassPathXmlApplicationContext( String path, Class clazz )
42         throws BeansException
43     {
44         super( path, clazz );
45     }
46
47     public PlexusClassPathXmlApplicationContext( String configLocation )
48         throws BeansException
49     {
50         super( configLocation );
51     }
52
53     public PlexusClassPathXmlApplicationContext( String[] configLocations, ApplicationContext parent )
54         throws BeansException
55     {
56         super( configLocations, parent );
57     }
58
59     public PlexusClassPathXmlApplicationContext( String[] configLocations, boolean refresh, ApplicationContext parent )
60         throws BeansException
61     {
62         super( configLocations, refresh, parent );
63     }
64
65     public PlexusClassPathXmlApplicationContext( String[] configLocations, boolean refresh )
66         throws BeansException
67     {
68         super( configLocations, refresh );
69     }
70
71     public PlexusClassPathXmlApplicationContext( String[] paths, Class clazz, ApplicationContext parent )
72         throws BeansException
73     {
74         super( paths, clazz, parent );
75     }
76
77     public PlexusClassPathXmlApplicationContext( String[] paths, Class clazz )
78         throws BeansException
79     {
80         super( paths, clazz );
81     }
82
83     public PlexusClassPathXmlApplicationContext( String[] configLocations )
84         throws BeansException
85     {
86         super( configLocations );
87     }
88
89     /**
90      * Register a custom BeanDefinitionDocumentReader to convert plexus
91      * descriptors to spring bean context format.
92      * <p>
93      * Implementation note : validation must be disabled as plexus descriptors
94      * don't use DTD / XML schemas {@inheritDoc}
95      *
96      * @see org.springframework.context.support.AbstractXmlApplicationContext#loadBeanDefinitions(org.springframework.beans.factory.xml.XmlBeanDefinitionReader)
97      */
98     @Override
99     protected void loadBeanDefinitions( XmlBeanDefinitionReader reader )
100         throws BeansException, IOException
101     {
102         reader.setDocumentReaderClass( PlexusBeanDefinitionDocumentReader.class );
103         reader.setValidationMode( XmlBeanDefinitionReader.VALIDATION_NONE );
104         super.loadBeanDefinitions( reader );
105
106     }
107
108     /**
109      * Post-process the beanFactory to adapt plexus concepts to spring :
110      * <ul>
111      * <li>register a beanPostPorcessor to support LogEnabled interface in
112      * spring context
113      * </ul>
114      * {@inheritDoc}
115      *
116      * @see org.springframework.context.support.AbstractApplicationContext#prepareBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory)
117      */
118     @Override
119     protected void prepareBeanFactory( ConfigurableListableBeanFactory beanFactory )
120     {
121         super.prepareBeanFactory( beanFactory );
122
123         if ( logger.isDebugEnabled() )
124         {
125             String[] beans = getBeanFactory().getBeanDefinitionNames();
126             logger.debug( "registered beans :" );
127             for ( int i = 0; i < beans.length; i++ )
128             {
129                 logger.debug( beans[i] );
130             }
131         }
132
133         // Register a bean post-processor to handle plexus Logger injection
134         getBeanFactory().addBeanPostProcessor( new PlexusLogEnabledBeanPostProcessor() );
135     }
136
137 }