[jboss-cvs] JBossAS SVN: r93528 - in projects/ejb3/trunk/core/src: test/java/org/jboss/ejb3/core/test/ejbthree1914/unit and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Sep 15 08:07:28 EDT 2009


Author: wolfc
Date: 2009-09-15 08:07:28 -0400 (Tue, 15 Sep 2009)
New Revision: 93528

Modified:
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/aop/annotation/CachingAnnotationRepository.java
   projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree1914/unit/OverrideAnnotationTestCase.java
Log:
EJBTHREE-1920: allow disabling and enabling of annotations

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/aop/annotation/CachingAnnotationRepository.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/aop/annotation/CachingAnnotationRepository.java	2009-09-15 11:50:41 UTC (rev 93527)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/aop/annotation/CachingAnnotationRepository.java	2009-09-15 12:07:28 UTC (rev 93528)
@@ -42,7 +42,6 @@
  * 
  * The following operation are not supported:
  * - anything using javassist
- * - disabling and enabling annotations
  * - querying for complete annotation maps
  * 
  * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
@@ -109,22 +108,19 @@
    @Override
    public void disableAnnotation(Member m, String annotation)
    {
-      log.error("EJBTHREE-1914: Unsupported");
-      throw new UnsupportedOperationException("EJBTHREE-1914: Unsupported");
+      delegate.disableAnnotation(m, annotation);
    }
    
    @Override
    public void disableAnnotation(String annotation)
    {
-      log.error("EJBTHREE-1914: Unsupported");
-      throw new UnsupportedOperationException("EJBTHREE-1914: Unsupported");
+      delegate.disableAnnotation(annotation);
    }
    
    @Override
    public void enableAnnotation(String annotation)
    {
-      log.error("EJBTHREE-1914: Unsupported");
-      throw new UnsupportedOperationException("EJBTHREE-1914: Unsupported");
+      delegate.enableAnnotation(annotation);
    }
    
    protected Map<Class<?>, Object> getAnnotationCache(Member m)

Modified: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree1914/unit/OverrideAnnotationTestCase.java
===================================================================
--- projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree1914/unit/OverrideAnnotationTestCase.java	2009-09-15 11:50:41 UTC (rev 93527)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree1914/unit/OverrideAnnotationTestCase.java	2009-09-15 12:07:28 UTC (rev 93528)
@@ -21,6 +21,7 @@
  */
 package org.jboss.ejb3.core.test.ejbthree1914.unit;
 
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 
 import java.util.HashMap;
@@ -32,6 +33,7 @@
 import org.jboss.ejb3.Container;
 import org.jboss.ejb3.EJBContainer;
 import org.jboss.ejb3.Ejb3DescriptorHandler;
+import org.jboss.ejb3.annotation.SerializedConcurrentAccess;
 import org.jboss.ejb3.core.test.common.AbstractEJB3TestCase;
 import org.jboss.ejb3.core.test.common.MockEjb3Deployment;
 import org.jboss.ejb3.core.test.ejbthree1506.TestBean;
@@ -85,4 +87,32 @@
       ApplicationException ex = ExtendedAdvisorHelper.getExtendedAdvisor(container.getAdvisor()).resolveAnnotation(DummyException.class, ApplicationException.class);
       assertNotNull("Can't find annotation @ApplicationException in the meta data", ex);
    }
+
+   @Test
+   public void testDisableAnnotation() throws Exception
+   {
+      JBossMetaData metaData = new JBossMetaData();
+      JBossEnterpriseBeansMetaData enterpriseBeans = new JBossEnterpriseBeansMetaData();
+      metaData.setEnterpriseBeans(enterpriseBeans);
+      JBossAssemblyDescriptorMetaData assemblyDescriptor = new JBossAssemblyDescriptorMetaData();
+      metaData.setAssemblyDescriptor(assemblyDescriptor);
+      JBossSessionBeanMetaData sessionBeanMetaData = new JBossSessionBeanMetaData();
+      sessionBeanMetaData.setEnterpriseBeansMetaData(enterpriseBeans);
+      sessionBeanMetaData.setEjbClass(TestBean.class.getName());
+      sessionBeanMetaData.setEjbName("TestBean");
+      sessionBeanMetaData.setSessionType(SessionType.Stateful);
+      sessionBeanMetaData.setConcurrent(false);
+      enterpriseBeans.add(sessionBeanMetaData);
+      
+      MockEjb3Deployment deployment = new MockEjb3Deployment(new MockDeploymentUnit());
+      Ejb3DescriptorHandler handler = new Ejb3DescriptorHandler(deployment, metaData);
+      List<Container> containers = handler.getContainers(deployment, new HashMap<String, Container>());
+      
+      EJBContainer container = (EJBContainer) containers.get(0);
+      Stateful annotation = ((EJBContainer) containers.get(0)).getAnnotation(Stateful.class);
+      assertNotNull("Can't find annotation @Stateful on the container", annotation);
+      
+      assertFalse("Stateful bean incorrectly has been marked with " + SerializedConcurrentAccess.class.getName()
+            + " annotation", container.getAdvisor().hasAnnotation(SerializedConcurrentAccess.class.getName()));
+   }
 }




More information about the jboss-cvs-commits mailing list