Hi Dan, I will do a quick fix for that , if the instance is a object of proxy , I will pass the service class as the target class. So we can keep the JaxWsServerFactory not touching any spring stuff.
Willem. Willem2 wrote: > > Hi Dan, > > The jaxws frond end already has the spring jar dependency. > Do we really need to create a sub jaxws module which contains all the > spring stuff ? > If so we need do the same thing in the simple front end. > > Willem. > > > dkulp wrote: >> >> >> >> This commit makes using jaxws 100% dependent on having the Spring jars. >> Thus, I'm -1 on this. The Spring stuff must be localized to the >> spring subpackage and the rest needs to work without spring. >> >> Dan >> >> >> >> >> On Thursday 04 October 2007, [EMAIL PROTECTED] wrote: >>> Author: ningjiang >>> Date: Wed Oct 3 22:42:29 2007 >>> New Revision: 581781 >>> >>> URL: http://svn.apache.org/viewvc?rev=581781&view=rev >>> Log: >>> CXF-1074 using the spring's AOPUtils.getTargetClass() as the resource >>> injector target class. >>> >>> Modified: >>> >>> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/ >>>annotation/AnnotationProcessor.java >>> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/ >>>injection/ResourceInjector.java >>> incubator/cxf/trunk/common/common/src/test/java/org/apache/cxf/common/ >>>injection/ResourceInjectorTest.java >>> incubator/cxf/trunk/rt/frontend/jaxws/pom.xml >>> >>> incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jax >>>ws/JaxWsServerFactoryBean.java >>> >>> Modified: >>> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/ >>>annotation/AnnotationProcessor.java URL: >>> http://svn.apache.org/viewvc/incubator/cxf/trunk/common/common/src/mai >>>n/java/org/apache/cxf/common/annotation/AnnotationProcessor.java?rev=58 >>>1781&r1=581780&r2=581781&view=diff >>> ====================================================================== >>>======== --- >>> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/ >>>annotation/AnnotationProcessor.java (original) +++ >>> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/ >>>annotation/AnnotationProcessor.java Wed Oct 3 22:42:29 2007 @@ -74,9 >>> +74,9 @@ >>> * Visits each of the annotated elements of the object. >>> * >>> * @param visitor a visitor >>> - * >>> + * @param claz the Class of the targe object >>> */ >>> - public void accept(AnnotationVisitor visitor) { >>> + public void accept(AnnotationVisitor visitor, Class<?> claz) { >>> >>> if (visitor == null) { >>> throw new IllegalArgumentException(); >>> @@ -85,10 +85,14 @@ >>> annotationTypes = visitor.getTargetAnnotations(); >>> visitor.setTarget(target); >>> //recursively check annotation in super class >>> - processClass(visitor, target.getClass()); >>> - processFields(visitor, target.getClass()); >>> - processMethods(visitor, target.getClass()); >>> + processClass(visitor, claz); >>> + processFields(visitor, claz); >>> + processMethods(visitor, claz); >>> } >>> + >>> + public void accept(AnnotationVisitor visitor) { >>> + accept(visitor, target.getClass()); >>> + } >>> >>> >>> private void processMethods(AnnotationVisitor visitor, Class<? >>> extends Object> targetClass) { >>> >>> Modified: >>> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/ >>>injection/ResourceInjector.java URL: >>> http://svn.apache.org/viewvc/incubator/cxf/trunk/common/common/src/mai >>>n/java/org/apache/cxf/common/injection/ResourceInjector.java?rev=581781 >>>&r1=581780&r2=581781&view=diff >>> ====================================================================== >>>======== --- >>> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/ >>>injection/ResourceInjector.java (original) +++ >>> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/ >>>injection/ResourceInjector.java Wed Oct 3 22:42:29 2007 @@ -52,6 +52,7 >>> @@ >>> private static final List<Class<? extends Annotation>> >>> ANNOTATIONS = new ArrayList<Class<? extends Annotation>>(); >>> >>> + >>> static { >>> ANNOTATIONS.add(Resource.class); >>> ANNOTATIONS.add(Resources.class); >>> @@ -71,11 +72,13 @@ >>> } >>> >>> >>> - public void inject(Object o) { >>> - >>> + public void inject(Object o) { >>> + inject(o, o.getClass()); >>> + } >>> + >>> + public void inject(Object o, Class claz) { >>> AnnotationProcessor processor = new AnnotationProcessor(o); >>> - processor.accept(this); >>> - >>> + processor.accept(this, claz); >>> invokePostConstruct(); >>> } >>> >>> @@ -377,4 +380,5 @@ >>> private Object resolveResource(String resourceName, Class<?> >>> type) { return resourceManager.resolveResource(resourceName, type, >>> resourceResolvers); } >>> + >>> } >>> >>> Modified: >>> incubator/cxf/trunk/common/common/src/test/java/org/apache/cxf/common/ >>>injection/ResourceInjectorTest.java URL: >>> http://svn.apache.org/viewvc/incubator/cxf/trunk/common/common/src/tes >>>t/java/org/apache/cxf/common/injection/ResourceInjectorTest.java?rev=58 >>>1781&r1=581780&r2=581781&view=diff >>> ====================================================================== >>>======== --- >>> incubator/cxf/trunk/common/common/src/test/java/org/apache/cxf/common/ >>>injection/ResourceInjectorTest.java (original) +++ >>> incubator/cxf/trunk/common/common/src/test/java/org/apache/cxf/common/ >>>injection/ResourceInjectorTest.java Wed Oct 3 22:42:29 2007 @@ -19,7 >>> +19,8 @@ >>> >>> package org.apache.cxf.common.injection; >>> >>> - >>> +import java.lang.reflect.Method; >>> +import java.lang.reflect.Modifier; >>> >>> import java.util.ArrayList; >>> import java.util.List; >>> @@ -29,6 +30,10 @@ >>> import javax.annotation.Resource; >>> import javax.annotation.Resources; >>> >>> +import net.sf.cglib.proxy.Enhancer; >>> +import net.sf.cglib.proxy.MethodInterceptor; >>> +import net.sf.cglib.proxy.MethodProxy; >>> + >>> import org.apache.cxf.resource.ResourceManager; >>> import org.apache.cxf.resource.ResourceResolver; >>> >>> @@ -64,6 +69,7 @@ >>> doInjectTest(new FieldTarget()); >>> } >>> >>> + >>> @Test >>> public void testFieldInSuperClassInjection() { >>> >>> setUpResourceManager("org.apache.cxf.common.injection.FieldTarget/"); >>> @@ -81,6 +87,12 @@ >>> setUpResourceManager(SetterTarget.class.getCanonicalName() + >>> "/"); doInjectTest(new SetterTarget()); >>> } >>> + >>> + @Test >>> + public void testProxyInjection() { >>> + setUpResourceManager(FieldTarget.class.getCanonicalName() + >>> "/"); + doInjectTest(getProxyObject()); >>> + } >>> >>> @Test >>> public void testClassLevelInjection() { >>> @@ -111,15 +123,23 @@ >>> assertTrue(target.preDestroyCalled()); >>> } >>> >>> - protected void doInjectTest(Target target) { >>> - >>> - injector.inject(target); >>> + protected void doInjectTest(Target target) { >>> >>> + injector.inject(target); >>> assertNotNull(target.getResource1()); >>> assertEquals(RESOURCE_ONE, target.getResource1()); >>> >>> assertNotNull(target.getResource2()); >>> - assertEquals(RESOURCE_TWO, target.getResource2()); >>> + assertEquals(RESOURCE_TWO, target.getResource2()); >>> + >>> + } >>> + >>> + >>> + private FieldTarget getProxyObject() { >>> + Enhancer e = new Enhancer(); >>> + e.setSuperclass(FieldTarget.class); >>> + e.setCallback(new CallInterceptor()); >>> + return (FieldTarget)e.create(); >>> } >>> >>> } >>> @@ -130,6 +150,17 @@ >>> String getResource2(); >>> } >>> >>> +class CallInterceptor implements MethodInterceptor { >>> + >>> + public Object intercept(Object obj, Method method, Object[] args, >>> MethodProxy proxy) throws Throwable { + Object retValFromSuper >>> = null; >>> + if (!Modifier.isAbstract(method.getModifiers())) { >>> + retValFromSuper = proxy.invokeSuper(obj, args); >>> + } >>> + return retValFromSuper; >>> + } >>> +} >>> + >>> >>> class FieldTarget implements Target { >>> >>> @@ -228,7 +259,8 @@ >>> @Resource(name = "resource1") >>> class ClassTarget implements Target { >>> >>> - @Resource(name = "resource2") public String resource2foo; >>> + @Resource(name = "resource2") >>> + public String resource2foo; >>> private String res1; >>> >>> public final void setResource1(String res) { >>> >>> Modified: incubator/cxf/trunk/rt/frontend/jaxws/pom.xml >>> URL: >>> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/pom >>>.xml?rev=581781&r1=581780&r2=581781&view=diff >>> ====================================================================== >>>======== --- incubator/cxf/trunk/rt/frontend/jaxws/pom.xml (original) >>> +++ incubator/cxf/trunk/rt/frontend/jaxws/pom.xml Wed Oct 3 22:42:29 >>> 2007 @@ -107,6 +107,11 @@ >>> </dependency> >>> <dependency> >>> <groupId>org.springframework</groupId> >>> + <artifactId>spring-aop</artifactId> >>> + <version>${spring.version}</version> >>> + </dependency> >>> + <dependency> >>> + <groupId>org.springframework</groupId> >>> <artifactId>spring-web</artifactId> >>> <scope>test</scope> >>> <version>${spring.version}</version> >>> >>> Modified: >>> incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jax >>>ws/JaxWsServerFactoryBean.java URL: >>> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src >>>/main/java/org/apache/cxf/jaxws/JaxWsServerFactoryBean.java?rev=581781& >>>r1=581780&r2=581781&view=diff >>> ====================================================================== >>>======== --- >>> incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jax >>>ws/JaxWsServerFactoryBean.java (original) +++ >>> incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jax >>>ws/JaxWsServerFactoryBean.java Wed Oct 3 22:42:29 2007 @@ -45,6 +45,8 >>> @@ >>> import org.apache.cxf.service.invoker.Invoker; >>> import org.apache.cxf.service.model.BindingInfo; >>> >>> +import org.springframework.aop.support.AopUtils; >>> + >>> /** >>> * Bean to help easily create Server endpoints for JAX-WS. Example: >>> * <pre> >>> @@ -196,7 +198,7 @@ >>> resourceManager = new DefaultResourceManager(resolvers); >>> resourceManager.addResourceResolver(new >>> WebServiceContextResourceResolver()); ResourceInjector injector = new >>> ResourceInjector(resourceManager); - >>> injector.inject(instance); >>> + injector.inject(instance, >>> AopUtils.getTargetClass(instance)); } >>> } >>> } >> >> >> >> -- >> J. Daniel Kulp >> Principal Engineer >> IONA >> P: 781-902-8727 C: 508-380-7194 >> [EMAIL PROTECTED] >> http://www.dankulp.com/blog >> >> > > -- View this message in context: http://www.nabble.com/Re%3A-svn-commit%3A-r581781---in--incubator-cxf-trunk%3A-common-common-src-main-java-org-apache-cxf-common-annotation--common-common-src-main-java-org-apache-cxf-common-injection--common-common-src-test-java-org-apache-cxf-common-injection--rt-frontend-jaxws--r-tf4568099.html#a13039121 Sent from the cxf-dev mailing list archive at Nabble.com.
