cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jeff.Yu" <jeff...@iona.com>
Subject Re: svn commit: r562541 - in /incubator/cxf/trunk/rt: core/src/main/java/org/apache/cxf/interceptor/ frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/ frontend/simple/src/main/java/org/apache/cxf/...
Date Mon, 06 Aug 2007 08:18:04 GMT
Hi, Dan

I just reviewed these changes, all seems good, but I have a question 
about the finding SEI class logic.

With your change, we passed the SEI to the AnnotationInterceptors class 
instead of finding the accordingly SEI through "WebService 
endpointInterface" annotation's attribute, but I also found in the 
AnnotationInterceptorTest class, we set the ServiceImpl to the 
setServiceClass() method, which I thought we set the SEI class in most 
of cases.. I am not sure why we made this change? and with this change, 
we won't find the SEI class in the "Simple Frontend" scenario, I know 
for most of simple frontend, we won't specify the @WebService 
endpointInterface="...." annotation, but we can find the SEI in simple 
front-end with adding this annotation.

Thanks
Jeff

dkulp@apache.org wrote:
> Author: dkulp
> Date: Fri Aug  3 11:30:59 2007
> New Revision: 562541
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=562541
> Log:
> [CXF-882] Move @Feature processing stuff to AbstractFactoryBean to be shared for client
and server
> * Remove reference to WebService annotation from rt-core.  Move to JAX-WS frontend.
>
>
> Modified:
>     incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AnnotationInterceptors.java
>     incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsServerFactoryBean.java
>     incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/AnnotationInterceptorTest.java
>     incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/AbstractEndpointFactory.java
>     incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientFactoryBean.java
>     incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java
>
> Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AnnotationInterceptors.java
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AnnotationInterceptors.java?view=diff&rev=562541&r1=562540&r2=562541
> ==============================================================================
> --- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AnnotationInterceptors.java
(original)
> +++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AnnotationInterceptors.java
Fri Aug  3 11:30:59 2007
> @@ -24,12 +24,9 @@
>  import java.util.List;
>  import java.util.ResourceBundle;
>  
> -import javax.jws.WebService;
> -
>  import org.apache.cxf.common.classloader.ClassLoaderUtils;
>  import org.apache.cxf.common.i18n.BundleUtils;
>  import org.apache.cxf.common.i18n.Message;
> -import org.apache.cxf.common.util.StringUtils;
>  import org.apache.cxf.feature.AbstractFeature;
>  import org.apache.cxf.feature.Features;
>  
> @@ -37,10 +34,10 @@
>      
>      private static final ResourceBundle BUNDLE = BundleUtils.getBundle(AnnotationInterceptors.class);
>      
> -    private Class<?> clazz;
> +    private Class<?> clazzes[];
>      
> -    public AnnotationInterceptors(Class<?> clz) {
> -        clazz = clz;
> +    public AnnotationInterceptors(Class<?> ... clz) {
> +        clazzes = clz;
>      }
>      
>      public List<Interceptor> getInFaultInterceptors() {
> @@ -48,24 +45,12 @@
>      }
>      
>      private <T> List<T> getAnnotationObject(Class<? extends Annotation>
annotationClazz, Class<T> type) {
> -        Annotation  annotation = clazz.getAnnotation(annotationClazz);
> -        if (annotation == null) {
> -            WebService ws = clazz.getAnnotation(WebService.class);
> -            if (ws != null && !StringUtils.isEmpty(ws.endpointInterface()))
{
> -                String seiClassName = ws.endpointInterface().trim();
> -                Class<?> seiClass = null;
> -                try {
> -                    seiClass = ClassLoaderUtils.loadClass(seiClassName, this.getClass());
> -                } catch (ClassNotFoundException e) {
> -                    throw new Fault(new Message("COULD_NOT_FIND_SEICLASS", BUNDLE, seiClass),
e);
> -                }
> -                annotation = seiClass.getAnnotation(annotationClazz);
> -                if (annotation != null) {
> -                    return initializeAnnotationObjects(getAnnotationObjectNames(annotation),
type);
> -                }
> +        
> +        for (Class<?> cls : clazzes) {
> +            Annotation  annotation = cls.getAnnotation(annotationClazz);
> +            if (annotation != null) {
> +                return initializeAnnotationObjects(getAnnotationObjectNames(annotation),
type);
>              }
> -        } else {
> -            return initializeAnnotationObjects(getAnnotationObjectNames(annotation),
type);
>          }
>          return null;
>      }
>
> Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsServerFactoryBean.java
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsServerFactoryBean.java?view=diff&rev=562541&r1=562540&r2=562541
> ==============================================================================
> --- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsServerFactoryBean.java
(original)
> +++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsServerFactoryBean.java
Fri Aug  3 11:30:59 2007
> @@ -29,8 +29,10 @@
>  import org.apache.cxf.binding.AbstractBindingFactory;
>  import org.apache.cxf.binding.soap.Soap12;
>  import org.apache.cxf.common.injection.ResourceInjector;
> +import org.apache.cxf.endpoint.Endpoint;
>  import org.apache.cxf.endpoint.Server;
>  import org.apache.cxf.frontend.ServerFactoryBean;
> +import org.apache.cxf.interceptor.AnnotationInterceptors;
>  import org.apache.cxf.jaxws.binding.soap.JaxWsSoapBindingConfiguration;
>  import org.apache.cxf.jaxws.context.WebServiceContextResourceResolver;
>  import org.apache.cxf.jaxws.handler.AnnotationHandlerChainBuilder;
> @@ -70,6 +72,22 @@
>          doInit = true;
>      }
>  
> +    /**
> +     * Add annotationed Interceptors and Features to the Endpoint
> +     * @param ep
> +     */
> +    protected void initializeAnnotationInterceptors(Endpoint ep, Class<?> cls)
{
> +        Class<?> seiClass = ((JaxWsServiceFactoryBean)getServiceFactory())
> +            .getJaxWsImplementorInfo().getSEIClass();
> +        AnnotationInterceptors provider;
> +        if (seiClass != null) {
> +            provider = new AnnotationInterceptors(cls, seiClass);
> +        } else {
> +            provider = new AnnotationInterceptors(cls);
> +        }
> +        initializeAnnotationInterceptors(provider, ep);
> +    }      
> +    
>      @Override
>      protected Invoker createInvoker() {
>          return new JAXWSMethodInvoker(getServiceBean());
>
> Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/AnnotationInterceptorTest.java
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/AnnotationInterceptorTest.java?view=diff&rev=562541&r1=562540&r2=562541
> ==============================================================================
> --- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/AnnotationInterceptorTest.java
(original)
> +++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/AnnotationInterceptorTest.java
Fri Aug  3 11:30:59 2007
> @@ -142,7 +142,7 @@
>      
>      @Test
>      public void testJaxWsFrontendWithAnnotationInSEI() throws Exception {
> -        jfb.setServiceClass(SayHiInterface.class);
> +        jfb.setServiceClass(SayHiInterfaceImpl.class);
>          jfb.setServiceBean(new SayHiInterfaceImpl());
>          jfb.create();
>          
>
> Modified: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/AbstractEndpointFactory.java
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/AbstractEndpointFactory.java?view=diff&rev=562541&r1=562540&r2=562541
> ==============================================================================
> --- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/AbstractEndpointFactory.java
(original)
> +++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/AbstractEndpointFactory.java
Fri Aug  3 11:30:59 2007
> @@ -42,6 +42,7 @@
>  import org.apache.cxf.endpoint.EndpointImpl;
>  import org.apache.cxf.feature.AbstractFeature;
>  import org.apache.cxf.interceptor.AbstractBasicInterceptorProvider;
> +import org.apache.cxf.interceptor.AnnotationInterceptors;
>  import org.apache.cxf.service.Service;
>  import org.apache.cxf.service.factory.ReflectionServiceFactoryBean;
>  import org.apache.cxf.service.factory.ServiceConstructionException;
> @@ -226,6 +227,43 @@
>          }
>          service.getServiceInfos().get(0).addEndpoint(ei);
>          return ei;
> +    }
> +
> +    /**
> +     * Add annotationed Interceptors and Features to the Endpoint
> +     * @param ep
> +     */
> +    protected void initializeAnnotationInterceptors(Endpoint ep, Class<?> cls)
{
> +        AnnotationInterceptors provider = new AnnotationInterceptors(cls);
> +        if (initializeAnnotationInterceptors(provider, ep)) {
> +            LOG.fine("Added annotation based interceptors and features");
> +        }
> +    }    
> +    
> +    protected boolean initializeAnnotationInterceptors(AnnotationInterceptors provider,
Endpoint ep) {
> +        boolean hasAnnotation = false;
> +        if (provider.getInFaultInterceptors() != null) {
> +            ep.getInFaultInterceptors().addAll(provider.getInFaultInterceptors());
> +            hasAnnotation = true;
> +        }
> +        if (provider.getInInterceptors() != null) {
> +            ep.getInInterceptors().addAll(provider.getInInterceptors());
> +            hasAnnotation = true;
> +        }
> +        if (provider.getOutFaultInterceptors() != null) {
> +            ep.getOutFaultInterceptors().addAll(provider.getOutFaultInterceptors());
> +            hasAnnotation = true;
> +        }
> +        if (provider.getOutInterceptors() != null) {
> +            ep.getOutInterceptors().addAll(provider.getOutInterceptors());
> +            hasAnnotation = true;
> +        }
> +        if (provider.getFeatures() != null) {
> +            getFeatures().addAll(provider.getFeatures());
> +            hasAnnotation = true;
> +        }
> +        
> +        return hasAnnotation;
>      }
>  
>      protected BindingInfo createBindingInfo() {
>
> Modified: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientFactoryBean.java
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientFactoryBean.java?view=diff&rev=562541&r1=562540&r2=562541
> ==============================================================================
> --- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientFactoryBean.java
(original)
> +++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientFactoryBean.java
Fri Aug  3 11:30:59 2007
> @@ -50,12 +50,12 @@
>              Endpoint ep = createEndpoint();
>              
>              createClient(ep);
> +            initializeAnnotationInterceptors(ep, getServiceClass());
>          } catch (EndpointException e) {
>              throw new ServiceConstructionException(e);
>          } catch (BusException e) {
>              throw new ServiceConstructionException(e);
>          }
> -        
>          applyFeatures();
>          return client;
>      }
>
> Modified: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java?view=diff&rev=562541&r1=562540&r2=562541
> ==============================================================================
> --- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java
(original)
> +++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java
Fri Aug  3 11:30:59 2007
> @@ -39,7 +39,6 @@
>  import org.apache.cxf.endpoint.ServerImpl;
>  import org.apache.cxf.feature.AbstractFeature;
>  import org.apache.cxf.helpers.DOMUtils;
> -import org.apache.cxf.interceptor.AnnotationInterceptors;
>  import org.apache.cxf.jaxb.JAXBDataBinding;
>  import org.apache.cxf.resource.ResourceManager;
>  import org.apache.cxf.resource.URIResolver;
> @@ -131,7 +130,7 @@
>          }
>          
>          if (getServiceBean() != null) {
> -            initializeAnnotationInterceptors(server.getEndpoint());
> +            initializeAnnotationInterceptors(server.getEndpoint(), this.getServiceBean().getClass());
>          }
>          
>          applyFeatures();
> @@ -196,42 +195,7 @@
>              }
>          }
>      }
> -    
> -    /**
> -     * Add annotationed Interceptors and Features to the Endpoint
> -     * @param ep
> -     */
> -    protected void initializeAnnotationInterceptors(Endpoint ep) {
> -        AnnotationInterceptors provider = new AnnotationInterceptors(getServiceBean().getClass());
> -        if (initializeAnnotationInterceptors(provider, ep)) {
> -            LOG.fine("Added annotation based interceptors");
> -        }
> -        if (provider.getFeatures() != null) {
> -            getFeatures().addAll(provider.getFeatures());
> -            LOG.fine("Added annotation based features");
> -        }
> -    }
> -    
> -    protected boolean initializeAnnotationInterceptors(AnnotationInterceptors provider,
Endpoint ep) {
> -        boolean hasAnnotation = false;
> -        if (provider.getInFaultInterceptors() != null) {
> -            ep.getInFaultInterceptors().addAll(provider.getInFaultInterceptors());
> -            hasAnnotation = true;
> -        }
> -        if (provider.getInInterceptors() != null) {
> -            ep.getInInterceptors().addAll(provider.getInInterceptors());
> -            hasAnnotation = true;
> -        }
> -        if (provider.getOutFaultInterceptors() != null) {
> -            ep.getOutFaultInterceptors().addAll(provider.getOutFaultInterceptors());
> -            hasAnnotation = true;
> -        }
> -        if (provider.getOutInterceptors() != null) {
> -            ep.getOutInterceptors().addAll(provider.getOutInterceptors());
> -            hasAnnotation = true;
> -        }
> -        return hasAnnotation;
> -    }
> +      
>      
>      protected Invoker createInvoker() {
>          return new BeanInvoker(serviceBean);
>
>
>   

Mime
View raw message