[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