You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2009/08/25 20:21:40 UTC

svn commit: r807745 - in /cxf/trunk: common/common/src/main/java/org/apache/cxf/common/injection/ common/common/src/main/java/org/apache/cxf/configuration/spring/ common/common/src/main/java/org/apache/cxf/resource/ rt/core/src/main/java/org/apache/cxf...

Author: dkulp
Date: Tue Aug 25 18:21:38 2009
New Revision: 807745

URL: http://svn.apache.org/viewvc?rev=807745&view=rev
Log:
Work on reducing startup time by lazy-initting things and marking
classes that Jsr250BeanPostProcessor don't need to deal with

Added:
    cxf/trunk/common/common/src/main/java/org/apache/cxf/common/injection/NoJSR250Annotations.java
      - copied, changed from r807205, cxf/trunk/common/common/src/main/java/org/apache/cxf/resource/ClasspathResolver.java
Modified:
    cxf/trunk/common/common/src/main/java/org/apache/cxf/common/injection/ResourceInjector.java
    cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/SpringBeanMap.java
    cxf/trunk/common/common/src/main/java/org/apache/cxf/resource/ClassLoaderResolver.java
    cxf/trunk/common/common/src/main/java/org/apache/cxf/resource/ClasspathResolver.java
    cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/CXFBusImpl.java
    cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/resource/ResourceManagerImpl.java
    cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/BusApplicationContextResourceResolver.java
    cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/BusExtensionPostProcessor.java
    cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/Jsr250BeanPostProcessor.java
    cxf/trunk/rt/core/src/main/java/org/apache/cxf/buslifecycle/CXFBusLifeCycleManager.java
    cxf/trunk/rt/core/src/main/java/org/apache/cxf/catalog/OASISCatalogManager.java
    cxf/trunk/rt/core/src/main/java/org/apache/cxf/configuration/spring/ConfigurerImpl.java
    cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/EndpointResolverRegistryImpl.java
    cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ServerRegistryImpl.java
    cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ServiceContractResolverRegistryImpl.java
    cxf/trunk/rt/core/src/main/java/org/apache/cxf/headers/HeaderManagerImpl.java
    cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/factory/FactoryBeanListenerManager.java
    cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/http/QueryHandlerRegistryImpl.java
    cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/http/WSDLQueryHandler.java
    cxf/trunk/rt/core/src/main/java/org/apache/cxf/workqueue/WorkQueueManagerImpl.java
    cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLManagerImpl.java
    cxf/trunk/rt/core/src/main/resources/META-INF/cxf/cxf.xml
    cxf/trunk/rt/core/src/test/java/org/apache/cxf/endpoint/EndpointResolverRegistryImplTest.java
    cxf/trunk/rt/core/src/test/java/org/apache/cxf/endpoint/ServiceContractResolverRegistryImplTest.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/resolver/JarResolverTest.java

Copied: cxf/trunk/common/common/src/main/java/org/apache/cxf/common/injection/NoJSR250Annotations.java (from r807205, cxf/trunk/common/common/src/main/java/org/apache/cxf/resource/ClasspathResolver.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/injection/NoJSR250Annotations.java?p2=cxf/trunk/common/common/src/main/java/org/apache/cxf/common/injection/NoJSR250Annotations.java&p1=cxf/trunk/common/common/src/main/java/org/apache/cxf/resource/ClasspathResolver.java&r1=807205&r2=807745&rev=807745&view=diff
==============================================================================
--- cxf/trunk/common/common/src/main/java/org/apache/cxf/resource/ClasspathResolver.java (original)
+++ cxf/trunk/common/common/src/main/java/org/apache/cxf/common/injection/NoJSR250Annotations.java Tue Aug 25 18:21:38 2009
@@ -17,29 +17,25 @@
  * under the License.
  */
 
-package org.apache.cxf.resource;
+package org.apache.cxf.common.injection;
 
-
-import java.io.InputStream;
-import java.net.URL;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
 
 /**
- * Resolve resources from the system class path.
+ * Marker annotation to let our JSR250 Processor know
+ * not to bother examining the class for annotations
+ * as it's know not to have any 
  */
-public class ClasspathResolver implements ResourceResolver {
-
-    public <T> T resolve(String resourceName, Class<T> resourceType) { 
-        if (resourceName == null) {
-            return null;
-        }
-        URL url = ClassLoader.getSystemResource(resourceName);
-        if (resourceType.isInstance(url)) {
-            return resourceType.cast(url);
-        }
-        return null;
-    } 
-
-    public InputStream getAsStream(String name) { 
-        return ClassLoader.getSystemResourceAsStream(name);
-    } 
+@Target({ ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface NoJSR250Annotations {
+    
+    /**
+     * If these fields are null, it will go ahead and do JSR250 processing
+     * as it assumes the values were not set via a constructor
+     */
+    String[] unlessNull() default { };
 }

Modified: cxf/trunk/common/common/src/main/java/org/apache/cxf/common/injection/ResourceInjector.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/injection/ResourceInjector.java?rev=807745&r1=807744&r2=807745&view=diff
==============================================================================
--- cxf/trunk/common/common/src/main/java/org/apache/cxf/common/injection/ResourceInjector.java (original)
+++ cxf/trunk/common/common/src/main/java/org/apache/cxf/common/injection/ResourceInjector.java Tue Aug 25 18:21:38 2009
@@ -34,6 +34,8 @@
 import javax.annotation.PreDestroy;
 import javax.annotation.Resource;
 import javax.annotation.Resources;
+import javax.xml.namespace.QName;
+
 
 import org.apache.cxf.common.annotation.AbstractAnnotationVisitor;
 import org.apache.cxf.common.annotation.AnnotationProcessor;
@@ -52,12 +54,12 @@
     private static final List<Class<? extends Annotation>> ANNOTATIONS = 
         new ArrayList<Class<? extends Annotation>>();
     
-        
     static {
         ANNOTATIONS.add(Resource.class);
         ANNOTATIONS.add(Resources.class);
     }
     
+    
     private final ResourceManager resourceManager; 
     private final List<ResourceResolver> resourceResolvers;
 
@@ -71,29 +73,69 @@
         resourceResolvers = resolvers;
     }
     
+    private static Field getField(Class<?> cls, String name) {
+        if (cls == null) {
+            return null;
+        }
+        try {
+            return cls.getDeclaredField(name);
+        } catch (Exception ex) {
+            return getField(cls.getSuperclass(), name);
+        }
+    }
+    
+    public static boolean processable(Class<?> cls, Object o) {
+        if (QName.class.equals(cls)) {
+            return false;
+        }
+        NoJSR250Annotations njsr = cls.getAnnotation(NoJSR250Annotations.class);
+        if (njsr != null) {
+            for (String s : njsr.unlessNull()) {
+                try {
+                    Field f = getField(cls, s);
+                    f.setAccessible(true);
+                    if (f.get(o) == null) {
+                        return true;
+                    }
+                } catch (Exception ex) {
+                    return true;
+                }
+            }
+            return false;
+        }
+        return true;
+    }
     
     public void inject(Object o) {        
         inject(o, o.getClass());
     }
     
-    public void inject(Object o, Class claz) {
-        AnnotationProcessor processor = new AnnotationProcessor(o); 
-        processor.accept(this, claz); 
+    public void inject(Object o, Class<?> claz) {
+        if (processable(claz, o)) {
+            AnnotationProcessor processor = new AnnotationProcessor(o); 
+            processor.accept(this, claz);
+        }
     }
     
     public void construct(Object o) {
         setTarget(o);
-        invokePostConstruct();
+        if (processable(targetClass, o)) {
+            invokePostConstruct();
+        }
     }
     public void construct(Object o, Class<?> cls) {
         setTarget(o, cls);
-        invokePostConstruct();
+        if (processable(targetClass, o)) {
+            invokePostConstruct();
+        }
     }
 
 
     public void destroy(Object o) {
         setTarget(o);
-        invokePreDestroy();
+        if (processable(targetClass, o)) {
+            invokePreDestroy();
+        }
     }
 
 

Modified: cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/SpringBeanMap.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/SpringBeanMap.java?rev=807745&r1=807744&r2=807745&view=diff
==============================================================================
--- cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/SpringBeanMap.java (original)
+++ cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/SpringBeanMap.java Tue Aug 25 18:21:38 2009
@@ -23,6 +23,7 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.apache.cxf.common.injection.NoJSR250Annotations;
 import org.springframework.beans.Mergeable;
 import org.springframework.beans.PropertyValue;
 import org.springframework.beans.factory.BeanIsAbstractException;
@@ -33,6 +34,7 @@
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ConfigurableApplicationContext;
 
+@NoJSR250Annotations
 public class SpringBeanMap<V> 
     extends AbstractSpringBeanMap<String, V> {
 

Modified: cxf/trunk/common/common/src/main/java/org/apache/cxf/resource/ClassLoaderResolver.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/src/main/java/org/apache/cxf/resource/ClassLoaderResolver.java?rev=807745&r1=807744&r2=807745&view=diff
==============================================================================
--- cxf/trunk/common/common/src/main/java/org/apache/cxf/resource/ClassLoaderResolver.java (original)
+++ cxf/trunk/common/common/src/main/java/org/apache/cxf/resource/ClassLoaderResolver.java Tue Aug 25 18:21:38 2009
@@ -20,8 +20,12 @@
 package org.apache.cxf.resource;
 
 import java.io.InputStream;
+
 import java.net.URL;
 
+import org.apache.cxf.common.injection.NoJSR250Annotations;
+
+@NoJSR250Annotations
 public class ClassLoaderResolver implements ResourceResolver {
 
     private final ClassLoader loader; 

Modified: cxf/trunk/common/common/src/main/java/org/apache/cxf/resource/ClasspathResolver.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/src/main/java/org/apache/cxf/resource/ClasspathResolver.java?rev=807745&r1=807744&r2=807745&view=diff
==============================================================================
--- cxf/trunk/common/common/src/main/java/org/apache/cxf/resource/ClasspathResolver.java (original)
+++ cxf/trunk/common/common/src/main/java/org/apache/cxf/resource/ClasspathResolver.java Tue Aug 25 18:21:38 2009
@@ -23,9 +23,12 @@
 import java.io.InputStream;
 import java.net.URL;
 
+import org.apache.cxf.common.injection.NoJSR250Annotations;
+
 /**
  * Resolve resources from the system class path.
  */
+@NoJSR250Annotations
 public class ClasspathResolver implements ResourceResolver {
 
     public <T> T resolve(String resourceName, Class<T> resourceType) { 

Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/CXFBusImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/CXFBusImpl.java?rev=807745&r1=807744&r2=807745&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/CXFBusImpl.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/CXFBusImpl.java Tue Aug 25 18:21:38 2009
@@ -26,9 +26,11 @@
 import org.apache.cxf.Bus;
 import org.apache.cxf.BusFactory;
 import org.apache.cxf.buslifecycle.BusLifeCycleManager;
+import org.apache.cxf.common.injection.NoJSR250Annotations;
 import org.apache.cxf.feature.AbstractFeature;
 import org.apache.cxf.interceptor.AbstractBasicInterceptorProvider;
 
+@NoJSR250Annotations
 public class CXFBusImpl extends AbstractBasicInterceptorProvider implements Bus {    
     
     protected final Map<Class, Object> extensions;

Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/resource/ResourceManagerImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/resource/ResourceManagerImpl.java?rev=807745&r1=807744&r2=807745&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/resource/ResourceManagerImpl.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/resource/ResourceManagerImpl.java Tue Aug 25 18:21:38 2009
@@ -22,10 +22,10 @@
 import java.util.List;
 import java.util.Map;
 
-import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 
 import org.apache.cxf.Bus;
+import org.apache.cxf.common.injection.NoJSR250Annotations;
 import org.apache.cxf.extension.BusExtension;
 import org.apache.cxf.resource.DefaultResourceManager;
 import org.apache.cxf.resource.ObjectTypeResolver;
@@ -33,7 +33,7 @@
 import org.apache.cxf.resource.ResourceManager;
 import org.apache.cxf.resource.ResourceResolver;
 
-
+@NoJSR250Annotations(unlessNull = "bus")
 public class ResourceManagerImpl extends DefaultResourceManager implements BusExtension {
 
     private Bus bus;
@@ -44,6 +44,10 @@
     public ResourceManagerImpl(List<ResourceResolver> r) {
         super(r);
     }
+    public ResourceManagerImpl(Bus b, List<ResourceResolver> r) {
+        super(r);
+        setBus(b);
+    }
 
     public ResourceManagerImpl(Map<String, Object> properties) { 
         super();
@@ -62,14 +66,10 @@
     }
     
     @Resource
-    public void setBus(Bus b) {
+    public final void setBus(Bus b) {
         bus = b;
-    }
-
-    @PostConstruct
-    public void register() {
         super.addResourceResolver(new ObjectTypeResolver(bus));
-        if (null != bus && bus.getExtension(ResourceManager.class) != this) {
+        if (null != bus) {
             bus.setExtension(this, ResourceManager.class);
         }
     }

Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/BusApplicationContextResourceResolver.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/BusApplicationContextResourceResolver.java?rev=807745&r1=807744&r2=807745&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/BusApplicationContextResourceResolver.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/BusApplicationContextResourceResolver.java Tue Aug 25 18:21:38 2009
@@ -22,6 +22,7 @@
 import java.io.InputStream;
 import java.net.URL;
 
+import org.apache.cxf.common.injection.NoJSR250Annotations;
 import org.apache.cxf.resource.ResourceResolver;
 
 import org.springframework.beans.BeansException;
@@ -30,7 +31,7 @@
 import org.springframework.context.ApplicationContextAware;
 import org.springframework.core.io.Resource;
 
-
+@NoJSR250Annotations
 public class BusApplicationContextResourceResolver 
     implements ResourceResolver, ApplicationContextAware {
     

Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/BusExtensionPostProcessor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/BusExtensionPostProcessor.java?rev=807745&r1=807744&r2=807745&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/BusExtensionPostProcessor.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/BusExtensionPostProcessor.java Tue Aug 25 18:21:38 2009
@@ -21,6 +21,7 @@
 
 import org.apache.cxf.Bus;
 import org.apache.cxf.bus.CXFBusImpl;
+import org.apache.cxf.common.injection.NoJSR250Annotations;
 import org.apache.cxf.extension.BusExtension;
 
 import org.springframework.beans.BeansException;
@@ -30,6 +31,7 @@
 import org.springframework.context.ApplicationContextAware;
 import org.springframework.core.Ordered;
 
+@NoJSR250Annotations
 public class BusExtensionPostProcessor implements BeanPostProcessor, ApplicationContextAware, Ordered {
 
     private Bus bus;

Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/Jsr250BeanPostProcessor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/Jsr250BeanPostProcessor.java?rev=807745&r1=807744&r2=807745&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/Jsr250BeanPostProcessor.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/Jsr250BeanPostProcessor.java Tue Aug 25 18:21:38 2009
@@ -19,16 +19,11 @@
 
 package org.apache.cxf.bus.spring;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
 
 
+import org.apache.cxf.Bus;
 import org.apache.cxf.common.injection.ResourceInjector;
-import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.resource.ResourceManager;
-import org.apache.cxf.resource.ResourceResolver;
 import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.config.DestructionAwareBeanPostProcessor;
 import org.springframework.context.ApplicationContext;
@@ -39,12 +34,11 @@
     implements DestructionAwareBeanPostProcessor, Ordered, ApplicationContextAware {
 
     private ResourceManager resourceManager;
-    private List<ResourceResolver> resolvers;
-    
     private ApplicationContext context;
 
     private boolean isProcessing = true;
-    
+    //private int count;
+
     Jsr250BeanPostProcessor() {
     }
     
@@ -63,20 +57,27 @@
         return 1010;
     }
         
+    private boolean injectable(Object bean, String beanId) {
+        return !"cxf".equals(beanId) && ResourceInjector.processable(bean.getClass(), bean);
+    }
+    private ResourceManager getResourceManager(Object bean) {
+        if (resourceManager == null) {
+            if (bean instanceof ResourceManager) {
+                resourceManager = (ResourceManager)bean;
+            } else {
+                Bus b = (Bus)context.getBean("cxf");
+                resourceManager = b.getExtension(ResourceManager.class);
+            }
+        }
+        return resourceManager;
+    }
     public Object postProcessAfterInitialization(Object bean, String beanId) throws BeansException {
         if (!isProcessing) {
             return bean;
         }
-        if (bean != null) {
-            new ResourceInjector(resourceManager, resolvers).construct(bean);
-        }
-        if (bean instanceof ResourceManager) {
-            resourceManager = (ResourceManager)bean;
-
-            Map<String, Object> mp = CastUtils.cast(context.getBeansOfType(ResourceResolver.class));
-            Collection<ResourceResolver> resolvs = CastUtils.cast(mp.values());
-            resolvers = new ArrayList<ResourceResolver>(resourceManager.getResourceResolvers());
-            resolvers.addAll(resolvs);
+        if (bean != null 
+            && injectable(bean, beanId)) {
+            new ResourceInjector(getResourceManager(bean)).construct(bean);
         }
         return bean;
     }
@@ -85,8 +86,10 @@
         if (!isProcessing) {
             return bean;
         }
-        if (bean != null) {
-            new ResourceInjector(resourceManager, resolvers).inject(bean);
+        if (bean != null 
+            && injectable(bean, beanId)) {
+            //System.err.println(++count + ": " + bean.getClass().getName() + " " + beanId);
+            new ResourceInjector(getResourceManager(bean)).inject(bean);
         }
         return bean;
     }
@@ -95,8 +98,9 @@
         if (!isProcessing) {
             return;
         }
-        if (bean != null) {
-            new ResourceInjector(resourceManager, resolvers).destroy(bean);
+        if (bean != null 
+            && injectable(bean, beanId)) {
+            new ResourceInjector(getResourceManager(bean)).destroy(bean);
         }
     }
 

Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/buslifecycle/CXFBusLifeCycleManager.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/buslifecycle/CXFBusLifeCycleManager.java?rev=807745&r1=807744&r2=807745&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/buslifecycle/CXFBusLifeCycleManager.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/buslifecycle/CXFBusLifeCycleManager.java Tue Aug 25 18:21:38 2009
@@ -22,11 +22,12 @@
 import java.util.List;
 import java.util.concurrent.CopyOnWriteArrayList;
 
-import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 
 import org.apache.cxf.Bus;
+import org.apache.cxf.common.injection.NoJSR250Annotations;
 
+@NoJSR250Annotations(unlessNull = "bus")
 public class CXFBusLifeCycleManager implements BusLifeCycleManager {
 
     private final List<BusLifeCycleListener> listeners;
@@ -37,14 +38,14 @@
     public CXFBusLifeCycleManager() {
         listeners = new CopyOnWriteArrayList<BusLifeCycleListener>();
     }
+    public CXFBusLifeCycleManager(Bus b) {
+        listeners = new CopyOnWriteArrayList<BusLifeCycleListener>();
+        setBus(b);
+    }
     
     @Resource
-    public void setBus(Bus b) {
+    public final void setBus(Bus b) {
         bus = b;
-    }
-    
-    @PostConstruct
-    public void register() {
         if (null != bus) {
             bus.setExtension(this, BusLifeCycleManager.class);
         }

Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/catalog/OASISCatalogManager.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/catalog/OASISCatalogManager.java?rev=807745&r1=807744&r2=807745&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/catalog/OASISCatalogManager.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/catalog/OASISCatalogManager.java Tue Aug 25 18:21:38 2009
@@ -31,15 +31,16 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 
 import org.apache.cxf.Bus;
+import org.apache.cxf.common.injection.NoJSR250Annotations;
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.xml.resolver.Catalog;
 import org.apache.xml.resolver.CatalogManager;
 import org.apache.xml.resolver.tools.CatalogResolver;
 
+@NoJSR250Annotations(unlessNull = "bus")
 public class OASISCatalogManager {
     public static final String DEFAULT_CATALOG_NAME = "META-INF/jax-ws-catalog.xml";
     public static final String CATALOG_DEBUG_KEY = "OASISCatalogManager.catalog.debug.level";
@@ -48,7 +49,6 @@
         LogUtils.getL7dLogger(OASISCatalogManager.class);
     private static final String DEBUG_LEVEL = System.getProperty(CATALOG_DEBUG_KEY);
     
-    
 
     private Object resolver;
     private Set<URL> loadedCatalogs = Collections.synchronizedSet(new HashSet<URL>());
@@ -58,6 +58,12 @@
         resolver = getResolver();
     }
     
+    public OASISCatalogManager(Bus b) {
+        bus = b;
+        resolver = getResolver();
+        loadContextCatalogs(DEFAULT_CATALOG_NAME);
+    }
+    
     private static Object getResolver() {
         try {
             CatalogManager catalogManager = new CatalogManager();
@@ -81,25 +87,16 @@
     @Resource
     public void setBus(Bus bus) {
         this.bus = bus;
-    }
-
-    @PostConstruct
-    public void register() {
         if (null != bus) {
             bus.setExtension(this, OASISCatalogManager.class);
         }
         loadContextCatalogs();
     }
 
-    /*
-    public Catalog getCatalog() {
-        return this.resolver;
-    }
-*/
     public void loadContextCatalogs() {
         loadContextCatalogs(DEFAULT_CATALOG_NAME);
     }
-    public void loadContextCatalogs(String name) {
+    public final void loadContextCatalogs(String name) {
         try {
             loadCatalogs(Thread.currentThread().getContextClassLoader(), name);
         } catch (IOException e) {
@@ -107,7 +104,7 @@
         }
     }
 
-    public void loadCatalogs(ClassLoader classLoader, String name) throws IOException {
+    public final void loadCatalogs(ClassLoader classLoader, String name) throws IOException {
         if (classLoader == null || resolver == null) {
             return;
         }
@@ -122,7 +119,7 @@
         }
     }
 
-    public void loadCatalog(URL catalogURL) throws IOException {
+    public final void loadCatalog(URL catalogURL) throws IOException {
         if (!loadedCatalogs.contains(catalogURL) && resolver != null) {
             if ("file".equals(catalogURL.getProtocol())) {
                 try {

Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/configuration/spring/ConfigurerImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/configuration/spring/ConfigurerImpl.java?rev=807745&r1=807744&r2=807745&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/configuration/spring/ConfigurerImpl.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/configuration/spring/ConfigurerImpl.java Tue Aug 25 18:21:38 2009
@@ -32,6 +32,7 @@
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.apache.cxf.common.injection.NoJSR250Annotations;
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.configuration.Configurable;
 import org.apache.cxf.configuration.Configurer;
@@ -47,6 +48,7 @@
 import org.springframework.context.ApplicationContextAware;
 import org.springframework.context.ConfigurableApplicationContext;
 
+@NoJSR250Annotations
 public class ConfigurerImpl extends BeanConfigurerSupport 
     implements Configurer, ApplicationContextAware, BusExtension {
     

Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/EndpointResolverRegistryImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/EndpointResolverRegistryImpl.java?rev=807745&r1=807744&r2=807745&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/EndpointResolverRegistryImpl.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/EndpointResolverRegistryImpl.java Tue Aug 25 18:21:38 2009
@@ -19,10 +19,9 @@
 
 package org.apache.cxf.endpoint;
 
-import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
 
-import javax.annotation.PostConstruct;
 import javax.xml.namespace.QName;
 
 import org.apache.cxf.Bus;
@@ -42,14 +41,21 @@
 public class EndpointResolverRegistryImpl implements EndpointResolverRegistry {
 
     private Bus bus;
-    private List<EndpointResolver> resolvers;
+    private List<EndpointResolver> resolvers 
+        = new CopyOnWriteArrayList<EndpointResolver>();
+    
+    public EndpointResolverRegistryImpl() {
+        
+    }
+    public EndpointResolverRegistryImpl(Bus b) {
+        setBus(b);
+    }
     
     /**
-     * Initialize registry, and expose as Bus extension.
-     */
-    @PostConstruct
-    public void init() {
-        resolvers = new ArrayList<EndpointResolver>();
+     * @param b Bus to encapsulate
+     */ 
+    public final void setBus(Bus b) {
+        bus = b;
         if (bus != null) {
             bus.setExtension(this, EndpointResolverRegistry.class);
         }
@@ -166,10 +172,5 @@
         return resolvers;
     }
     
-    /**
-     * @param b Bus to encapsulate
-     */
-    public void setBus(Bus b) {
-        bus = b;
-    }
+
 }

Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ServerRegistryImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ServerRegistryImpl.java?rev=807745&r1=807744&r2=807745&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ServerRegistryImpl.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ServerRegistryImpl.java Tue Aug 25 18:21:38 2009
@@ -22,14 +22,15 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
 import javax.annotation.Resource;
 
 import org.apache.cxf.Bus;
 import org.apache.cxf.buslifecycle.BusLifeCycleListener;
 import org.apache.cxf.buslifecycle.BusLifeCycleManager;
+import org.apache.cxf.common.injection.NoJSR250Annotations;
 
+@NoJSR250Annotations(unlessNull = "bus")
 public class ServerRegistryImpl implements ServerRegistry, BusLifeCycleListener {
     
     List<Server> serversList;
@@ -39,18 +40,18 @@
     public ServerRegistryImpl() {
         serversList = new ArrayList<Server>();
     }
+    public ServerRegistryImpl(Bus b) {
+        serversList = new ArrayList<Server>();
+        setBus(b);
+    }
 
     public Bus getBus() {
         return bus;
     }
     
     @Resource
-    public void setBus(Bus bus) {        
+    public final void setBus(Bus bus) {        
         this.bus = bus;        
-    }
-    
-    @PostConstruct
-    public void register() {
         if (null != bus) {
             bus.setExtension(this, ServerRegistry.class);
             lifeCycleManager = bus.getExtension(BusLifeCycleManager.class);

Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ServiceContractResolverRegistryImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ServiceContractResolverRegistryImpl.java?rev=807745&r1=807744&r2=807745&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ServiceContractResolverRegistryImpl.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ServiceContractResolverRegistryImpl.java Tue Aug 25 18:21:38 2009
@@ -20,29 +20,40 @@
 package org.apache.cxf.endpoint;
 
 import java.net.URI;
-import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
 
-import javax.annotation.PostConstruct;
 import javax.xml.namespace.QName;
 
 import org.apache.cxf.Bus;
+import org.apache.cxf.common.injection.NoJSR250Annotations;
 
 /**
  * A simple contract resolver registry. It maintains a list of contract resolvers in an
  * <code>ArrayList</code>.
  */
+@NoJSR250Annotations(unlessNull = "bus")
 public class ServiceContractResolverRegistryImpl implements ServiceContractResolverRegistry {
 
     private Bus bus;
-    private List<ServiceContractResolver> resolvers;
+    private List<ServiceContractResolver> resolvers 
+        = new CopyOnWriteArrayList<ServiceContractResolver>();
+
+    public ServiceContractResolverRegistryImpl() {
+        
+    }
+    public ServiceContractResolverRegistryImpl(Bus b) {
+        setBus(b);
+    }
+    
 
     /**
-     * Initialize registry, and register itself on Bus as an extension.
+     * Sets the bus with which the registry is associated.
+     *
+     * @param bus
      */
-    @PostConstruct
-    public void init() {
-        resolvers = new ArrayList<ServiceContractResolver>();
+    public final void setBus(Bus b) {
+        this.bus = b;
         if (bus != null) {
             bus.setExtension(this, ServiceContractResolverRegistry.class);
         }
@@ -94,14 +105,6 @@
         resolvers.remove(resolver);        
     }
 
-    /**
-     * Sets the bus with which the registry is associated.
-     *
-     * @param bus
-     */
-    public void setBus(Bus bus) {
-        this.bus = bus;
-    }
     
     protected List<ServiceContractResolver> getResolvers() {
         return resolvers;

Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/headers/HeaderManagerImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/headers/HeaderManagerImpl.java?rev=807745&r1=807744&r2=807745&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/headers/HeaderManagerImpl.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/headers/HeaderManagerImpl.java Tue Aug 25 18:21:38 2009
@@ -21,26 +21,29 @@
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
-import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 
 import org.apache.cxf.Bus;
+import org.apache.cxf.common.injection.NoJSR250Annotations;
 
+@NoJSR250Annotations(unlessNull = "bus")
 public class HeaderManagerImpl implements HeaderManager {
     Map<String, HeaderProcessor> processors = new ConcurrentHashMap<String, HeaderProcessor>();
     Bus bus;  
     
+    public HeaderManagerImpl() {
+    }
+    public HeaderManagerImpl(Bus b) {
+        setBus(b);
+    }
+    
     public Bus getBus() {
         return bus;
     }
     
     @Resource
-    public void setBus(Bus bus) {        
+    public final void setBus(Bus bus) {        
         this.bus = bus;
-    }
-    
-    @PostConstruct
-    public void register() {
         if (null != bus) {
             bus.setExtension(this, HeaderManager.class);
         }

Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/factory/FactoryBeanListenerManager.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/factory/FactoryBeanListenerManager.java?rev=807745&r1=807744&r2=807745&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/factory/FactoryBeanListenerManager.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/factory/FactoryBeanListenerManager.java Tue Aug 25 18:21:38 2009
@@ -25,10 +25,12 @@
 import javax.annotation.Resource;
 
 import org.apache.cxf.Bus;
+import org.apache.cxf.common.injection.NoJSR250Annotations;
 
 /**
  * 
  */
+@NoJSR250Annotations(unlessNull = "bus")
 public class FactoryBeanListenerManager {
     List<FactoryBeanListener> listeners
         = new CopyOnWriteArrayList<FactoryBeanListener>();
@@ -36,9 +38,13 @@
     public FactoryBeanListenerManager() {
         listeners.add(new AnnotationsFactoryBeanListener());
     }
+    public FactoryBeanListenerManager(Bus b) {
+        this();
+        setBus(b);
+    }
     
     @Resource
-    public void setBus(Bus bus) {
+    public final void setBus(Bus bus) {
         bus.setExtension(this, FactoryBeanListenerManager.class);
     }
     

Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/http/QueryHandlerRegistryImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/http/QueryHandlerRegistryImpl.java?rev=807745&r1=807744&r2=807745&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/http/QueryHandlerRegistryImpl.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/http/QueryHandlerRegistryImpl.java Tue Aug 25 18:21:38 2009
@@ -22,13 +22,14 @@
 import java.util.List;
 import java.util.concurrent.CopyOnWriteArrayList;
 
-import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 
 import org.apache.cxf.Bus;
+import org.apache.cxf.common.injection.NoJSR250Annotations;
 import org.apache.cxf.transports.http.QueryHandler;
 import org.apache.cxf.transports.http.QueryHandlerRegistry;
 
+@NoJSR250Annotations(unlessNull = "bus")
 public class QueryHandlerRegistryImpl implements QueryHandlerRegistry {
     
     List<QueryHandler> queryHandlers;
@@ -39,16 +40,20 @@
     }
     
     public QueryHandlerRegistryImpl(Bus b, List<QueryHandler> handlers) {
-        bus = b;
         queryHandlers = new CopyOnWriteArrayList<QueryHandler>(handlers);
+        setBus(b);
     }
     
     public void setQueryHandlers(List<QueryHandler> handlers) {
         this.queryHandlers = new CopyOnWriteArrayList<QueryHandler>(handlers);
     }
-
-    @PostConstruct
-    public void register() {
+    
+    public Bus getBus() {
+        return bus;
+    }
+    @Resource
+    public final void setBus(Bus b) {
+        bus = b;
         if (queryHandlers == null) {
             queryHandlers = new CopyOnWriteArrayList<QueryHandler>();
             if (bus != null) {
@@ -73,15 +78,7 @@
     public void registerHandler(QueryHandler handler, int position) {
         queryHandlers.add(position, handler);
     }
-    
-    @Resource
-    public void setBus(Bus b) {
-        bus = b;
-    }
 
-    public Bus getBus() {
-        return bus;
-    }
 
 }
 

Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/http/WSDLQueryHandler.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/http/WSDLQueryHandler.java?rev=807745&r1=807744&r2=807745&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/http/WSDLQueryHandler.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/http/WSDLQueryHandler.java Tue Aug 25 18:21:38 2009
@@ -51,6 +51,7 @@
 import org.apache.cxf.Bus;
 import org.apache.cxf.catalog.OASISCatalogManager;
 import org.apache.cxf.common.i18n.Message;
+import org.apache.cxf.common.injection.NoJSR250Annotations;
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.helpers.DOMUtils;
@@ -63,6 +64,7 @@
 import org.apache.cxf.wsdl11.ServiceWSDLBuilder;
 
 
+@NoJSR250Annotations
 public class WSDLQueryHandler implements StemMatchingQueryHandler {
     private static final Logger LOG = LogUtils.getL7dLogger(WSDLQueryHandler.class, "QueryMessages");
     private Bus bus;

Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/workqueue/WorkQueueManagerImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/workqueue/WorkQueueManagerImpl.java?rev=807745&r1=807744&r2=807745&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/workqueue/WorkQueueManagerImpl.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/workqueue/WorkQueueManagerImpl.java Tue Aug 25 18:21:38 2009
@@ -24,14 +24,15 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 import javax.management.JMException;
 
 import org.apache.cxf.Bus;
+import org.apache.cxf.common.injection.NoJSR250Annotations;
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.management.InstrumentationManager;
 
+@NoJSR250Annotations(unlessNull = "bus")
 public class WorkQueueManagerImpl implements WorkQueueManager {
 
     private static final Logger LOG =
@@ -42,17 +43,20 @@
     boolean inShutdown;
     Bus bus;  
     
+    public WorkQueueManagerImpl() {
+        
+    }
+    public WorkQueueManagerImpl(Bus b) {
+        setBus(b);
+    }
+    
     public Bus getBus() {
         return bus;
     }
     
     @Resource
-    public void setBus(Bus bus) {        
+    public final void setBus(Bus bus) {        
         this.bus = bus;
-    }
-    
-    @PostConstruct
-    public void register() {
         if (null != bus) {
             bus.setExtension(this, WorkQueueManager.class);
             InstrumentationManager manager = bus.getExtension(InstrumentationManager.class);

Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLManagerImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLManagerImpl.java?rev=807745&r1=807744&r2=807745&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLManagerImpl.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLManagerImpl.java Tue Aug 25 18:21:38 2009
@@ -31,7 +31,6 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 import javax.wsdl.Definition;
 import javax.wsdl.Types;
@@ -52,6 +51,7 @@
 import org.apache.cxf.BusException;
 import org.apache.cxf.catalog.CatalogWSDLLocator;
 import org.apache.cxf.common.WSDLConstants;
+import org.apache.cxf.common.injection.NoJSR250Annotations;
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.common.util.CacheMap;
 import org.apache.cxf.common.util.PropertiesLoaderUtils;
@@ -64,6 +64,7 @@
  * 
  * @author dkulp
  */
+@NoJSR250Annotations(unlessNull = "bus")
 public class WSDLManagerImpl implements WSDLManager {
 
     private static final Logger LOG = LogUtils.getL7dLogger(WSDLManagerImpl.class);
@@ -108,14 +109,14 @@
 
         registerInitialExtensions();
     }
+    public WSDLManagerImpl(Bus b) throws BusException {
+        this();
+        bus = b;
+    }
     
     @Resource
     public void setBus(Bus b) {
         bus = b;
-    }
-    
-    @PostConstruct
-    public void register() {
         if (null != bus) {
             bus.setExtension(this, WSDLManager.class);
         }

Modified: cxf/trunk/rt/core/src/main/resources/META-INF/cxf/cxf.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/resources/META-INF/cxf/cxf.xml?rev=807745&r1=807744&r2=807745&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/resources/META-INF/cxf/cxf.xml (original)
+++ cxf/trunk/rt/core/src/main/resources/META-INF/cxf/cxf.xml Tue Aug 25 18:21:38 2009
@@ -34,21 +34,26 @@
     <bean id="org.apache.cxf.bus.spring.Jsr250BeanPostProcessor" class="org.apache.cxf.bus.spring.Jsr250BeanPostProcessor"/>    
     <bean id="org.apache.cxf.bus.spring.BusExtensionPostProcessor" class="org.apache.cxf.bus.spring.BusExtensionPostProcessor"/>
     
-    <bean id="org.apache.cxf.resource.ResourceManager" class="org.apache.cxf.bus.resource.ResourceManagerImpl">
-       <property name="resolvers">
+    <bean id="org.apache.cxf.resource.ResourceManager" 
+    	class="org.apache.cxf.bus.resource.ResourceManagerImpl" 
+    	lazy-init="true">
+    	<constructor-arg ref="cxf"/>
+       	<constructor-arg>
             <list>
                 <bean class="org.apache.cxf.resource.ClasspathResolver"/>
                 <bean class="org.apache.cxf.resource.ClassLoaderResolver"/>
                 <bean class="org.apache.cxf.bus.spring.BusApplicationContextResourceResolver"/>
             </list>
-       </property>
-       <property name="bus" ref="cxf"/>
+       </constructor-arg>
     </bean>
+
     <bean id="org.apache.cxf.configuration.Configurer" 
-    	class="org.apache.cxf.configuration.spring.ConfigurerImpl">
-    </bean>    
+    	class="org.apache.cxf.configuration.spring.ConfigurerImpl" 
+    	lazy-init="true"/>
         
-    <bean id="org.apache.cxf.binding.BindingFactoryManager" class="org.apache.cxf.binding.BindingFactoryManagerImpl">
+    <bean id="org.apache.cxf.binding.BindingFactoryManager"
+     	class="org.apache.cxf.binding.BindingFactoryManagerImpl"
+     	lazy-init="true">
         <property name="mapProvider">
             <bean class="org.apache.cxf.configuration.spring.SpringBeanMap">
               <property name="type" value="org.apache.cxf.binding.BindingFactory"/>
@@ -58,7 +63,9 @@
         <property name="bus" ref="cxf"/>
     </bean>
     
-    <bean id="org.apache.cxf.transport.DestinationFactoryManager" class="org.apache.cxf.transport.DestinationFactoryManagerImpl">
+    <bean id="org.apache.cxf.transport.DestinationFactoryManager"
+    	class="org.apache.cxf.transport.DestinationFactoryManagerImpl"
+    	lazy-init="true">
         <property name="mapProvider">
             <bean class="org.apache.cxf.configuration.spring.SpringBeanMap">
               <property name="type" value="org.apache.cxf.transport.DestinationFactory"/>
@@ -68,7 +75,9 @@
         <property name="bus" ref="cxf"/>
     </bean>
     
-    <bean id="org.apache.cxf.transport.ConduitInitiatorManager" class="org.apache.cxf.transport.ConduitInitiatorManagerImpl">
+    <bean id="org.apache.cxf.transport.ConduitInitiatorManager" 
+    	class="org.apache.cxf.transport.ConduitInitiatorManagerImpl"
+    	lazy-init="true">
         <property name="mapProvider">
             <bean class="org.apache.cxf.configuration.spring.SpringBeanMap">
               <property name="type" value="org.apache.cxf.transport.ConduitInitiator"/>
@@ -78,54 +87,79 @@
         <property name="bus" ref="cxf"/>
     </bean>
     
-    <bean id="org.apache.cxf.wsdl.WSDLManager" class="org.apache.cxf.wsdl11.WSDLManagerImpl">
-        <property name="bus" ref="cxf"/>
+    <bean id="org.apache.cxf.wsdl.WSDLManager" 
+    	class="org.apache.cxf.wsdl11.WSDLManagerImpl" 
+    	lazy-init="true">
+        <constructor-arg ref="cxf"/>
     </bean>
     
-    <bean id="org.apache.cxf.phase.PhaseManager" class="org.apache.cxf.phase.PhaseManagerImpl">
-        
-    </bean>
+    <bean id="org.apache.cxf.phase.PhaseManager" 
+    	class="org.apache.cxf.phase.PhaseManagerImpl" 
+    	lazy-init="true"/>
     
-    <bean id="org.apache.cxf.workqueue.WorkQueueManager" class="org.apache.cxf.workqueue.WorkQueueManagerImpl">
-        <property name="bus" ref="cxf"/>
+    <bean id="org.apache.cxf.workqueue.WorkQueueManager" 
+    	class="org.apache.cxf.workqueue.WorkQueueManagerImpl"
+		lazy-init="true">
+        <constructor-arg ref="cxf"/>
     </bean>
     
-    <bean id="org.apache.cxf.buslifecycle.BusLifeCycleManager" class="org.apache.cxf.buslifecycle.CXFBusLifeCycleManager">
-        <property name="bus" ref="cxf"/>
+    <bean id="org.apache.cxf.buslifecycle.BusLifeCycleManager" 
+    	class="org.apache.cxf.buslifecycle.CXFBusLifeCycleManager"
+    	lazy-init="true">
+        <constructor-arg ref="cxf"/>
     </bean>
     
-    <bean id="org.apache.cxf.endpoint.ServerRegistry" class="org.apache.cxf.endpoint.ServerRegistryImpl">
-        <property name="bus" ref="cxf"/>
+    <bean id="org.apache.cxf.endpoint.ServerRegistry" 
+    	class="org.apache.cxf.endpoint.ServerRegistryImpl"
+    	lazy-init="true">
+        <constructor-arg ref="cxf"/>
     </bean>
 
-    <bean id="org.apache.cxf.endpoint.ServerLifeCycleManager" class="org.apache.cxf.endpoint.ServerLifeCycleManagerImpl"/>
-    <bean id="org.apache.cxf.endpoint.ClientLifeCycleManager" class="org.apache.cxf.endpoint.ClientLifeCycleManagerImpl"/>
+    <bean id="org.apache.cxf.endpoint.ServerLifeCycleManager"
+    	class="org.apache.cxf.endpoint.ServerLifeCycleManagerImpl"
+    	lazy-init="true"/>
+    <bean id="org.apache.cxf.endpoint.ClientLifeCycleManager"
+    	class="org.apache.cxf.endpoint.ClientLifeCycleManagerImpl"
+    	lazy-init="true"/>
         
 
-    <bean id="org.apache.cxf.transports.http.QueryHandlerRegistry" class="org.apache.cxf.transport.http.QueryHandlerRegistryImpl">
-        <property name="bus" ref="cxf"/>
-        <property name="queryHandlers">
+    <bean id="org.apache.cxf.transports.http.QueryHandlerRegistry" 
+    	class="org.apache.cxf.transport.http.QueryHandlerRegistryImpl"
+    	lazy-init="true">
+        <constructor-arg ref="cxf"/>
+        <constructor-arg>
         	<list>
         		<bean class="org.apache.cxf.transport.http.WSDLQueryHandler">
-			        <property name="bus" ref="cxf"/>
+			        <constructor-arg ref="cxf"/>
         		</bean>	
         	</list>
-        </property>
+        </constructor-arg>
     </bean>
 
-    <bean id="org.apache.cxf.endpoint.EndpointResolverRegistry" class="org.apache.cxf.endpoint.EndpointResolverRegistryImpl">
-        <property name="bus" ref="cxf"/>
-    </bean>
-    <bean id="org.apache.cxf.headers.HeaderManager" class="org.apache.cxf.headers.HeaderManagerImpl">
-        <property name="bus" ref="cxf"/>
-    </bean>
-    <bean id="org.apache.cxf.catalog.OASISCatalogManager" class="org.apache.cxf.catalog.OASISCatalogManager">
-        <property name="bus" ref="cxf"/>
-    </bean>
-    <bean id="org.apache.cxf.service.factory.FactoryBeanListenerManager" class="org.apache.cxf.service.factory.FactoryBeanListenerManager">
-        <property name="bus" ref="cxf"/>
-    </bean>
-    <bean id="org.apache.cxf.endpoint.ServiceContractResolverRegistry" class="org.apache.cxf.endpoint.ServiceContractResolverRegistryImpl">
-        <property name="bus" ref="cxf"/>
+    <bean id="org.apache.cxf.endpoint.EndpointResolverRegistry" 
+    	class="org.apache.cxf.endpoint.EndpointResolverRegistryImpl"
+    	lazy-init="true">
+        <constructor-arg ref="cxf"/>
+    </bean>
+    <bean id="org.apache.cxf.headers.HeaderManager" 
+    	class="org.apache.cxf.headers.HeaderManagerImpl"
+    	lazy-init="true">
+        <constructor-arg ref="cxf"/>
+    </bean>
+    <bean id="org.apache.cxf.catalog.OASISCatalogManager" 
+    	class="org.apache.cxf.catalog.OASISCatalogManager"  
+    	lazy-init="true">
+        <constructor-arg ref="cxf"/>
+    </bean>
+    <bean id="org.apache.cxf.service.factory.FactoryBeanListenerManager"
+    	class="org.apache.cxf.service.factory.FactoryBeanListenerManager"
+    	lazy-init="true">
+        <constructor-arg ref="cxf"/>
+    </bean>
+    
+    <bean id="org.apache.cxf.endpoint.ServiceContractResolverRegistry" 
+    	class="org.apache.cxf.endpoint.ServiceContractResolverRegistryImpl"
+    	lazy-init="true">
+        <constructor-arg ref="cxf"/>
     </bean>
 </beans>

Modified: cxf/trunk/rt/core/src/test/java/org/apache/cxf/endpoint/EndpointResolverRegistryImplTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/test/java/org/apache/cxf/endpoint/EndpointResolverRegistryImplTest.java?rev=807745&r1=807744&r2=807745&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/test/java/org/apache/cxf/endpoint/EndpointResolverRegistryImplTest.java (original)
+++ cxf/trunk/rt/core/src/test/java/org/apache/cxf/endpoint/EndpointResolverRegistryImplTest.java Tue Aug 25 18:21:38 2009
@@ -21,7 +21,6 @@
 
 import javax.xml.namespace.QName;
 
-import org.apache.cxf.Bus;
 import org.apache.cxf.ws.addressing.EndpointReferenceType;
 import org.easymock.classextension.EasyMock;
 import org.easymock.classextension.IMocksControl;
@@ -64,22 +63,7 @@
     }
 
     @Test
-    public void testInit() {
-        assertNull("unexpected resolvers list", registry.getResolvers());
-        Bus bus = control.createMock(Bus.class);
-        registry.setBus(bus);
-        bus.setExtension(registry, EndpointResolverRegistry.class);
-        control.replay();
-        
-        registry.init();
-        
-        assertNotNull("expected resolvers list", registry.getResolvers());
-        control.verify();
-    }
-    
-    @Test
     public void testRegister() {
-        registry.init();
         assertEquals("unexpected resolver count",
                      0,
                      registry.getResolvers().size());
@@ -124,7 +108,6 @@
     
     @Test
     public void testResolve() {
-        registry.init();
         registry.register(resolver1);
         registry.register(resolver2);
         resolver1.resolve(logical);
@@ -163,7 +146,6 @@
     
     @Test
     public void testRenew() {
-        registry.init();
         registry.register(resolver1);
         registry.register(resolver2);
         resolver1.renew(logical, physical);
@@ -202,7 +184,6 @@
     
     @Test
     public void testMintFromServiceName() {
-        registry.init();
         registry.register(resolver1);
         registry.register(resolver2);
         resolver1.mint(serviceName);
@@ -241,7 +222,6 @@
     
     @Test
     public void testMintFromPhysical() {
-        registry.init();
         registry.register(resolver1);
         registry.register(resolver2);
         resolver1.mint(physical);

Modified: cxf/trunk/rt/core/src/test/java/org/apache/cxf/endpoint/ServiceContractResolverRegistryImplTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/test/java/org/apache/cxf/endpoint/ServiceContractResolverRegistryImplTest.java?rev=807745&r1=807744&r2=807745&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/test/java/org/apache/cxf/endpoint/ServiceContractResolverRegistryImplTest.java (original)
+++ cxf/trunk/rt/core/src/test/java/org/apache/cxf/endpoint/ServiceContractResolverRegistryImplTest.java Tue Aug 25 18:21:38 2009
@@ -24,7 +24,6 @@
 
 import javax.xml.namespace.QName;
 
-import org.apache.cxf.Bus;
 import org.easymock.classextension.EasyMock;
 import org.easymock.classextension.IMocksControl;
 import org.junit.After;
@@ -60,22 +59,7 @@
     }
     
     @Test
-    public void testInit() {
-        assertNull("unexpected resolvers list", registry.getResolvers());
-        Bus bus = control.createMock(Bus.class);
-        registry.setBus(bus);
-        bus.setExtension(registry, ServiceContractResolverRegistry.class);
-        control.replay();
-        
-        registry.init();
-        
-        assertNotNull("expected resolvers list", registry.getResolvers());
-        control.verify();
-    }
-
-    @Test
     public void testRegister() {
-        registry.init();
         assertEquals("unexpected resolver count",
                      0,
                      registry.getResolvers().size());
@@ -120,7 +104,6 @@
     
     @Test
     public void testGetContactLocation() {
-        registry.init();
         registry.register(resolver1);
         registry.register(resolver2);
         resolver1.getContractLocation(serviceName);

Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/resolver/JarResolverTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/resolver/JarResolverTest.java?rev=807745&r1=807744&r2=807745&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/resolver/JarResolverTest.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/resolver/JarResolverTest.java Tue Aug 25 18:21:38 2009
@@ -52,7 +52,6 @@
         ServiceContractResolverRegistryImpl registry = 
             new ServiceContractResolverRegistryImpl();
         registry.setBus(bus);
-        registry.init();
         assertNotNull(bus.getExtension(ServiceContractResolverRegistry.class));
 
         JarServiceContractResolver resolver = new JarServiceContractResolver();