[jboss-cvs] JBossAS SVN: r74785 - in projects/metadata/trunk/src: test/java/org/jboss/test/metadata/annotation/ejb3 and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jun 18 06:14:27 EDT 2008


Author: emuckenhuber
Date: 2008-06-18 06:14:27 -0400 (Wed, 18 Jun 2008)
New Revision: 74785

Added:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/LocalBindingProcessor.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteBindingProcessor.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteBindingsProcessor.java
Modified:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractSessionBeanProcessor.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/JBossAnnotationEjb3UnitTestCase.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MyStatefulBean.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MyStatelessBean.java
Log:
[JBMETA-45] local/remote-binding annotation processing

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractSessionBeanProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractSessionBeanProcessor.java	2008-06-18 09:58:49 UTC (rev 74784)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractSessionBeanProcessor.java	2008-06-18 10:14:27 UTC (rev 74785)
@@ -56,6 +56,9 @@
       addTypeProcessor(new RemoteProcessor(finder));
       addTypeProcessor(new RemoteHomeProcessor(finder));
       addTypeProcessor(new ImplicitLocalProcessor(finder));
+      addTypeProcessor(new LocalBindingProcessor(finder));
+      addTypeProcessor(new RemoteBindingProcessor(finder));
+      addTypeProcessor(new RemoteBindingsProcessor(finder));
 
       addMethodProcessor(new InitProcessor(finder));
       addMethodProcessor(new TimeoutProcessor(finder));

Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/LocalBindingProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/LocalBindingProcessor.java	                        (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/LocalBindingProcessor.java	2008-06-18 10:14:27 UTC (rev 74785)
@@ -0,0 +1,56 @@
+/*
+ * 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.ejb.jboss;
+
+import java.lang.reflect.AnnotatedElement;
+
+import org.jboss.ejb3.annotation.LocalBinding;
+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.ejb.jboss.JBossSessionBeanMetaData;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public class LocalBindingProcessor
+      extends AbstractFinderUser
+      implements Processor<JBossSessionBeanMetaData, Class<?>>
+{
+
+   protected LocalBindingProcessor(AnnotationFinder<AnnotatedElement> finder)
+   {
+      super(finder);
+   }
+
+   public void process(JBossSessionBeanMetaData metaData, Class<?> type)
+   {
+      LocalBinding annotation = finder.getAnnotation(type, LocalBinding.class);
+      if(annotation == null)
+         return;
+
+      if(annotation.jndiBinding() != null && annotation.jndiBinding().length() > 1)
+         metaData.setLocalJndiName(annotation.jndiBinding());
+   }
+
+}

Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteBindingProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteBindingProcessor.java	                        (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteBindingProcessor.java	2008-06-18 10:14:27 UTC (rev 74785)
@@ -0,0 +1,85 @@
+/*
+ * 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.ejb.jboss;
+
+import java.lang.reflect.AnnotatedElement;
+import java.util.ArrayList;
+
+import org.jboss.annotation.javaee.Descriptions;
+import org.jboss.ejb3.annotation.RemoteBinding;
+import org.jboss.metadata.annotation.creator.AbstractFinderUser;
+import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
+import org.jboss.metadata.ejb.jboss.RemoteBindingMetaData;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public class RemoteBindingProcessor
+      extends AbstractFinderUser
+      implements Processor<JBossSessionBeanMetaData, Class<?>>
+{
+
+   protected RemoteBindingProcessor(AnnotationFinder<AnnotatedElement> finder)
+   {
+      super(finder);
+   }
+
+   public void process(JBossSessionBeanMetaData metaData, Class<?> type)
+   {
+      RemoteBinding annotation = finder.getAnnotation(type, RemoteBinding.class);
+      if (annotation == null)
+         return;
+
+      process(metaData, type, annotation);
+   }
+
+   public void process(JBossSessionBeanMetaData metaData, Class<?> type, RemoteBinding annotation)
+   {
+      if (metaData.getRemoteBindings() == null)
+      {
+         metaData.setRemoteBindings(new ArrayList<RemoteBindingMetaData>());
+      }
+
+      RemoteBindingMetaData remote = createBindingMetaData(type, annotation);
+      metaData.getRemoteBindings().add(remote);
+   }
+
+   protected RemoteBindingMetaData createBindingMetaData(Class<?> type, RemoteBinding annotation)
+   {
+      RemoteBindingMetaData remote = new RemoteBindingMetaData();
+
+      remote.setJndiName(annotation.jndiBinding());
+      remote.setClientBindUrl(annotation.clientBindUrl());
+      remote.setInterceptorStack(annotation.interceptorStack());
+      remote.setProxyFactory(annotation.factory());
+
+      Descriptions descriptions = ProcessorUtils.getDescription(" @RemoteBinding for class " + type.getSimpleName());
+      remote.setDescriptions(descriptions);
+
+      return remote;
+   }
+
+}

Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteBindingsProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteBindingsProcessor.java	                        (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteBindingsProcessor.java	2008-06-18 10:14:27 UTC (rev 74785)
@@ -0,0 +1,57 @@
+/*
+ * 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.ejb.jboss;
+
+import java.lang.reflect.AnnotatedElement;
+
+import org.jboss.ejb3.annotation.RemoteBinding;
+import org.jboss.ejb3.annotation.RemoteBindings;
+import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public class RemoteBindingsProcessor
+   extends RemoteBindingProcessor
+   implements Processor<JBossSessionBeanMetaData, Class<?>>
+{
+
+   protected RemoteBindingsProcessor(AnnotationFinder<AnnotatedElement> finder)
+   {
+      super(finder);
+   }
+
+   @Override
+   public void process(JBossSessionBeanMetaData metaData, Class<?> type)
+   {
+      RemoteBindings annotation = finder.getAnnotation(type, RemoteBindings.class);
+      if(annotation == null)
+         return;
+      
+      for(RemoteBinding remoteBinding : annotation.value())
+         process(metaData, type, remoteBinding);
+   }
+}
+

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/JBossAnnotationEjb3UnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/JBossAnnotationEjb3UnitTestCase.java	2008-06-18 09:58:49 UTC (rev 74784)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/JBossAnnotationEjb3UnitTestCase.java	2008-06-18 10:14:27 UTC (rev 74785)
@@ -36,6 +36,7 @@
 import javax.ejb.Timer;
 import javax.ejb.TransactionAttributeType;
 
+import org.jboss.ejb3.annotation.RemoteBinding;
 import org.jboss.metadata.annotation.creator.ejb.jboss.JBoss50Creator;
 import org.jboss.metadata.annotation.finder.AnnotationFinder;
 import org.jboss.metadata.annotation.finder.DefaultAnnotationFinder;
@@ -51,6 +52,7 @@
 import org.jboss.metadata.ejb.jboss.JBossMetaData;
 import org.jboss.metadata.ejb.jboss.JBossServiceBeanMetaData;
 import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
+import org.jboss.metadata.ejb.jboss.RemoteBindingMetaData;
 import org.jboss.metadata.ejb.spec.ActivationConfigMetaData;
 import org.jboss.metadata.ejb.spec.ActivationConfigPropertiesMetaData;
 import org.jboss.metadata.ejb.spec.ActivationConfigPropertyMetaData;
@@ -601,6 +603,25 @@
       assertEquals(1, removeMethods.size());
       RemoveMethodMetaData removeMethod = removeMethods.get(0);
       assertEquals("remove", removeMethod.getBeanMethod().getMethodName());
+      
+      // @RemoteBindings
+      assertNotNull(bean.getRemoteBindings());
+      assertEquals(3, bean.getRemoteBindings().size());
+      RemoteBindingMetaData remoteBinding = bean.getRemoteBindings().get(0);
+      assertNotNull(remoteBinding);
+      assertEquals("jndiBind3", remoteBinding.getJndiName());
+      remoteBinding = bean.getRemoteBindings().get(1);
+      assertNotNull(remoteBinding);
+      assertEquals("clientBind1", remoteBinding.getClientBindUrl());
+      assertEquals("stack1", remoteBinding.getInterceptorStack());
+      assertEquals("factory1", remoteBinding.getProxyFactory());
+      assertEquals("RemoteBinding1", remoteBinding.getJndiName());
+      remoteBinding = bean.getRemoteBindings().get(2);
+      assertNotNull(remoteBinding);
+      assertEquals("clientBind2", remoteBinding.getClientBindUrl());
+      assertEquals("stack2", remoteBinding.getInterceptorStack());
+      assertEquals("factory2", remoteBinding.getProxyFactory());
+      assertEquals("RemoteBinding2", remoteBinding.getJndiName());
    }
 
    private void assertMyStateless21Bean(IEnterpriseBeanMetaData enterpriseBean)
@@ -686,6 +707,19 @@
       MethodParametersMetaData parameters = timeoutMethod.getMethodParams();
       assertEquals(1, parameters.size());
       assertEquals(Timer.class.getName(), parameters.get(0));
+      
+      // @LocalBinding
+      assertEquals("LocalJndiBinding", bean.getLocalJndiName());
+      
+      // @RemoteBinding
+      assertNotNull(bean.getRemoteBindings());
+      assertEquals(1, bean.getRemoteBindings().size());
+      RemoteBindingMetaData remoteBinding = bean.getRemoteBindings().get(0);
+      assertNotNull(remoteBinding);
+      assertEquals("clientBind", remoteBinding.getClientBindUrl());
+      assertEquals("stack", remoteBinding.getInterceptorStack());
+      assertEquals("factory", remoteBinding.getProxyFactory());
+      assertEquals("RemoteBinding", remoteBinding.getJndiName());
    }
 
    private void assertMyEntity(IEnterpriseBeanMetaData enterpriseBean)

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MyStatefulBean.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MyStatefulBean.java	2008-06-18 09:58:49 UTC (rev 74784)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MyStatefulBean.java	2008-06-18 10:14:27 UTC (rev 74785)
@@ -33,6 +33,9 @@
 import javax.ejb.Remove;
 import javax.ejb.Stateful;
 
+import org.jboss.ejb3.annotation.RemoteBinding;
+import org.jboss.ejb3.annotation.RemoteBindings;
+
 /**
  * Comment
  *
@@ -43,6 +46,13 @@
 @Stateful(name="AnotherName")
 @Remote(MyStateful.class)
 @RemoteHome(MyStatefulHome.class)
+ at RemoteBindings(
+      value = {
+            @RemoteBinding(clientBindUrl = "clientBind1", interceptorStack = "stack1", factory = "factory1", jndiBinding = "RemoteBinding1"),
+            @RemoteBinding(clientBindUrl = "clientBind2", interceptorStack = "stack2", factory = "factory2", jndiBinding = "RemoteBinding2")
+         }
+)
+ at RemoteBinding(jndiBinding = "jndiBind3")
 @EJBs(
       value={
             @EJB(name="ejb/local1", beanInterface=MyStatelessLocal.class,

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MyStatelessBean.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MyStatelessBean.java	2008-06-18 09:58:49 UTC (rev 74784)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MyStatelessBean.java	2008-06-18 10:14:27 UTC (rev 74785)
@@ -47,6 +47,10 @@
 import javax.jms.Queue;
 import javax.sql.DataSource;
 
+import org.jboss.ejb3.annotation.LocalBinding;
+import org.jboss.ejb3.annotation.RemoteBinding;
+import org.jboss.ejb3.annotation.RemoteBindings;
+
 /**
  * Comment
  *
@@ -57,6 +61,8 @@
 @SuppressWarnings("unused")
 @Stateless
 @TransactionAttribute(TransactionAttributeType.NEVER)
+ at LocalBinding(jndiBinding = "LocalJndiBinding")
+ at RemoteBinding(clientBindUrl = "clientBind", interceptorStack = "stack", factory = "factory", jndiBinding = "RemoteBinding")
 @Resources({
    @Resource(description="url-resource-ref", name="googleHome", type=java.net.URL.class, mappedName="http://www.google.com"),
    @Resource(description="DataSource-resource-ref", name="jdbc/ds", type=DataSource.class, mappedName="java:/DefaultDS")




More information about the jboss-cvs-commits mailing list