[jboss-cvs] JBossAS SVN: r80188 - in projects/metadata/trunk/src: main/java/org/jboss/metadata/ejb/jboss and 6 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Oct 29 08:37:49 EDT 2008
Author: emuckenhuber
Date: 2008-10-29 08:37:49 -0400 (Wed, 29 Oct 2008)
New Revision: 80188
Added:
projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/LocalBindingMetaData.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/validation/validator/ejb/jboss/LocalBindingWithNoLocalInterfaceValidator.java
Modified:
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/ejb/jboss/JBossSessionBeanMetaData.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/validation/chain/ejb/jboss/JBossMetaDataValidatorChain.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/ext/api/JBossExtApiAnnotationTestCase.java
projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/jbmeta99/PostXmlProcessingUnitTestCase.java
projects/metadata/trunk/src/test/java/org/jboss/test/metadata/jbmeta117/unit/BindingsWithNoAssociatedBusinessInterfaceTestCase.java
Log:
[JBMETA-119] add localBinding metadata
Modified: 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 2008-10-29 12:24:07 UTC (rev 80187)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/LocalBindingProcessor.java 2008-10-29 12:37:49 UTC (rev 80188)
@@ -23,6 +23,7 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.ArrayList;
import java.util.Collection;
import org.jboss.ejb3.annotation.LocalBinding;
@@ -31,8 +32,11 @@
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.LocalBindingMetaData;
/**
+ * The @LocalBinding processor.
+ *
* @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
* @version $Revision$
*/
@@ -51,9 +55,29 @@
LocalBinding annotation = finder.getAnnotation(type, LocalBinding.class);
if(annotation == null)
return;
+
+ process(metaData, type, annotation);
+ }
+
+ protected void process(JBossSessionBeanMetaData metaData, Class<?> type, LocalBinding annotation)
+ {
+ if(metaData.getLocalBindings() == null)
+ metaData.setLocalBindings(new ArrayList<LocalBindingMetaData>());
+
+ LocalBindingMetaData localBinding = createLocalBindingMetaData(type, annotation);
+ if(localBinding != null)
+ metaData.getLocalBindings().add(localBinding);
+ }
+
+ protected LocalBindingMetaData createLocalBindingMetaData(Class<?> type, LocalBinding annotation)
+ {
+ if(annotation.jndiBinding().length() == 0)
+ return null;
- if(annotation.jndiBinding() != null && annotation.jndiBinding().length() > 1)
- metaData.setLocalJndiName(annotation.jndiBinding());
+ LocalBindingMetaData metaData = new LocalBindingMetaData();
+ // set JndiName
+ metaData.setJndiName(annotation.jndiBinding());
+ return metaData;
}
public Collection<Class<? extends Annotation>> getAnnotationTypes()
Modified: 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 2008-10-29 12:24:07 UTC (rev 80187)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteBindingProcessor.java 2008-10-29 12:37:49 UTC (rev 80188)
@@ -36,6 +36,8 @@
import org.jboss.metadata.ejb.jboss.RemoteBindingMetaData;
/**
+ * The @RemoteBinding processor.
+ *
* @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
* @version $Revision$
*/
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionBeanMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionBeanMetaData.java 2008-10-29 12:24:07 UTC (rev 80187)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionBeanMetaData.java 2008-10-29 12:37:49 UTC (rev 80188)
@@ -111,6 +111,9 @@
/** Whether to call by value */
private boolean callByValue;
+ /** The local bindings */
+ private List<LocalBindingMetaData> localBindings;
+
/** The remote bindings */
private List<RemoteBindingMetaData> remoteBindings;
@@ -814,6 +817,27 @@
{
this.portComponent = portComponent;
}
+
+ /**
+ * Get the local bindings
+ *
+ * @return the localBindings
+ */
+ public List<LocalBindingMetaData> getLocalBindings()
+ {
+ return localBindings;
+ }
+
+ /**
+ * Set the local bindings.
+ *
+ * @param the localBindings
+ */
+ // @XmlElement(name = "local-binding", required = false)
+ public void setLocalBindings(List<LocalBindingMetaData> localBindings)
+ {
+ this.localBindings = localBindings;
+ }
/**
* Get the remoteBinding.
@@ -1048,6 +1072,11 @@
securityRoleRefs = joverride.getSecurityRoleRefs();
else if(soriginal != null && soriginal.getSecurityRoleRefs() != null)
securityRoleRefs = soriginal.getSecurityRoleRefs();
+ // localBindings
+ if(joverride != null && joverride.getLocalBindings() != null)
+ localBindings = joverride.getLocalBindings();
+ else if(soriginal != null && soriginal.getLocalBindings() != null)
+ localBindings = soriginal.getLocalBindings();
// remoteBindings
if(joverride != null && joverride.getRemoteBindings() != null)
remoteBindings = joverride.getRemoteBindings();
Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/LocalBindingMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/LocalBindingMetaData.java (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/LocalBindingMetaData.java 2008-10-29 12:37:49 UTC (rev 80188)
@@ -0,0 +1,65 @@
+/*
+ * 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.ejb.jboss;
+
+import org.jboss.metadata.javaee.support.IdMetaDataImplWithDescriptions;
+
+/**
+ * LocalBindingMetaData
+ *
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+//@XmlType(name="local-bindingType")
+public class LocalBindingMetaData extends IdMetaDataImplWithDescriptions
+{
+
+ /** The serialVersionUID */
+ private static final long serialVersionUID = 8742751094401901120L;
+
+ /** The jndi name */
+ private String jndiName;
+
+ /**
+ * Get the jndiName.
+ *
+ * @return the jndiName.
+ */
+ public String getJndiName()
+ {
+ return jndiName;
+ }
+
+ /**
+ * Set the jndiName.
+ *
+ * @param jndiName the jndiName.
+ * @throws IllegalArgumentException for a null jndiName
+ */
+ public void setJndiName(String jndiName)
+ {
+ if (jndiName == null)
+ throw new IllegalArgumentException("Null jndiName");
+ this.jndiName = jndiName;
+ }
+
+}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/validation/chain/ejb/jboss/JBossMetaDataValidatorChain.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/validation/chain/ejb/jboss/JBossMetaDataValidatorChain.java 2008-10-29 12:24:07 UTC (rev 80187)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/validation/chain/ejb/jboss/JBossMetaDataValidatorChain.java 2008-10-29 12:37:49 UTC (rev 80188)
@@ -33,6 +33,7 @@
import org.jboss.metadata.validation.chain.ValidatorChainException;
import org.jboss.metadata.validation.validator.Validator;
import org.jboss.metadata.validation.validator.ejb.jboss.CompleteEjb2xViewValidator;
+import org.jboss.metadata.validation.validator.ejb.jboss.LocalBindingWithNoLocalInterfaceValidator;
import org.jboss.metadata.validation.validator.ejb.jboss.RemoteBindingsWithNoRemoteBusinessInterfaceValidator;
/**
@@ -173,6 +174,8 @@
* Add all default validators
*/
+ // JBMETA-117 No @LocalBindings if there's no local business interface
+ defaultValidators.add(LocalBindingWithNoLocalInterfaceValidator.INSTANCE);
// JBMETA-117 No @RemoteBindings if there's no remote business interface
defaultValidators.add(RemoteBindingsWithNoRemoteBusinessInterfaceValidator.INSTANCE);
// JBMETA-130 Complete EJB2.x View
Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/validation/validator/ejb/jboss/LocalBindingWithNoLocalInterfaceValidator.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/validation/validator/ejb/jboss/LocalBindingWithNoLocalInterfaceValidator.java (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/validation/validator/ejb/jboss/LocalBindingWithNoLocalInterfaceValidator.java 2008-10-29 12:37:49 UTC (rev 80188)
@@ -0,0 +1,58 @@
+/*
+ * 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.validation.validator.ejb.jboss;
+
+import org.jboss.ejb3.annotation.LocalBinding;
+import org.jboss.metadata.common.spi.ErrorCodes;
+import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
+import org.jboss.metadata.validation.ValidationException;
+import org.jboss.metadata.validation.validator.ejb.JBossEjb3SessionBeanValidatorBase;
+
+/**
+ * Validate if the Bean has local-binding, but no local business interfaces [JBMETA-117].
+ *
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public class LocalBindingWithNoLocalInterfaceValidator extends JBossEjb3SessionBeanValidatorBase
+{
+ /** The error code */
+ String errorCode = ErrorCodes.ERROR_CODE_JBMETA117;
+
+ /** The instance. */
+ public static final LocalBindingWithNoLocalInterfaceValidator INSTANCE = new LocalBindingWithNoLocalInterfaceValidator();
+
+ @Override
+ protected void validate(JBossSessionBeanMetaData smd) throws ValidationException
+ {
+ // If this bean has a locaBinding but no local business interfaces defined
+ if(smd.getLocalBindings() != null && ! smd.getLocalBindings().isEmpty())
+ {
+ if(smd.getBusinessLocals() == null || smd.getBusinessLocals().isEmpty())
+ {
+ // Fail
+ throw new ValidationException("A @" + LocalBinding.class.getSimpleName() + " was defined on EJB "
+ + smd.getName() + ", but this bean has no local business interfaces defined. [" + errorCode + "]");
+ }
+ }
+ }
+}
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-10-29 12:24:07 UTC (rev 80187)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/JBossAnnotationEjb3UnitTestCase.java 2008-10-29 12:37:49 UTC (rev 80188)
@@ -59,6 +59,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.LocalBindingMetaData;
import org.jboss.metadata.ejb.jboss.ProducerMetaData;
import org.jboss.metadata.ejb.jboss.RemoteBindingMetaData;
import org.jboss.metadata.ejb.spec.ActivationConfigMetaData;
@@ -782,7 +783,9 @@
assertEquals(Timer.class.getName(), parameters.get(0));
// @LocalBinding
- assertEquals("LocalJndiBinding", bean.getLocalJndiName());
+ assertNotNull(bean.getLocalBindings());
+ LocalBindingMetaData localBinding = bean.getLocalBindings().get(0);
+ assertEquals("LocalJndiBinding", localBinding.getJndiName());
// @RemoteBinding
assertNotNull(bean.getRemoteBindings());
Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/ext/api/JBossExtApiAnnotationTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/ext/api/JBossExtApiAnnotationTestCase.java 2008-10-29 12:24:07 UTC (rev 80187)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/ext/api/JBossExtApiAnnotationTestCase.java 2008-10-29 12:37:49 UTC (rev 80188)
@@ -35,6 +35,7 @@
import org.jboss.metadata.ejb.jboss.JBossConsumerBeanMetaData;
import org.jboss.metadata.ejb.jboss.JBossServiceBeanMetaData;
import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
+import org.jboss.metadata.ejb.jboss.LocalBindingMetaData;
import org.jboss.metadata.ejb.jboss.PoolConfigMetaData;
import org.jboss.metadata.ejb.jboss.ProducerMetaData;
import org.jboss.metadata.ejb.jboss.RemoteBindingMetaData;
@@ -93,8 +94,12 @@
assertNotNull(remoteBinding);
assertEquals("testServiceJndiRemoteBinding", remoteBinding.getJndiName());
+ // @LocalBinding
+ assertNotNull(bean.getLocalBindings());
+ LocalBindingMetaData localBinding = bean.getLocalBindings().get(0);
+ assertEquals("localBinding", localBinding.getJndiName());
+
assertEquals("localHomeBinding", bean.getLocalHomeJndiName());
- assertEquals("localBinding", bean.getLocalJndiName());
assertEquals("remoteHomeBinding", bean.getHomeJndiName());
// @CacheConfig
@@ -162,15 +167,19 @@
// @SerializedConcurrentAccess
assertEquals(Boolean.TRUE, bean.isConcurrent());
+ // @LocalBinding
+ assertNotNull(bean.getLocalBindings());
+ LocalBindingMetaData localBinding = bean.getLocalBindings().get(0);
+ assertEquals("localBinding", localBinding.getJndiName());
+
//@RemoteBindings
assertNotNull(bean.getRemoteBindings());
RemoteBindingMetaData remoteBinding = bean.getRemoteBindings().get(0);
assertNotNull(remoteBinding);
assertEquals("testStatefulJndiRemoteBinding", remoteBinding.getJndiName());
+ assertEquals("remoteHomeBinding", bean.getHomeJndiName());
assertEquals("localHomeBinding", bean.getLocalHomeJndiName());
- assertEquals("localBinding", bean.getLocalJndiName());
- assertEquals("remoteHomeBinding", bean.getHomeJndiName());
}
private void assertOtherServiceBean(IEnterpriseBeanMetaData enterpriseBean)
Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/jbmeta99/PostXmlProcessingUnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/jbmeta99/PostXmlProcessingUnitTestCase.java 2008-10-29 12:24:07 UTC (rev 80187)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/jbmeta99/PostXmlProcessingUnitTestCase.java 2008-10-29 12:37:49 UTC (rev 80188)
@@ -42,6 +42,7 @@
import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
import org.jboss.metadata.ejb.jboss.JBossMessageDrivenBeanMetaData;
import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
+import org.jboss.metadata.ejb.jboss.LocalBindingMetaData;
import org.jboss.metadata.ejb.jboss.RemoteBindingMetaData;
import org.jboss.metadata.ejb.spec.ActivationConfigMetaData;
import org.jboss.metadata.ejb.spec.ActivationConfigPropertiesMetaData;
@@ -471,7 +472,9 @@
assertEquals(Timer.class.getName(), parameters.get(0));
// @LocalBinding
- assertEquals("LocalJndiBinding", bean.getLocalJndiName());
+ assertNotNull(bean.getLocalBindings());
+ LocalBindingMetaData localBinding = bean.getLocalBindings().get(0);
+ assertEquals("LocalJndiBinding", localBinding.getJndiName());
// @RemoteBinding
assertNotNull(bean.getRemoteBindings());
Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/jbmeta117/unit/BindingsWithNoAssociatedBusinessInterfaceTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/jbmeta117/unit/BindingsWithNoAssociatedBusinessInterfaceTestCase.java 2008-10-29 12:24:07 UTC (rev 80187)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/jbmeta117/unit/BindingsWithNoAssociatedBusinessInterfaceTestCase.java 2008-10-29 12:37:49 UTC (rev 80188)
@@ -35,6 +35,7 @@
import org.jboss.metadata.ejb.jboss.JBoss50MetaData;
import org.jboss.metadata.process.processor.ejb.jboss.JBossMetaDataValidatorChainProcessor;
import org.jboss.metadata.validation.ValidationException;
+import org.jboss.test.metadata.jbmeta117.TestBeanWithLocalBindingButNoLocalBusinessInterface;
import org.jboss.test.metadata.jbmeta117.TestBeanWithRemoteBindingButNoRemoteBusinessInterface;
/**
@@ -60,16 +61,14 @@
// Tests -------------------------------------------------------------||
// -------------------------------------------------------------------||
- //FIXME
- // We need a Validator for @LocalBinding w/ no local business interfaces
- // /**
- // * Tests that an EJB declaring a @LocalBinding with no
- // * local business interface fails creation
- // */
- // public void testLocalBindingNoLocalBusinessInterface() throws Throwable
- // {
- // this.testFailsCreation(TestBeanWithLocalBindingButNoLocalBusinessInterface.class);
- // }
+ /**
+ * Tests that an EJB declaring a @LocalBinding with no
+ * local business interface fails creation
+ */
+ public void testLocalBindingNoLocalBusinessInterface() throws Throwable
+ {
+ this.testFailsCreation(TestBeanWithLocalBindingButNoLocalBusinessInterface.class);
+ }
/**
* Tests that an EJB declaring a @RemoteBinding with no
More information about the jboss-cvs-commits
mailing list