[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