cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Glen Mazza <glen.ma...@verizon.net>
Subject Re: svn commit: r559358 - in /incubator/cxf/trunk: api/src/main/java/org/apache/cxf/interceptor/ rt/core/src/main/java/org/apache/cxf/interceptor/ rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/ rt/frontend/simple/src/main/java/org/apache/cxf...
Date Wed, 25 Jul 2007 15:13:08 GMT
Am Mittwoch, den 25.07.2007, 08:48 +0000 schrieb ffang@apache.org:

> Author: ffang
> Date: Wed Jul 25 01:48:45 2007
> New Revision: 559358
> 
> URL: http://svn.apache.org/viewvc?view=rev&rev=559358
> Log:
> [CXF-803] apply patch provided by Jeff Yu
> 
> Added:
> 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=auto&rev=559358
> ==============================================================================
> --- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AnnotationInterceptors.java
(added)
> +++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AnnotationInterceptors.java
Wed Jul 25 01:48:45 2007
> @@ -0,0 +1,127 @@
> +/**
> +
> +package org.apache.cxf.interceptor;
> +
> +import java.lang.annotation.Annotation;
> +import java.util.ArrayList;
> +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.endpoint.EndpointException;
> +
> +public class AnnotationInterceptors {
> +    
> +    private static final ResourceBundle BUNDLE = BundleUtils.getBundle(AnnotationInterceptors.class);
> +    
> +    private Class<?> clazz;
> +    
> +    public AnnotationInterceptors(Class<?> clz) {
> +        clazz = clz;
> +    }
> +    
> +    public List<Interceptor> getInFaultInterceptors() throws EndpointException
{
> +        return getInterceptors(InFaultInterceptors.class);
> +    }
> +    
> +    @SuppressWarnings (value = "unchecked")
> +    private List<Interceptor> getInterceptors(Class clz) throws EndpointException
{
> +        Annotation  annotation = clazz.getAnnotation(clz);
> +        if (annotation != null) {
> +            return initializeInterceptors(getInterceptorNames(annotation));
> +        } else {

Here, annotation = null means there are no annotations of "clz"
interceptor type tied to the "clazz".  Standard, easy to understand.


> +            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 RuntimeException("couldnt find class :" + seiClass, e);
> +                }
> +                annotation = seiClass.getAnnotation(clz);
> +                if (annotation != null) {
> +                    return initializeInterceptors(getInterceptorNames(annotation));
> +                }
> +            }           
> +        }
> +        return new ArrayList<Interceptor>();
> +    }


Here, we aren't using "null" but an empty list to signify this.
Is this new list going to be used anywhere, if it is empty (i.e., will
items be further added to this list downstream?)  If not, I think it
would be faster and more robust to just return "null" in this case
instead of creating empty items.  (This would also need to be changed in
initializeInterceptors()--just return a null instead of an empty list.)



> 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=559358&r1=559357&r2=559358
> ==============================================================================
> --- 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
Wed Jul 25 01:48:45 2007

> +    
> +    protected boolean initializeAnnotationInterceptors(Endpoint ep, Class<?> clazz)
throws EndpointException {
> +        boolean hasAnnotation = false;
> +        AnnotationInterceptors provider = new AnnotationInterceptors(clazz);
> +        if (provider.getInFaultInterceptors().size() > 0) {
> +            ep.getInFaultInterceptors().addAll(provider.getInFaultInterceptors());
> +            hasAnnotation = true;
> +        }
> +        if (provider.getInInterceptors().size() > 0) {
> +
> ep.getInInterceptors().addAll(provider.getInInterceptors());
> +            hasAnnotation = true;
> +        }
> +        if (provider.getOutFaultInterceptors().size() > 0) {
> +
> ep.getOutFaultInterceptors().addAll(provider.getOutFaultInterceptors());
> +            hasAnnotation = true;
> +        }
> +        if (provider.getOutInterceptors().size() > 0) {
> +
> ep.getOutInterceptors().addAll(provider.getOutInterceptors());
> +            hasAnnotation = true;
> +        }
> +        return hasAnnotation;
>      } 

With this change, the ifs above would simplify to:  
if (provider.getXXXXInterceptors()) { }

Regards,
Glen



Mime
View raw message