[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