[jboss-cvs] JBossAS SVN: r74627 - in projects/metadata/trunk/src: main/java/org/jboss/metadata/javaee/spec and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Jun 16 12:19:05 EDT 2008


Author: emuckenhuber
Date: 2008-06-16 12:19:05 -0400 (Mon, 16 Jun 2008)
New Revision: 74627

Added:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefClassProcessor.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/ResourceMethodProcessor.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/ServiceReferenceMetaData.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/AnnotationWebUnitTestCase.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/MyServlet.java
Log:
[JBMETA-44] WebServiceRef(s) 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-16 15:19:07 UTC (rev 74626)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractComponentProcessor.java	2008-06-16 16:19:05 UTC (rev 74627)
@@ -93,7 +93,10 @@
       addMethodProcessor(new PostConstructMethodProcessor(finder));
       addMethodProcessor(new PreDestroyMethodProcessor(finder));
       // @WebServiceRef
-      addFieldProcessor(new WebServiceRefFieldProcessor(finder));     
+      addMethodProcessor(new WebServiceRefMethodProcessor(finder));
+      addFieldProcessor(new WebServiceRefFieldProcessor(finder));  
+      addTypeProcessor(new WebServiceRefClassProcessor(finder));
+      addTypeProcessor(new WebServiceRefsClassProcessor(finder));
    }
 
    public void addFieldProcessor(Processor processor)

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ResourceMethodProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ResourceMethodProcessor.java	2008-06-16 15:19:07 UTC (rev 74626)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ResourceMethodProcessor.java	2008-06-16 16:19:05 UTC (rev 74627)
@@ -25,7 +25,6 @@
 import java.lang.reflect.Method;
 
 import org.jboss.metadata.annotation.finder.AnnotationFinder;
-import org.jboss.metadata.javaee.spec.EnvironmentRefsGroupMetaData;
 import org.jboss.metadata.javaee.spec.RemoteEnvironmentRefsGroupMetaData;
 
 /**
@@ -67,6 +66,9 @@
    @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

Added: 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	                        (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefClassProcessor.java	2008-06-16 16:19:05 UTC (rev 74627)
@@ -0,0 +1,68 @@
+/*
+ * 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();
+   }
+
+}

Added: 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	                        (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefMethodProcessor.java	2008-06-16 16:19:05 UTC (rev 74627)
@@ -0,0 +1,79 @@
+/*
+ * 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();
+   }
+}

Added: 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	                        (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/WebServiceRefsClassProcessor.java	2008-06-16 16:19:05 UTC (rev 74627)
@@ -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;
+
+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/javaee/spec/ServiceReferenceMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/ServiceReferenceMetaData.java	2008-06-16 15:19:07 UTC (rev 74626)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/ServiceReferenceMetaData.java	2008-06-16 16:19:05 UTC (rev 74627)
@@ -136,6 +136,10 @@
          setHandlerChains(override.getHandlerChains());
       else if (original != null && original.getHandlerChains() != null)
          setHandlerChains(original.getHandlerChains());
+      if(override != null && override.getAnnotatedElement() != null)
+         setAnnotatedElement(override.getAnnotatedElement());
+      else if(original != null && original.getAnnotatedElement() != null)
+         setAnnotatedElement(original.getAnnotatedElement());
    }
 
    /**

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/AnnotationWebUnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/AnnotationWebUnitTestCase.java	2008-06-16 15:19:07 UTC (rev 74626)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/AnnotationWebUnitTestCase.java	2008-06-16 16:19:05 UTC (rev 74627)
@@ -46,6 +46,8 @@
 import org.jboss.metadata.javaee.spec.RunAsMetaData;
 import org.jboss.metadata.javaee.spec.SecurityRoleMetaData;
 import org.jboss.metadata.javaee.spec.SecurityRolesMetaData;
+import org.jboss.metadata.javaee.spec.ServiceReferenceMetaData;
+import org.jboss.metadata.javaee.spec.ServiceReferencesMetaData;
 import org.jboss.metadata.web.jboss.JBoss50DTDWebMetaData;
 import org.jboss.metadata.web.jboss.JBossServletMetaData;
 import org.jboss.metadata.web.jboss.JBossWebMetaData;
@@ -54,6 +56,8 @@
 import org.jboss.metadata.web.spec.Web25MetaData;
 import org.jboss.metadata.web.spec.WebMetaData;
 import org.jboss.test.metadata.annotation.ejb3.MyStatelessLocal;
+import org.jboss.test.metadata.annotation.ws.TestEndpoint;
+import org.jboss.test.metadata.annotation.ws.TestEndpointService;
 import org.jboss.test.metadata.javaee.AbstractJavaEEEverythingTest;
 import org.jboss.xb.binding.sunday.unmarshalling.DefaultSchemaResolver;
 import org.jboss.xb.binding.sunday.unmarshalling.SchemaBindingResolver;
@@ -83,7 +87,7 @@
       return resolver;
    }
 
-   private void assertEnv(EnvironmentRefsGroupMetaData env)
+   private void assertEnv(EnvironmentRefsGroupMetaData env) throws Exception
    {
       // @EJB
       AnnotatedEJBReferencesMetaData ejbRefs = env.getAnnotatedEjbReferences();
@@ -152,6 +156,68 @@
       MessageDestinationReferenceMetaData mailQueue = msgRefs.get("mailQueue");
       assertNotNull(mailQueue);
       assertEquals("javax.jms.Queue", mailQueue.getType());
+      
+      // WebServiceRef(s)
+      ServiceReferencesMetaData serviceRefs = env.getServiceReferences();
+      assertNotNull(serviceRefs);
+      assertEquals(5, serviceRefs.size());
+      
+      ServiceReferenceMetaData serviceRef1 = serviceRefs.get("service2");
+      assertNotNull(serviceRef1);
+      assertEquals(TestEndpointService.class.getName(), serviceRef1.getServiceInterface());
+      assertEquals(MyServlet.class.getName(), serviceRef1.getServiceRefType());
+      assertNull(serviceRef1.getInjectionTargets());
+      
+      ServiceReferenceMetaData serviceRef2 = serviceRefs.get("port1");
+      assertNotNull(serviceRef2);
+      assertEquals(TestEndpointService.class.getName(), serviceRef2.getServiceInterface());
+      assertEquals(TestEndpoint.class.getName(), serviceRef2.getServiceRefType());
+      assertNull(serviceRef2.getInjectionTargets());
+      
+      ServiceReferenceMetaData serviceRef3 = serviceRefs.get("service");
+      assertNotNull(serviceRef3);
+      assertEquals(MyServlet.class.getDeclaredField("service"), serviceRef3.getAnnotatedElement());
+      
+      assertEquals(TestEndpointService.class.getName(), serviceRef3.getServiceInterface());
+      assertEquals(TestEndpointService.class.getName(), serviceRef3.getServiceRefType());
+      //InjectionTarget on a FIELD
+      Set<ResourceInjectionTargetMetaData> injectionTargets3 = serviceRef3.getInjectionTargets();
+      assertNotNull(injectionTargets3);
+      assertEquals(1, injectionTargets3.size());
+      ResourceInjectionTargetMetaData injectionTarget = new ResourceInjectionTargetMetaData();
+      injectionTarget.setInjectionTargetClass(MyServlet.class.getName());
+      injectionTarget.setInjectionTargetName("service");
+      assertTrue(injectionTargets3.contains(injectionTarget));
+      
+      ServiceReferenceMetaData serviceRef4 = serviceRefs.get("endpoint");
+      assertNotNull(serviceRef4);
+      assertEquals(MyServlet.class.getDeclaredField("endpoint"), serviceRef4.getAnnotatedElement());
+      assertEquals(TestEndpoint.class.getName(), serviceRef4.getServiceInterface());
+      assertEquals(TestEndpoint.class.getName(), serviceRef4.getServiceRefType());
+      //InjectionTarget on a FIELD
+      Set<ResourceInjectionTargetMetaData> injectionTargets4 = serviceRef4.getInjectionTargets();
+      assertNotNull(injectionTargets4);
+      assertEquals(1, injectionTargets4.size());
+      injectionTarget = new ResourceInjectionTargetMetaData();
+      injectionTarget.setInjectionTargetClass(MyServlet.class.getName());
+      injectionTarget.setInjectionTargetName("endpoint");
+      assertTrue(injectionTargets4.contains(injectionTarget));
+      
+      ServiceReferenceMetaData serviceRef5 = serviceRefs.get("anotherWebRef");
+      assertNotNull(serviceRef5);
+      assertEquals(TestEndpoint.class.getName(), serviceRef5.getServiceInterface());
+      assertEquals(TestEndpoint.class.getName(), serviceRef5.getServiceRefType());
+      //InjectionTarget on a METHOD
+      Set<ResourceInjectionTargetMetaData> injectionTargets5 = serviceRef5.getInjectionTargets();
+      assertNotNull(injectionTargets5);
+      assertEquals(1, injectionTargets5.size());
+      injectionTarget = new ResourceInjectionTargetMetaData();
+      injectionTarget.setInjectionTargetClass(MyServlet.class.getName());
+      injectionTarget.setInjectionTargetName("setAnotherWebRef");
+      assertTrue(injectionTargets5.contains(injectionTarget));
+      
+      
+      
    }
 
    public void testAnnotationMergedViewWithNoXml()

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/MyServlet.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/MyServlet.java	2008-06-16 15:19:07 UTC (rev 74626)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/MyServlet.java	2008-06-16 16:19:05 UTC (rev 74627)
@@ -108,4 +108,10 @@
    public void tearDown()
    {
    }
+   
+   @WebServiceRef
+   public void setAnotherWebRef(TestEndpoint anotherEndpoint)
+   {
+      
+   }
 }




More information about the jboss-cvs-commits mailing list