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 2007/10/17 22:42:31 UTC

svn commit: r585682 - in /incubator/cxf/branches/2.0.x-fixes: ./ common/common/src/main/java/org/apache/cxf/common/annotation/ common/common/src/main/java/org/apache/cxf/common/injection/ common/common/src/main/java/org/apache/cxf/resource/ common/comm...

Author: dkulp
Date: Wed Oct 17 13:42:30 2007
New Revision: 585682

URL: http://svn.apache.org/viewvc?rev=585682&view=rev
Log:
Merged revisions 585633 via svnmerge from 
https://svn.apache.org/repos/asf/incubator/cxf/trunk

........
  r585633 | dkulp | 2007-10-17 15:06:58 -0400 (Wed, 17 Oct 2007) | 4 lines
  
  Fix injection when Spring AOP is used by allowing the Spring BeanPostProcessor to do the injection.
  Change QueryHandlerRegistryImpl to be configured/created via spring
........

Added:
    incubator/cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/resources/META-INF/cxf/cxf-extension-jaxws.xml
      - copied unchanged from r585633, incubator/cxf/trunk/rt/frontend/jaxws/src/main/resources/META-INF/cxf/cxf-extension-jaxws.xml
    incubator/cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/resources/META-INF/cxf/cxf.extension
      - copied unchanged from r585633, incubator/cxf/trunk/rt/frontend/jaxws/src/main/resources/META-INF/cxf/cxf.extension
Modified:
    incubator/cxf/branches/2.0.x-fixes/   (props changed)
    incubator/cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/common/annotation/AbstractAnnotationVisitor.java
    incubator/cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/common/injection/ResourceInjector.java
    incubator/cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/resource/DefaultResourceManager.java
    incubator/cxf/branches/2.0.x-fixes/common/common/src/test/java/org/apache/cxf/common/injection/ResourceInjectorTest.java
    incubator/cxf/branches/2.0.x-fixes/rt/core/src/main/java/org/apache/cxf/bus/extension/ExtensionManagerImpl.java
    incubator/cxf/branches/2.0.x-fixes/rt/core/src/main/java/org/apache/cxf/bus/spring/Jsr250BeanPostProcessor.java
    incubator/cxf/branches/2.0.x-fixes/rt/core/src/main/java/org/apache/cxf/transport/http/QueryHandlerRegistryImpl.java
    incubator/cxf/branches/2.0.x-fixes/rt/core/src/main/resources/META-INF/cxf/cxf.xml
    incubator/cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsServerFactoryBean.java
    incubator/cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/HandlerChainBuilder.java
    incubator/cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/HandlerResolverImpl.java

Propchange: incubator/cxf/branches/2.0.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: incubator/cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/common/annotation/AbstractAnnotationVisitor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/common/annotation/AbstractAnnotationVisitor.java?rev=585682&r1=585681&r2=585682&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/common/annotation/AbstractAnnotationVisitor.java (original)
+++ incubator/cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/common/annotation/AbstractAnnotationVisitor.java Wed Oct 17 13:42:30 2007
@@ -26,7 +26,9 @@
 import java.util.List;
 
 public abstract class AbstractAnnotationVisitor implements AnnotationVisitor {
-    protected Object target; 
+    protected Object target;
+    protected Class<?> targetClass;
+    
 
     private final List<Class<? extends Annotation>> targetAnnotations = 
                                  new ArrayList<Class<? extends Annotation>>(); 
@@ -62,10 +64,18 @@
 
     public void setTarget(Object object) {
         target = object;
+        targetClass = object.getClass();
+    }
+    public void setTarget(Object object, Class<?> cls) {
+        target = object;
+        targetClass = cls;
     }
     
     public Object getTarget() { 
         return target;
+    } 
+    public Class<?> getTargetClass() { 
+        return targetClass;
     } 
 
 }

Modified: incubator/cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/common/injection/ResourceInjector.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/common/injection/ResourceInjector.java?rev=585682&r1=585681&r2=585682&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/common/injection/ResourceInjector.java (original)
+++ incubator/cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/common/injection/ResourceInjector.java Wed Oct 17 13:42:30 2007
@@ -79,13 +79,16 @@
     public void inject(Object o, Class claz) {
         AnnotationProcessor processor = new AnnotationProcessor(o); 
         processor.accept(this, claz); 
-        invokePostConstruct();
     }
     
     public void construct(Object o) {
         setTarget(o);
         invokePostConstruct();
     }
+    public void construct(Object o, Class<?> cls) {
+        setTarget(o, cls);
+        invokePostConstruct();
+    }
 
 
     public void destroy(Object o) {
@@ -345,6 +348,10 @@
         Collection<Method> methods = new LinkedList<Method>(); 
         addAnnotatedMethods(acls, getTarget().getClass().getMethods(), methods); 
         addAnnotatedMethods(acls, getTarget().getClass().getDeclaredMethods(), methods);
+        if (getTargetClass() != getTarget().getClass()) {
+            addAnnotatedMethods(acls, getTargetClass().getMethods(), methods); 
+            addAnnotatedMethods(acls, getTargetClass().getDeclaredMethods(), methods);            
+        }
         return methods;
     } 
 
@@ -388,6 +395,9 @@
     }
 
     private Object resolveResource(String resourceName, Class<?> type) {
+        if (resourceManager == null) {
+            return null;
+        }
         return resourceManager.resolveResource(resourceName, type, resourceResolvers);
     }
         

Modified: incubator/cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/resource/DefaultResourceManager.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/resource/DefaultResourceManager.java?rev=585682&r1=585681&r2=585682&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/resource/DefaultResourceManager.java (original)
+++ incubator/cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/resource/DefaultResourceManager.java Wed Oct 17 13:42:30 2007
@@ -81,6 +81,9 @@
     
     private <T> T findResource(String name, Class<T> type, boolean asStream, 
                                List<ResourceResolver> resolvers) {
+        if (resolvers == null) {
+            resolvers = registeredResolvers;
+        }
         
         if (LOG.isLoggable(Level.FINE)) { 
             LOG.fine("resolving resource <" + name + ">" + (asStream ? " as stream "  

Modified: incubator/cxf/branches/2.0.x-fixes/common/common/src/test/java/org/apache/cxf/common/injection/ResourceInjectorTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/common/common/src/test/java/org/apache/cxf/common/injection/ResourceInjectorTest.java?rev=585682&r1=585681&r2=585682&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/common/common/src/test/java/org/apache/cxf/common/injection/ResourceInjectorTest.java (original)
+++ incubator/cxf/branches/2.0.x-fixes/common/common/src/test/java/org/apache/cxf/common/injection/ResourceInjectorTest.java Wed Oct 17 13:42:30 2007
@@ -139,6 +139,7 @@
     private void doInjectTest(Target target, Class<?> clazz) {
 
         injector.inject(target, clazz);
+        injector.construct(target);
         assertNotNull(target.getResource1()); 
         assertEquals(RESOURCE_ONE, target.getResource1()); 
 

Modified: incubator/cxf/branches/2.0.x-fixes/rt/core/src/main/java/org/apache/cxf/bus/extension/ExtensionManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/rt/core/src/main/java/org/apache/cxf/bus/extension/ExtensionManagerImpl.java?rev=585682&r1=585681&r2=585682&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/rt/core/src/main/java/org/apache/cxf/bus/extension/ExtensionManagerImpl.java (original)
+++ incubator/cxf/branches/2.0.x-fixes/rt/core/src/main/java/org/apache/cxf/bus/extension/ExtensionManagerImpl.java Wed Oct 17 13:42:30 2007
@@ -157,6 +157,7 @@
         
         try {
             injector.inject(obj);
+            injector.construct(obj);
         } finally {
             if (null != namespacesResolver) {
                 resourceManager.removeResourceResolver(namespacesResolver);

Modified: incubator/cxf/branches/2.0.x-fixes/rt/core/src/main/java/org/apache/cxf/bus/spring/Jsr250BeanPostProcessor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/rt/core/src/main/java/org/apache/cxf/bus/spring/Jsr250BeanPostProcessor.java?rev=585682&r1=585681&r2=585682&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/rt/core/src/main/java/org/apache/cxf/bus/spring/Jsr250BeanPostProcessor.java (original)
+++ incubator/cxf/branches/2.0.x-fixes/rt/core/src/main/java/org/apache/cxf/bus/spring/Jsr250BeanPostProcessor.java Wed Oct 17 13:42:30 2007
@@ -19,30 +19,59 @@
 
 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.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;
+import org.springframework.context.ApplicationContextAware;
 import org.springframework.core.Ordered;
 
-public class Jsr250BeanPostProcessor implements DestructionAwareBeanPostProcessor, Ordered {
+public class Jsr250BeanPostProcessor 
+    implements DestructionAwareBeanPostProcessor, Ordered, ApplicationContextAware {
 
     private ResourceInjector injector;
-    
+    private ApplicationContext context;
+
     Jsr250BeanPostProcessor() {
         injector = new ResourceInjector(null, null); 
     }
-
+    
+    public void setApplicationContext(ApplicationContext arg0) throws BeansException {
+        context = arg0;    
+    }
+    
     public int getOrder() {
-        return 1002;
+        return 1010;
     }
         
     public Object postProcessAfterInitialization(Object bean, String beanId) throws BeansException {
+        if (bean != null
+            && injector != null) {
+            injector.construct(bean);
+        }
+        if (bean instanceof ResourceManager) {
+            ResourceManager rm = (ResourceManager)bean;
+
+            Map<String, Object> mp = CastUtils.cast(context.getBeansOfType(ResourceResolver.class));
+            Collection<ResourceResolver> resolvs = CastUtils.cast(mp.values());
+            List<ResourceResolver> resolvers = new ArrayList<ResourceResolver>(rm.getResourceResolvers());
+            resolvers.addAll(resolvs);
+            injector = new ResourceInjector(rm, resolvers);
+        }
         return bean;
     }
 
     public Object postProcessBeforeInitialization(Object bean, String beanId) throws BeansException {
-        if (bean != null) {
-            injector.construct(bean);
+        if (bean != null && injector != null) {
+            injector.inject(bean);
         }
         return bean;
     }

Modified: incubator/cxf/branches/2.0.x-fixes/rt/core/src/main/java/org/apache/cxf/transport/http/QueryHandlerRegistryImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/rt/core/src/main/java/org/apache/cxf/transport/http/QueryHandlerRegistryImpl.java?rev=585682&r1=585681&r2=585682&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/rt/core/src/main/java/org/apache/cxf/transport/http/QueryHandlerRegistryImpl.java (original)
+++ incubator/cxf/branches/2.0.x-fixes/rt/core/src/main/java/org/apache/cxf/transport/http/QueryHandlerRegistryImpl.java Wed Oct 17 13:42:30 2007
@@ -19,8 +19,8 @@
 
 package org.apache.cxf.transport.http;
 
-import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
@@ -34,19 +34,27 @@
     List<QueryHandler> queryHandlers;
     Bus bus;
     
+    
+    public QueryHandlerRegistryImpl() {
+    }
+    public QueryHandlerRegistryImpl(Bus b, List<QueryHandler> handlers) {
+        bus = b;
+        queryHandlers = new CopyOnWriteArrayList<QueryHandler>(handlers);
+    }
+    
+    
     @PostConstruct
     public void register() {
+        if (queryHandlers == null) {
+            queryHandlers = new CopyOnWriteArrayList<QueryHandler>();
+            if (bus != null) {
+                queryHandlers.add(new WSDLQueryHandler(bus));
+            }
+        }
         if (null != bus) {
             bus.setExtension(this, QueryHandlerRegistry.class);
         }
     }
-    
-    @PostConstruct
-    public void init() {
-        queryHandlers = new ArrayList<QueryHandler>();
-        registerHandler(new WSDLQueryHandler(bus));
-    }
-
 
     public List<QueryHandler> getHandlers() {
         return queryHandlers;

Modified: incubator/cxf/branches/2.0.x-fixes/rt/core/src/main/resources/META-INF/cxf/cxf.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/rt/core/src/main/resources/META-INF/cxf/cxf.xml?rev=585682&r1=585681&r2=585682&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/rt/core/src/main/resources/META-INF/cxf/cxf.xml (original)
+++ incubator/cxf/branches/2.0.x-fixes/rt/core/src/main/resources/META-INF/cxf/cxf.xml Wed Oct 17 13:42:30 2007
@@ -96,7 +96,14 @@
         
 
     <bean id="org.apache.cxf.transports.http.QueryHandlerRegistry" class="org.apache.cxf.transport.http.QueryHandlerRegistryImpl">
-        <property name="bus" ref="cxf"/>
+        <constructor-arg ref="cxf"/>
+        <constructor-arg>
+        	<list>
+        		<bean class="org.apache.cxf.transport.http.WSDLQueryHandler">
+			        <constructor-arg ref="cxf"/>
+        		</bean>	
+        	</list>
+        </constructor-arg>
     </bean>
 
     <bean id="org.apache.cxf.endpoint.EndpointResolverRegistry" class="org.apache.cxf.endpoint.EndpointResolverRegistryImpl">

Modified: incubator/cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsServerFactoryBean.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsServerFactoryBean.java?rev=585682&r1=585681&r2=585682&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsServerFactoryBean.java (original)
+++ incubator/cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsServerFactoryBean.java Wed Oct 17 13:42:30 2007
@@ -199,8 +199,10 @@
             ResourceInjector injector = new ResourceInjector(resourceManager);
             if (Proxy.isProxyClass(instance.getClass()) && getServiceClass() != null) {
                 injector.inject(instance, getServiceClass());
+                injector.construct(instance, getServiceClass());
             } else {
                 injector.inject(instance);
+                injector.construct(instance);
             }
         }
     }  

Modified: incubator/cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/HandlerChainBuilder.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/HandlerChainBuilder.java?rev=585682&r1=585681&r2=585682&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/HandlerChainBuilder.java (original)
+++ incubator/cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/HandlerChainBuilder.java Wed Oct 17 13:42:30 2007
@@ -179,6 +179,7 @@
             resolvers.add(new InitParamResourceResolver(params));
             ResourceInjector resInj = new ResourceInjector(resMgr, resolvers);
             resInj.inject(handler);
+            resInj.construct(handler);
         }
     }
 

Modified: incubator/cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/HandlerResolverImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/HandlerResolverImpl.java?rev=585682&r1=585681&r2=585682&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/HandlerResolverImpl.java (original)
+++ incubator/cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/HandlerResolverImpl.java Wed Oct 17 13:42:30 2007
@@ -108,6 +108,7 @@
 //            resourceManager.addResourceResolver(new WebContextEntriesResourceResolver());
             ResourceInjector injector = new ResourceInjector(resourceManager);
             injector.inject(handler);
+            injector.construct(handler);
         }
 
     }