[jboss-cvs] JBossAS SVN: r74794 - in projects/metadata/trunk/src: main/java/org/jboss/metadata/annotation/creator/jboss and 5 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Jun 18 08:18:22 EDT 2008
Author: emuckenhuber
Date: 2008-06-18 08:18:22 -0400 (Wed, 18 Jun 2008)
New Revision: 74794
Added:
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/AbstractWebServiceRefProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/ServiceReferenceHandlerChainsWrapper.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceHandlerChainProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceRefClassProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceRefFieldProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceRefMethodProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceRefsClassProcessor.java
projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/HandlerChainsTestCase.java
projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/handlerchains/
projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/handlerchains/AnnotatedClient.java
projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/handlerchains/AnnotatedClientExternal.java
projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/client/handlerchains/
projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/client/handlerchains/handler-chains.xml
Removed:
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractWebServiceRefProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefClassProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefFieldProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefMethodProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefsClassProcessor.java
Modified:
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractComponentProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/jboss/AbstractComponentProcessor.java
Log:
[JBMETA-44] process HandlerChain for WebServiceRefs
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractComponentProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractComponentProcessor.java 2008-06-18 12:16:51 UTC (rev 74793)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractComponentProcessor.java 2008-06-18 12:18:22 UTC (rev 74794)
@@ -35,6 +35,10 @@
import java.util.Set;
import org.jboss.logging.Logger;
+import org.jboss.metadata.annotation.creator.ws.WebServiceRefClassProcessor;
+import org.jboss.metadata.annotation.creator.ws.WebServiceRefFieldProcessor;
+import org.jboss.metadata.annotation.creator.ws.WebServiceRefMethodProcessor;
+import org.jboss.metadata.annotation.creator.ws.WebServiceRefsClassProcessor;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.javaee.spec.AnnotatedEJBReferencesMetaData;
import org.jboss.metadata.javaee.spec.EnvironmentRefsGroupMetaData;
@@ -92,7 +96,7 @@
// @PostConstruct/@PreDestroy
addMethodProcessor(new PostConstructMethodProcessor(finder));
addMethodProcessor(new PreDestroyMethodProcessor(finder));
- // @WebServiceRef
+ // @WebServiceRef (includes @HandlerChain)
addMethodProcessor(new WebServiceRefMethodProcessor(finder));
addFieldProcessor(new WebServiceRefFieldProcessor(finder));
addTypeProcessor(new WebServiceRefClassProcessor(finder));
Deleted: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractWebServiceRefProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractWebServiceRefProcessor.java 2008-06-18 12:16:51 UTC (rev 74793)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractWebServiceRefProcessor.java 2008-06-18 12:18:22 UTC (rev 74794)
@@ -1,118 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.metadata.annotation.creator;
-
-import java.lang.reflect.AnnotatedElement;
-import java.util.Set;
-
-import javax.xml.ws.WebServiceRef;
-
-import org.jboss.logging.Logger;
-import org.jboss.metadata.annotation.finder.AnnotationFinder;
-import org.jboss.metadata.javaee.spec.RemoteEnvironmentRefsGroupMetaData;
-import org.jboss.metadata.javaee.spec.ResourceInjectionTargetMetaData;
-import org.jboss.metadata.javaee.spec.ServiceReferenceMetaData;
-import org.jboss.metadata.javaee.spec.ServiceReferencesMetaData;
-
-/**
- * Base processor for @WebServiceRef annotations.
- * @author Scott.Stark at jboss.org
- * @version $Revision: 67548 $
- */
-public abstract class AbstractWebServiceRefProcessor<E extends AnnotatedElement>
- extends AbstractFinderUser
-{
- private static Logger log = Logger.getLogger(AbstractWebServiceRefProcessor.class);
-
-
- protected AbstractWebServiceRefProcessor(AnnotationFinder<AnnotatedElement> finder)
- {
- super(finder);
- }
-
- public void process(RemoteEnvironmentRefsGroupMetaData refs, E element)
- {
- WebServiceRef annotation = finder.getAnnotation(element, WebServiceRef.class);
- if(annotation == null)
- return;
- process(refs, element, annotation);
- }
- protected void process(RemoteEnvironmentRefsGroupMetaData refs, E element, WebServiceRef annotation)
- {
- boolean trace = log.isTraceEnabled();
- String type = annotation.type().getName();
- if(type.equals("java.lang.Object"))
- type = getType(element);
- if(trace)
- log.trace("process: "+annotation+", type="+type);
- ServiceReferencesMetaData srefs = refs.getServiceReferences();
- if(srefs == null)
- {
- srefs = new ServiceReferencesMetaData();
- refs.setServiceReferences(srefs);
- }
- ServiceReferenceMetaData ref = createServiceRef(annotation, element);
- srefs.add(ref);
- if(trace)
- log.trace("created service-ref: "+ref);
- }
-
- /**
- * Get the resource name based on the AnnotatedElement
- * @param element
- * @return
- */
- protected abstract String getName(E element);
- protected abstract String getInjectionName(E element);
- protected abstract String getType(E element);
- protected abstract String getDeclaringClass(E element);
-
- protected ServiceReferenceMetaData createServiceRef(WebServiceRef annotation, E element)
- {
- ServiceReferenceMetaData ref = new ServiceReferenceMetaData();
- String name = annotation.name();
- if(name.length() == 0)
- name = getName(element);
- ref.setServiceRefName(name);
- if(annotation.mappedName().length() > 0)
- ref.setMappedName(annotation.mappedName());
- ref.setAnnotatedElement(element);
- if(annotation.wsdlLocation().length() > 0)
- ref.setWsdlFile(annotation.wsdlLocation());
- if(annotation.type() != Object.class)
- ref.setServiceRefType(annotation.type().getName());
- else
- ref.setServiceRefType(getType(element));
- if(annotation.value() != Object.class)
- ref.setServiceInterface(annotation.value().getName());
- else
- ref.setServiceInterface(ref.getServiceRefType());
-
- String injectionName = getInjectionName(element);
- Set<ResourceInjectionTargetMetaData> injectionTargets = ProcessorUtils.getInjectionTargets(injectionName, element);
- if(injectionTargets != null)
- ref.setInjectionTargets(injectionTargets);
-
- return ref;
- }
-
-}
Deleted: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefClassProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefClassProcessor.java 2008-06-18 12:16:51 UTC (rev 74793)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefClassProcessor.java 2008-06-18 12:18:22 UTC (rev 74794)
@@ -1,68 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.metadata.annotation.creator;
-
-import java.lang.reflect.AnnotatedElement;
-
-import org.jboss.metadata.annotation.finder.AnnotationFinder;
-import org.jboss.metadata.javaee.spec.RemoteEnvironmentRefsGroupMetaData;
-
-/**
- * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
- * @version $Revision$
- */
-public class WebServiceRefClassProcessor
- extends AbstractWebServiceRefProcessor<Class<?>>
- implements Processor<RemoteEnvironmentRefsGroupMetaData, Class<?>>
-{
-
- public WebServiceRefClassProcessor(AnnotationFinder<AnnotatedElement> finder)
- {
- super(finder);
- }
-
- @Override
- protected String getName(Class<?> element)
- {
- String name = element.getSimpleName();
- return name;
- }
-
- @Override
- protected String getInjectionName(Class<?> element)
- {
- return null;
- }
-
- @Override
- protected String getType(Class<?> element)
- {
- return element.getName();
- }
-
- @Override
- protected String getDeclaringClass(Class<?> element)
- {
- return element.getName();
- }
-
-}
Deleted: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefFieldProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefFieldProcessor.java 2008-06-18 12:16:51 UTC (rev 74793)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefFieldProcessor.java 2008-06-18 12:18:22 UTC (rev 74794)
@@ -1,69 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.metadata.annotation.creator;
-
-import java.lang.reflect.AnnotatedElement;
-import java.lang.reflect.Field;
-
-import org.jboss.metadata.annotation.finder.AnnotationFinder;
-import org.jboss.metadata.javaee.spec.RemoteEnvironmentRefsGroupMetaData;
-
-/**
- * @author Scott.Stark at jboss.org
- * @version $Revision: 72354 $
- */
-public class WebServiceRefFieldProcessor
- extends AbstractWebServiceRefProcessor<Field>
- implements Processor<RemoteEnvironmentRefsGroupMetaData, Field>
-{
-
- /**
- * @param finder
- */
- public WebServiceRefFieldProcessor(AnnotationFinder<AnnotatedElement> finder)
- {
- super(finder);
- }
-
- @Override
- protected String getName(Field element)
- {
- String name = element.getName();
- return name;
- }
- @Override
- protected String getInjectionName(Field element)
- {
- return element.getName();
- }
- @Override
- protected String getType(Field element)
- {
- return element.getType().getName();
- }
- @Override
- protected String getDeclaringClass(Field element)
- {
- return element.getDeclaringClass().getName();
- }
-
-}
Deleted: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefMethodProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefMethodProcessor.java 2008-06-18 12:16:51 UTC (rev 74793)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefMethodProcessor.java 2008-06-18 12:18:22 UTC (rev 74794)
@@ -1,79 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.metadata.annotation.creator;
-
-import java.lang.reflect.AnnotatedElement;
-import java.lang.reflect.Method;
-
-import org.jboss.metadata.annotation.finder.AnnotationFinder;
-import org.jboss.metadata.javaee.spec.RemoteEnvironmentRefsGroupMetaData;
-
-/**
- * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
- * @version $Revision$
- */
-public class WebServiceRefMethodProcessor
- extends AbstractWebServiceRefProcessor<Method>
- implements Processor<RemoteEnvironmentRefsGroupMetaData, Method>
-{
-
- public WebServiceRefMethodProcessor(AnnotationFinder<AnnotatedElement> finder)
- {
- super(finder);
- }
-
- @Override
- protected String getName(Method element)
- {
- String name = element.getName().substring(3);
- if (name.length() > 1)
- {
- name = name.substring(0, 1).toLowerCase() + name.substring(1);
- }
- else
- {
- name = name.toLowerCase();
- }
- return name;
- }
-
- @Override
- protected String getInjectionName(Method element)
- {
- return element.getName();
- }
-
- @Override
- protected String getType(Method element)
- {
- if(element.getParameterTypes().length != 1)
- throw new IllegalStateException("The method requires one parameter: "+ element);
-
- return element.getParameterTypes()[0].getName();
- }
-
- @Override
- protected String getDeclaringClass(Method element)
- {
- return element.getDeclaringClass().getName();
- }
-}
Deleted: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefsClassProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefsClassProcessor.java 2008-06-18 12:16:51 UTC (rev 74793)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefsClassProcessor.java 2008-06-18 12:18:22 UTC (rev 74794)
@@ -1,80 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.metadata.annotation.creator;
-
-import java.lang.reflect.AnnotatedElement;
-
-import javax.xml.ws.WebServiceRef;
-import javax.xml.ws.WebServiceRefs;
-
-import org.jboss.metadata.annotation.finder.AnnotationFinder;
-import org.jboss.metadata.javaee.spec.RemoteEnvironmentRefsGroupMetaData;
-
-/**
- * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
- * @version $Revision$
- */
-public class WebServiceRefsClassProcessor
- extends WebServiceRefClassProcessor
- implements Processor<RemoteEnvironmentRefsGroupMetaData, Class<?>>
-{
-
- public WebServiceRefsClassProcessor(AnnotationFinder<AnnotatedElement> finder)
- {
- super(finder);
- }
-
- @Override
- public void process(RemoteEnvironmentRefsGroupMetaData refsMetaData, Class<?> type)
- {
- WebServiceRefs annotation = finder.getAnnotation(type, WebServiceRefs.class);
- if(annotation == null)
- return;
-
- WebServiceRef[] references = annotation.value();
- if(references != null)
- {
- for(WebServiceRef reference : references)
- super.process(refsMetaData, type, reference);
- }
- }
-
- @Override
- protected String getName(Class<?> element)
- {
- String name = element.getSimpleName();
- return name;
- }
-
- @Override
- protected String getType(Class<?> element)
- {
- return element.getName();
- }
-
- @Override
- protected String getDeclaringClass(Class<?> element)
- {
- return element.getName();
- }
-
-}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/jboss/AbstractComponentProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/jboss/AbstractComponentProcessor.java 2008-06-18 12:16:51 UTC (rev 74793)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/jboss/AbstractComponentProcessor.java 2008-06-18 12:18:22 UTC (rev 74794)
@@ -48,7 +48,10 @@
import org.jboss.metadata.annotation.creator.ResourceFieldProcessor;
import org.jboss.metadata.annotation.creator.ResourceMethodProcessor;
import org.jboss.metadata.annotation.creator.ResourcesClassProcessor;
-import org.jboss.metadata.annotation.creator.WebServiceRefFieldProcessor;
+import org.jboss.metadata.annotation.creator.ws.WebServiceRefClassProcessor;
+import org.jboss.metadata.annotation.creator.ws.WebServiceRefFieldProcessor;
+import org.jboss.metadata.annotation.creator.ws.WebServiceRefMethodProcessor;
+import org.jboss.metadata.annotation.creator.ws.WebServiceRefsClassProcessor;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossEnvironmentRefsGroupMetaData;
import org.jboss.metadata.javaee.jboss.JBossServiceReferencesMetaData;
@@ -108,8 +111,11 @@
// @PostConstruct/@PreDestroy
addMethodProcessor(new PostConstructMethodProcessor(finder));
addMethodProcessor(new PreDestroyMethodProcessor(finder));
- // @WebServiceRef
+ // @WebServiceRef (includes @HandlerChain)
+ addMethodProcessor(new WebServiceRefMethodProcessor(finder));
addFieldProcessor(new WebServiceRefFieldProcessor(finder));
+ addTypeProcessor(new WebServiceRefClassProcessor(finder));
+ addTypeProcessor(new WebServiceRefsClassProcessor(finder));
}
public void addFieldProcessor(Processor processor)
Copied: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/AbstractWebServiceRefProcessor.java (from rev 74790, projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractWebServiceRefProcessor.java)
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/AbstractWebServiceRefProcessor.java (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/AbstractWebServiceRefProcessor.java 2008-06-18 12:18:22 UTC (rev 74794)
@@ -0,0 +1,129 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.metadata.annotation.creator.ws;
+
+import java.lang.reflect.AnnotatedElement;
+import java.util.Set;
+
+import javax.xml.ws.WebServiceRef;
+
+import org.jboss.logging.Logger;
+import org.jboss.metadata.annotation.creator.AbstractFinderUser;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.javaee.spec.RemoteEnvironmentRefsGroupMetaData;
+import org.jboss.metadata.javaee.spec.ResourceInjectionTargetMetaData;
+import org.jboss.metadata.javaee.spec.ServiceReferenceMetaData;
+import org.jboss.metadata.javaee.spec.ServiceReferencesMetaData;
+
+/**
+ * Base processor for @WebServiceRef annotations.
+ * Delegates @HandlerChain to WebServiceHandlerChainProcessor.
+ *
+ * @author Scott.Stark at jboss.org
+ * @version $Revision: 67548 $
+ */
+public abstract class AbstractWebServiceRefProcessor<E extends AnnotatedElement>
+ extends AbstractFinderUser
+{
+ /** The logger. */
+ private static Logger log = Logger.getLogger(AbstractWebServiceRefProcessor.class);
+
+ /** The WebServiceHandlerChainProcessor */
+ private WebServiceHandlerChainProcessor<E> handlerChainProcessor;
+
+ protected AbstractWebServiceRefProcessor(AnnotationFinder<AnnotatedElement> finder)
+ {
+ super(finder);
+ // The handlerChainProcessor only needs to process the class if there is a @WebServiceRef
+ handlerChainProcessor = new WebServiceHandlerChainProcessor<E>(finder);
+ }
+
+ public void process(RemoteEnvironmentRefsGroupMetaData refs, E element)
+ {
+ WebServiceRef annotation = finder.getAnnotation(element, WebServiceRef.class);
+ if(annotation == null)
+ return;
+ process(refs, element, annotation);
+ }
+ protected void process(RemoteEnvironmentRefsGroupMetaData refs, E element, WebServiceRef annotation)
+ {
+ boolean trace = log.isTraceEnabled();
+ String type = annotation.type().getName();
+ if(type.equals("java.lang.Object"))
+ type = getType(element);
+ if(trace)
+ log.trace("process: "+annotation+", type="+type);
+ ServiceReferencesMetaData srefs = refs.getServiceReferences();
+ if(srefs == null)
+ {
+ srefs = new ServiceReferencesMetaData();
+ refs.setServiceReferences(srefs);
+ }
+ ServiceReferenceMetaData ref = createServiceRef(annotation, element);
+ srefs.add(ref);
+ if(trace)
+ log.trace("created service-ref: "+ref);
+
+ /** Delegate to handlerChainProcessor */
+ handlerChainProcessor.process(ref, element);
+ }
+
+ /**
+ * Get the resource name based on the AnnotatedElement
+ * @param element
+ * @return
+ */
+ protected abstract String getName(E element);
+ protected abstract String getInjectionName(E element);
+ protected abstract String getType(E element);
+ protected abstract String getDeclaringClass(E element);
+
+ protected ServiceReferenceMetaData createServiceRef(WebServiceRef annotation, E element)
+ {
+ ServiceReferenceMetaData ref = new ServiceReferenceMetaData();
+ String name = annotation.name();
+ if(name.length() == 0)
+ name = getName(element);
+ ref.setServiceRefName(name);
+ if(annotation.mappedName().length() > 0)
+ ref.setMappedName(annotation.mappedName());
+ ref.setAnnotatedElement(element);
+ if(annotation.wsdlLocation().length() > 0)
+ ref.setWsdlFile(annotation.wsdlLocation());
+ if(annotation.type() != Object.class)
+ ref.setServiceRefType(annotation.type().getName());
+ else
+ ref.setServiceRefType(getType(element));
+ if(annotation.value() != Object.class)
+ ref.setServiceInterface(annotation.value().getName());
+ else
+ ref.setServiceInterface(ref.getServiceRefType());
+
+ String injectionName = getInjectionName(element);
+ Set<ResourceInjectionTargetMetaData> injectionTargets = ProcessorUtils.getInjectionTargets(injectionName, element);
+ if(injectionTargets != null)
+ ref.setInjectionTargets(injectionTargets);
+
+ return ref;
+ }
+}
Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/ServiceReferenceHandlerChainsWrapper.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/ServiceReferenceHandlerChainsWrapper.java (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/ServiceReferenceHandlerChainsWrapper.java 2008-06-18 12:18:22 UTC (rev 74794)
@@ -0,0 +1,60 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.metadata.annotation.creator.ws;
+
+import javax.xml.bind.annotation.XmlNs;
+import javax.xml.bind.annotation.XmlNsForm;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+import org.jboss.metadata.javaee.spec.JavaEEMetaDataConstants;
+import org.jboss.metadata.javaee.spec.ServiceReferenceHandlerChainsMetaData;
+import org.jboss.xb.annotations.JBossXmlSchema;
+
+/**
+ * Defines a XmlRoot for ServiceReferenceHandlerChainsMetaData, as it needs to be
+ * parsed for @HandlerChain.
+ *
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+ at XmlRootElement(name= "handler-chains", namespace = JavaEEMetaDataConstants.JAVAEE_NS)
+ at JBossXmlSchema(
+ xmlns={@XmlNs(namespaceURI = JavaEEMetaDataConstants.JAVAEE_NS, prefix = "javaee"),
+ @XmlNs(namespaceURI = "http://org.jboss.ws/jaxws/handlerscope", prefix = "ns1")
+ },
+ ignoreUnresolvedFieldOrClass=false,
+ namespace=JavaEEMetaDataConstants.JAVAEE_NS,
+ elementFormDefault=XmlNsForm.QUALIFIED)
+ at XmlType(name = "service-ref_handler-chainsType")
+public class ServiceReferenceHandlerChainsWrapper extends ServiceReferenceHandlerChainsMetaData
+{
+ /** The serialVersionUID */
+ private static final long serialVersionUID = 1;
+
+ public ServiceReferenceHandlerChainsWrapper()
+ {
+ super();
+ }
+
+}
+
Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceHandlerChainProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceHandlerChainProcessor.java (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceHandlerChainProcessor.java 2008-06-18 12:18:22 UTC (rev 74794)
@@ -0,0 +1,204 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.metadata.annotation.creator.ws;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.AnnotatedElement;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import javax.jws.HandlerChain;
+
+import org.jboss.logging.Logger;
+import org.jboss.metadata.annotation.creator.AbstractFinderUser;
+import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.javaee.spec.ServiceReferenceHandlerChainsMetaData;
+import org.jboss.metadata.javaee.spec.ServiceReferenceMetaData;
+import org.jboss.xb.binding.JBossXBException;
+import org.jboss.xb.binding.Unmarshaller;
+import org.jboss.xb.binding.UnmarshallerFactory;
+import org.jboss.xb.binding.sunday.unmarshalling.DefaultSchemaResolver;
+
+/**
+ * @HandlerChain processor
+ *
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision $
+ */
+public class WebServiceHandlerChainProcessor<E extends AnnotatedElement>
+ extends AbstractFinderUser
+ implements Processor<ServiceReferenceMetaData, E>
+{
+
+ /** The logger. */
+ private static Logger log = Logger.getLogger(WebServiceHandlerChainProcessor.class);
+
+ /** The default schema resolver. */
+ private static final DefaultSchemaResolver resolver;
+
+ static
+ {
+ resolver = new DefaultSchemaResolver();
+ resolver.addClassBindingForLocation("javaee_web_services_1_2.xsd", ServiceReferenceHandlerChainsWrapper.class);
+ }
+
+ public WebServiceHandlerChainProcessor(AnnotationFinder<AnnotatedElement> finder)
+ {
+ super(finder);
+ }
+
+ public void process(ServiceReferenceMetaData refs, E type)
+ {
+ HandlerChain annotation = finder.getAnnotation(type, HandlerChain.class);
+ if (annotation == null)
+ return;
+
+ if (annotation.file() != null && annotation.file().length() > 1)
+ {
+ log.trace("processing HandlerChain for element: " + type);
+ process(refs, type, annotation);
+ }
+ }
+
+ protected void process(ServiceReferenceMetaData refs, E element, HandlerChain annotation)
+ {
+ String fileName = annotation.file();
+ ServiceReferenceHandlerChainsMetaData handlerChains = null;
+ try
+ {
+ // get inputStream for the file
+ InputStream in = getResourceInputStream(element, fileName);
+
+ // unmarshal
+ handlerChains = unmarshall(in);
+ }
+ catch (Exception e)
+ {
+ throw new IllegalStateException("Could not process file: "+ fileName, e);
+ }
+
+ if (handlerChains == null)
+ return;
+
+ // Merge if there are already handlerChains
+ if (refs.getHandlerChains() != null)
+ {
+ ServiceReferenceHandlerChainsMetaData merged = new ServiceReferenceHandlerChainsMetaData();
+ merged.merge(handlerChains, refs.getHandlerChains());
+ refs.setHandlerChains(merged);
+ }
+ else
+ {
+ refs.setHandlerChains(handlerChains);
+ }
+ }
+
+ /**
+ * Unmarshal
+ *
+ * @param in the input stream of the file
+ * @return ServiceReferenceHandlerChainsMetaData
+ * @throws JBossXBException
+ */
+ protected ServiceReferenceHandlerChainsMetaData unmarshall(InputStream in) throws JBossXBException
+ {
+ if(in == null)
+ throw new IllegalArgumentException("InputStream may not be null.");
+
+ Unmarshaller unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
+ return (ServiceReferenceHandlerChainsMetaData) unmarshaller.unmarshal(in, resolver);
+ }
+
+ /**
+ * Returns the InputStream of a specified file.
+ *
+ * 1. An absolute java.net.URL in externalForm (ex: http://myhandlers.foo.com/handlerfile1.xml).
+ * 2. A relative path from the source file or class file (ex: bar/handlerfile1.xml).
+ *
+ * @param type the declaring class
+ * @param file the specified filename
+ * @return the InputStream of the file or throws an IllegalStateException if the file was not found
+ * @throws MalformedURLException, IOException, IllegalStateException
+ */
+ protected InputStream getResourceInputStream(E type, String file) throws MalformedURLException, IOException, IllegalStateException
+ {
+ // If the filename is a url
+ if(file.startsWith("http://") )
+ {
+ URL url = new URL(file);
+ if(url != null)
+ return url.openStream();
+ }
+
+ String fileName = file;
+ // Resolve file name
+ Class<?> declaredClass = resolveDeclaringClass(type);
+ InputStream in = declaredClass.getResourceAsStream(fileName);
+ if (in != null)
+ return in;
+
+ // If it's not an absolute fileName resolve the name manually (package / fileName)
+ if (!file.startsWith("/"))
+ {
+ String baseName = declaredClass.getName();
+ int index = baseName.lastIndexOf('.');
+ if (index != -1)
+ {
+ fileName = baseName.substring(0, index).replace('.', '/') + "/" + file;
+ }
+ }
+ else
+ {
+ fileName = file.substring(1);
+ }
+
+ in = declaredClass.getResourceAsStream(fileName);
+ if (in != null)
+ return in;
+
+ throw new IllegalStateException("could not find file: " + file);
+ }
+
+ /**
+ * Resolves the declaring class of an AnnotatedElement.
+ *
+ * @param element
+ * @return the declaring class
+ */
+ private Class<?> resolveDeclaringClass(E element)
+ {
+ if(element == null)
+ throw new IllegalArgumentException("element may not be null.");
+
+ if(element instanceof Class)
+ return (Class<?>) element;
+ else if(element instanceof Method)
+ return ((Method) element).getDeclaringClass();
+ else
+ return ((Field) element).getDeclaringClass();
+ }
+
+}
\ No newline at end of file
Copied: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceRefClassProcessor.java (from rev 74790, projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefClassProcessor.java)
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceRefClassProcessor.java (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceRefClassProcessor.java 2008-06-18 12:18:22 UTC (rev 74794)
@@ -0,0 +1,69 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.metadata.annotation.creator.ws;
+
+import java.lang.reflect.AnnotatedElement;
+
+import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.javaee.spec.RemoteEnvironmentRefsGroupMetaData;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public class WebServiceRefClassProcessor
+ extends AbstractWebServiceRefProcessor<Class<?>>
+ implements Processor<RemoteEnvironmentRefsGroupMetaData, Class<?>>
+{
+
+ public WebServiceRefClassProcessor(AnnotationFinder<AnnotatedElement> finder)
+ {
+ super(finder);
+ }
+
+ @Override
+ protected String getName(Class<?> element)
+ {
+ String name = element.getSimpleName();
+ return name;
+ }
+
+ @Override
+ protected String getInjectionName(Class<?> element)
+ {
+ return null;
+ }
+
+ @Override
+ protected String getType(Class<?> element)
+ {
+ return element.getName();
+ }
+
+ @Override
+ protected String getDeclaringClass(Class<?> element)
+ {
+ return element.getName();
+ }
+
+}
Copied: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceRefFieldProcessor.java (from rev 74790, projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefFieldProcessor.java)
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceRefFieldProcessor.java (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceRefFieldProcessor.java 2008-06-18 12:18:22 UTC (rev 74794)
@@ -0,0 +1,70 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.metadata.annotation.creator.ws;
+
+import java.lang.reflect.AnnotatedElement;
+import java.lang.reflect.Field;
+
+import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.javaee.spec.RemoteEnvironmentRefsGroupMetaData;
+
+/**
+ * @author Scott.Stark at jboss.org
+ * @version $Revision: 72354 $
+ */
+public class WebServiceRefFieldProcessor
+ extends AbstractWebServiceRefProcessor<Field>
+ implements Processor<RemoteEnvironmentRefsGroupMetaData, Field>
+{
+
+ /**
+ * @param finder
+ */
+ public WebServiceRefFieldProcessor(AnnotationFinder<AnnotatedElement> finder)
+ {
+ super(finder);
+ }
+
+ @Override
+ protected String getName(Field element)
+ {
+ String name = element.getName();
+ return name;
+ }
+ @Override
+ protected String getInjectionName(Field element)
+ {
+ return element.getName();
+ }
+ @Override
+ protected String getType(Field element)
+ {
+ return element.getType().getName();
+ }
+ @Override
+ protected String getDeclaringClass(Field element)
+ {
+ return element.getDeclaringClass().getName();
+ }
+
+}
Copied: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceRefMethodProcessor.java (from rev 74790, projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefMethodProcessor.java)
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceRefMethodProcessor.java (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceRefMethodProcessor.java 2008-06-18 12:18:22 UTC (rev 74794)
@@ -0,0 +1,80 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.metadata.annotation.creator.ws;
+
+import java.lang.reflect.AnnotatedElement;
+import java.lang.reflect.Method;
+
+import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.javaee.spec.RemoteEnvironmentRefsGroupMetaData;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public class WebServiceRefMethodProcessor
+ extends AbstractWebServiceRefProcessor<Method>
+ implements Processor<RemoteEnvironmentRefsGroupMetaData, Method>
+{
+
+ public WebServiceRefMethodProcessor(AnnotationFinder<AnnotatedElement> finder)
+ {
+ super(finder);
+ }
+
+ @Override
+ protected String getName(Method element)
+ {
+ String name = element.getName().substring(3);
+ if (name.length() > 1)
+ {
+ name = name.substring(0, 1).toLowerCase() + name.substring(1);
+ }
+ else
+ {
+ name = name.toLowerCase();
+ }
+ return name;
+ }
+
+ @Override
+ protected String getInjectionName(Method element)
+ {
+ return element.getName();
+ }
+
+ @Override
+ protected String getType(Method element)
+ {
+ if(element.getParameterTypes().length != 1)
+ throw new IllegalStateException("The method requires one parameter: "+ element);
+
+ return element.getParameterTypes()[0].getName();
+ }
+
+ @Override
+ protected String getDeclaringClass(Method element)
+ {
+ return element.getDeclaringClass().getName();
+ }
+}
Copied: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceRefsClassProcessor.java (from rev 74790, projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefsClassProcessor.java)
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceRefsClassProcessor.java (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceRefsClassProcessor.java 2008-06-18 12:18:22 UTC (rev 74794)
@@ -0,0 +1,81 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.metadata.annotation.creator.ws;
+
+import java.lang.reflect.AnnotatedElement;
+
+import javax.xml.ws.WebServiceRef;
+import javax.xml.ws.WebServiceRefs;
+
+import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.javaee.spec.RemoteEnvironmentRefsGroupMetaData;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public class WebServiceRefsClassProcessor
+ extends WebServiceRefClassProcessor
+ implements Processor<RemoteEnvironmentRefsGroupMetaData, Class<?>>
+{
+
+ public WebServiceRefsClassProcessor(AnnotationFinder<AnnotatedElement> finder)
+ {
+ super(finder);
+ }
+
+ @Override
+ public void process(RemoteEnvironmentRefsGroupMetaData refsMetaData, Class<?> type)
+ {
+ WebServiceRefs annotation = finder.getAnnotation(type, WebServiceRefs.class);
+ if(annotation == null)
+ return;
+
+ WebServiceRef[] references = annotation.value();
+ if(references != null)
+ {
+ for(WebServiceRef reference : references)
+ super.process(refsMetaData, type, reference);
+ }
+ }
+
+ @Override
+ protected String getName(Class<?> element)
+ {
+ String name = element.getSimpleName();
+ return name;
+ }
+
+ @Override
+ protected String getType(Class<?> element)
+ {
+ return element.getName();
+ }
+
+ @Override
+ protected String getDeclaringClass(Class<?> element)
+ {
+ return element.getName();
+ }
+
+}
Added: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/HandlerChainsTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/HandlerChainsTestCase.java (rev 0)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/HandlerChainsTestCase.java 2008-06-18 12:18:22 UTC (rev 74794)
@@ -0,0 +1,117 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.metadata.annotation.client;
+
+import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+
+import org.jboss.metadata.annotation.creator.client.ApplicationClient5MetaDataCreator;
+import org.jboss.metadata.annotation.creator.ws.WebServiceHandlerChainProcessor;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.annotation.finder.DefaultAnnotationFinder;
+import org.jboss.metadata.client.spec.ApplicationClient5MetaData;
+import org.jboss.metadata.javaee.spec.ServiceReferenceHandlerChainMetaData;
+import org.jboss.metadata.javaee.spec.ServiceReferenceHandlerChainsMetaData;
+import org.jboss.metadata.javaee.spec.ServiceReferenceMetaData;
+import org.jboss.metadata.javaee.spec.ServiceReferencesMetaData;
+import org.jboss.test.metadata.annotation.client.handlerchains.AnnotatedClient;
+import org.jboss.test.metadata.annotation.client.handlerchains.AnnotatedClientExternal;
+import org.jboss.test.metadata.common.PackageScanner;
+import org.jboss.test.metadata.javaee.AbstractJavaEEMetaDataTest;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public class HandlerChainsTestCase extends AbstractJavaEEMetaDataTest
+{
+
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+
+ public HandlerChainsTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testHandlerChainsProcessor()
+ {
+ ServiceReferenceMetaData metaData = new ServiceReferenceMetaData();
+
+ WebServiceHandlerChainProcessor<Class<?>> processor = new WebServiceHandlerChainProcessor<Class<?>>(finder);
+ processor.process(metaData, AnnotatedClient.class);
+
+ ServiceReferenceHandlerChainsMetaData handlerChains = metaData.getHandlerChains();
+ assertNotNull(handlerChains);
+ assertNotNull(handlerChains.getHandlers());
+ assertEquals(10, handlerChains.getHandlers().size());
+ ServiceReferenceHandlerChainMetaData serviceHandlerChain = handlerChains.getHandlers().get(0);
+ assertNotNull(serviceHandlerChain);
+ assertEquals(" SOAP11ServerHandler ", serviceHandlerChain.getHandler().get(0).getHandlerName());
+ assertEquals(" org.jboss.test.ws.jaxws.handlerscope.ProtocolHandler ", serviceHandlerChain.getHandler().get(0).getHandlerClass());
+
+ }
+
+ public void testAssembledHandlerChainsProcessors()
+ {
+ enableTrace("org.jboss.metadata.annotation.creator");
+
+ Collection<Class<?>> classes = new HashSet<Class<?>>();
+ classes.add(AnnotatedClient.class);
+ ApplicationClient5MetaDataCreator creator = new ApplicationClient5MetaDataCreator(finder);
+ ApplicationClient5MetaData clientMD = creator.create(classes);
+
+ ServiceReferencesMetaData serviceRefs = clientMD.getServiceReferences();
+ assertNotNull(serviceRefs);
+ assertEquals(3, serviceRefs.size());
+
+ ServiceReferenceMetaData serviceRef = serviceRefs.get("endpoint");
+ assertNotNull(serviceRef);
+ ServiceReferenceHandlerChainsMetaData handlerChains = serviceRef.getHandlerChains();
+ assertNotNull(handlerChains);
+ assertNotNull(handlerChains.getHandlers());
+ assertEquals(10, handlerChains.getHandlers().size());
+ ServiceReferenceHandlerChainMetaData serviceHandlerChain = handlerChains.getHandlers().get(0);
+ assertNotNull(serviceHandlerChain);
+ assertEquals(" SOAP11ServerHandler ", serviceHandlerChain.getHandler().get(0).getHandlerName());
+ assertEquals(" org.jboss.test.ws.jaxws.handlerscope.ProtocolHandler ", serviceHandlerChain.getHandler().get(0).getHandlerClass());
+ }
+
+ public void testHandlerChainWithExternalReference()
+ {
+ try
+ {
+ Collection<Class<?>> classes = new HashSet<Class<?>>();
+ classes.add(AnnotatedClientExternal.class);
+ ApplicationClient5MetaDataCreator creator = new ApplicationClient5MetaDataCreator(finder);
+ creator.create(classes);
+
+ fail("@HandlerChain points to a non existing host.");
+ }
+ catch(Exception e)
+ {
+ // ok
+ }
+ }
+}
+
Added: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/handlerchains/AnnotatedClient.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/handlerchains/AnnotatedClient.java (rev 0)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/handlerchains/AnnotatedClient.java 2008-06-18 12:18:22 UTC (rev 74794)
@@ -0,0 +1,50 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.metadata.annotation.client.handlerchains;
+
+import javax.jws.HandlerChain;
+import javax.xml.ws.WebServiceRef;
+
+import org.jboss.test.metadata.annotation.ws.TestEndpoint;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+ at WebServiceRef
+ at HandlerChain(file = "handler-chains.xml")
+public class AnnotatedClient
+{
+
+ @WebServiceRef
+ @HandlerChain(file = "handler-chains.xml")
+ TestEndpoint endpoint;
+
+ @WebServiceRef
+ @HandlerChain(file = "handler-chains.xml")
+ public void setTestEndpoint(TestEndpoint endpoint)
+ {
+
+ }
+
+}
+
Added: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/handlerchains/AnnotatedClientExternal.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/handlerchains/AnnotatedClientExternal.java (rev 0)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/handlerchains/AnnotatedClientExternal.java 2008-06-18 12:18:22 UTC (rev 74794)
@@ -0,0 +1,37 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.metadata.annotation.client.handlerchains;
+
+import javax.jws.HandlerChain;
+import javax.xml.ws.WebServiceRef;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+ at WebServiceRef
+ at HandlerChain(file = "http://point.to.nowhere:6666/handler-chains.xml")
+public class AnnotatedClientExternal
+{
+
+}
+
Added: projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/client/handlerchains/handler-chains.xml
===================================================================
--- projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/client/handlerchains/handler-chains.xml (rev 0)
+++ projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/client/handlerchains/handler-chains.xml 2008-06-18 12:18:22 UTC (rev 74794)
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<handler-chains xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ns1="http://org.jboss.ws/jaxws/handlerscope"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee javaee_web_services_1_2.xsd">
+
+ <handler-chain>
+ <protocol-bindings>##SOAP11_HTTP</protocol-bindings>
+ <handler>
+ <handler-name> SOAP11ServerHandler </handler-name>
+ <handler-class> org.jboss.test.ws.jaxws.handlerscope.ProtocolHandler </handler-class>
+ </handler>
+ </handler-chain>
+
+ <handler-chain>
+ <protocol-bindings>##SOAP12_HTTP</protocol-bindings>
+ <handler>
+ <handler-name> SOAP12ServerHandler </handler-name>
+ <handler-class> org.jboss.test.ws.jaxws.handlerscope.ProtocolHandler </handler-class>
+ </handler>
+ </handler-chain>
+
+ <handler-chain>
+ <protocol-bindings>##SOAP11_HTTP ##SOAP12_HTTP</protocol-bindings>
+ <handler>
+ <handler-name> SOAPServerHandler </handler-name>
+ <handler-class> org.jboss.test.ws.jaxws.handlerscope.ProtocolHandler </handler-class>
+ </handler>
+ </handler-chain>
+
+ <handler-chain>
+ <service-name-pattern>ns1:SOAPEndpointService</service-name-pattern>
+ <handler>
+ <handler-name> ServiceServerHandler </handler-name>
+ <handler-class> org.jboss.test.ws.jaxws.handlerscope.ProtocolHandler </handler-class>
+ </handler>
+ </handler-chain>
+
+ <handler-chain>
+ <service-name-pattern>ns1:SOAPEndpointSer*</service-name-pattern>
+ <handler>
+ <handler-name> ServiceWildcardServerHandler </handler-name>
+ <handler-class> org.jboss.test.ws.jaxws.handlerscope.ProtocolHandler </handler-class>
+ </handler>
+ </handler-chain>
+
+ <handler-chain>
+ <service-name-pattern>ns1:InvalidService</service-name-pattern>
+ <handler>
+ <handler-name> InvalidServiceServerHandler </handler-name>
+ <handler-class> org.jboss.test.ws.jaxws.handlerscope.ProtocolHandler </handler-class>
+ </handler>
+ </handler-chain>
+
+ <handler-chain>
+ <port-name-pattern>ns1:SOAPEndpointPort</port-name-pattern>
+ <handler>
+ <handler-name> PortServerHandler </handler-name>
+ <handler-class> org.jboss.test.ws.jaxws.handlerscope.ProtocolHandler </handler-class>
+ </handler>
+ </handler-chain>
+
+ <handler-chain>
+ <port-name-pattern>ns1:SOAPEndpointPo*</port-name-pattern>
+ <handler>
+ <handler-name> PortWildcardServerHandler </handler-name>
+ <handler-class> org.jboss.test.ws.jaxws.handlerscope.ProtocolHandler </handler-class>
+ </handler>
+ </handler-chain>
+
+ <handler-chain>
+ <port-name-pattern>ns1:InvalidPort</port-name-pattern>
+ <handler>
+ <handler-name> InvalidPortServerHandler </handler-name>
+ <handler-class> org.jboss.test.ws.jaxws.handlerscope.ProtocolHandler </handler-class>
+ </handler>
+ </handler-chain>
+
+ <handler-chain>
+ <handler>
+ <handler-name> GeneralServerHandler </handler-name>
+ <handler-class> org.jboss.test.ws.jaxws.handlerscope.ProtocolHandler </handler-class>
+ </handler>
+ </handler-chain>
+
+</handler-chains>
\ No newline at end of file
More information about the jboss-cvs-commits
mailing list