[jboss-cvs] JBossAS SVN: r74145 - in projects/metadata/trunk/src: main/java/org/jboss/metadata/annotation/creator/jboss and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Jun 5 12:31:18 EDT 2008
Author: scott.stark at jboss.org
Date: 2008-06-05 12:31:18 -0400 (Thu, 05 Jun 2008)
New Revision: 74145
Added:
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractWebServiceRefProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefFieldProcessor.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
projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/AnnotationClientUnitTestCase.java
Log:
JBMETA-44, Stub out WebServiceRef processing
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-05 15:25:20 UTC (rev 74144)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractComponentProcessor.java 2008-06-05 16:31:18 UTC (rev 74145)
@@ -46,7 +46,6 @@
/**
* A base javaee component processor.
* @param MD - the component metadata type
- * @parma E - the component jndi environment references group type
*
* @author Scott.Stark at jboss.org
* @version $Revision$
@@ -93,6 +92,8 @@
// @PostConstruct/@PreDestroy
addMethodProcessor(new PostConstructMethodProcessor(finder));
addMethodProcessor(new PreDestroyMethodProcessor(finder));
+ // @WebServiceRef
+ addFieldProcessor(new WebServiceRefFieldProcessor(finder));
}
public void addFieldProcessor(Processor processor)
Added: 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 (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractWebServiceRefProcessor.java 2008-06-05 16:31:18 UTC (rev 74145)
@@ -0,0 +1,116 @@
+/*
+ * 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());
+
+ 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/WebServiceRefFieldProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefFieldProcessor.java (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefFieldProcessor.java 2008-06-05 16:31:18 UTC (rev 74145)
@@ -0,0 +1,69 @@
+/*
+ * 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();
+ }
+
+}
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-05 15:25:20 UTC (rev 74144)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/jboss/AbstractComponentProcessor.java 2008-06-05 16:31:18 UTC (rev 74145)
@@ -48,6 +48,7 @@
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.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossEnvironmentRefsGroupMetaData;
import org.jboss.metadata.javaee.jboss.JBossServiceReferencesMetaData;
@@ -59,9 +60,8 @@
import org.jboss.metadata.javaee.spec.ServiceReferencesMetaData;
/**
- * A base javaee component processor.
+ * A base ejb component processor.
* @param MD - the component metadata type
- * @parma E - the component jndi environment references group type
*
* @author Scott.Stark at jboss.org
* @version $Revision: 72364 $
@@ -108,6 +108,8 @@
// @PostConstruct/@PreDestroy
addMethodProcessor(new PostConstructMethodProcessor(finder));
addMethodProcessor(new PreDestroyMethodProcessor(finder));
+ // @WebServiceRef
+ addFieldProcessor(new WebServiceRefFieldProcessor(finder));
}
public void addFieldProcessor(Processor processor)
Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/AnnotationClientUnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/AnnotationClientUnitTestCase.java 2008-06-05 15:25:20 UTC (rev 74144)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/AnnotationClientUnitTestCase.java 2008-06-05 16:31:18 UTC (rev 74145)
@@ -22,6 +22,7 @@
package org.jboss.test.metadata.annotation.client;
import java.lang.reflect.AnnotatedElement;
+import java.lang.reflect.Field;
import java.util.Collection;
import java.util.Set;
@@ -44,7 +45,9 @@
import org.jboss.metadata.javaee.spec.ResourceEnvironmentReferenceMetaData;
import org.jboss.metadata.javaee.spec.ResourceInjectionTargetMetaData;
import org.jboss.metadata.javaee.spec.ResourceReferenceMetaData;
+import org.jboss.metadata.javaee.spec.ServiceReferenceMetaData;
import org.jboss.test.metadata.annotation.client.basic.Client;
+import org.jboss.test.metadata.annotation.client.basic.DefaultWebServiceService;
import org.jboss.test.metadata.annotation.client.basic.ResourceIF;
import org.jboss.test.metadata.common.PackageScanner;
import org.jboss.test.metadata.common.ScanPackage;
@@ -183,7 +186,19 @@
LifecycleCallbackMetaData pd = preDestroys.get(0);
assertEquals(Client.class.getName(), pd.getClassName());
assertEquals("destroy", pd.getMethodName());
+
+ // @WebServiceRef
+ ServiceReferenceMetaData wsRef = clientMD.getServiceReferenceByName("service/somewebservice");
+ assertNotNull(wsRef);
+ Field wsRefField = Client.class.getDeclaredField("service");
+ assertEquals(wsRefField, wsRef.getAnnotatedElement());
+ assertEquals(DefaultWebServiceService.class.getName(), wsRef.getServiceRefType());
+ Set<ResourceInjectionTargetMetaData> wsRefTargets = wsRef.getInjectionTargets();
+ ResourceInjectionTargetMetaData wsRefFieldTarget = wsRefTargets.iterator().next();
+ assertEquals(Client.class.getName(), wsRefFieldTarget.getInjectionTargetClass());
+ assertEquals("service", wsRefFieldTarget.getInjectionTargetName());
}
+
@ScanPackage("org.jboss.test.metadata.annotation.client.basic")
public void testXmlMerge()
throws Exception
More information about the jboss-cvs-commits
mailing list