[jboss-cvs] JBossAS SVN: r77150 - in projects/ejb3/trunk/metadata: src/main/java/org/jboss/ejb3/metadata and 7 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Aug 18 06:44:12 EDT 2008


Author: wolfc
Date: 2008-08-18 06:44:12 -0400 (Mon, 18 Aug 2008)
New Revision: 77150

Added:
   projects/ejb3/trunk/metadata/src/test/java/org/jboss/ejb3/metadata/test/mutable/
   projects/ejb3/trunk/metadata/src/test/java/org/jboss/ejb3/metadata/test/mutable/Dummy.java
   projects/ejb3/trunk/metadata/src/test/java/org/jboss/ejb3/metadata/test/mutable/unit/
   projects/ejb3/trunk/metadata/src/test/java/org/jboss/ejb3/metadata/test/mutable/unit/MutableMetaDataTestCase.java
Modified:
   projects/ejb3/trunk/metadata/pom.xml
   projects/ejb3/trunk/metadata/src/main/java/org/jboss/ejb3/metadata/MetaDataBridge.java
   projects/ejb3/trunk/metadata/src/main/java/org/jboss/ejb3/metadata/annotation/AnnotationRepositoryToMetaData.java
   projects/ejb3/trunk/metadata/src/main/java/org/jboss/ejb3/metadata/plugins/loader/BridgedMetaDataLoader.java
   projects/ejb3/trunk/metadata/src/test/java/org/jboss/ejb3/test/metadata/interceptor/BeanInterceptorMetaDataBridge.java
   projects/ejb3/trunk/metadata/src/test/java/org/jboss/ejb3/test/metadata/interceptor/EnvironmentInterceptorMetaDataBridge.java
   projects/ejb3/trunk/metadata/src/test/java/org/jboss/ejb3/test/metadata/interceptor/InterceptorMetaDataBridge.java
   projects/ejb3/trunk/metadata/src/test/java/org/jboss/ejb3/test/metadata/securitydomain/SecurityDomainMetaDataBridge.java
Log:
EJBTHREE-1459: pass the DeclaredMethodSignature to the meta data bridge for method annotation resolving

Modified: projects/ejb3/trunk/metadata/pom.xml
===================================================================
--- projects/ejb3/trunk/metadata/pom.xml	2008-08-18 09:41:32 UTC (rev 77149)
+++ projects/ejb3/trunk/metadata/pom.xml	2008-08-18 10:44:12 UTC (rev 77150)
@@ -40,7 +40,7 @@
     <dependency>
       <groupId>org.jboss</groupId>
       <artifactId>jboss-mdr</artifactId>
-      <version>2.0.0.Beta16</version>
+      <version>2.0.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.jboss.metadata</groupId>

Modified: projects/ejb3/trunk/metadata/src/main/java/org/jboss/ejb3/metadata/MetaDataBridge.java
===================================================================
--- projects/ejb3/trunk/metadata/src/main/java/org/jboss/ejb3/metadata/MetaDataBridge.java	2008-08-18 09:41:32 UTC (rev 77149)
+++ projects/ejb3/trunk/metadata/src/main/java/org/jboss/ejb3/metadata/MetaDataBridge.java	2008-08-18 10:44:12 UTC (rev 77150)
@@ -22,8 +22,9 @@
 package org.jboss.ejb3.metadata;
 
 import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
 
+import org.jboss.metadata.spi.signature.DeclaredMethodSignature;
+
 /**
  * Retrieve an annotation based on a piece of meta data.
  *
@@ -53,5 +54,5 @@
     * @param method
     * @return                   the annotation of null if not found
     */
-   <A extends Annotation> A retrieveAnnotation(Class<A> annotationClass, M metaData, ClassLoader classLoader, Method method);
+   <A extends Annotation> A retrieveAnnotation(Class<A> annotationClass, M metaData, ClassLoader classLoader, DeclaredMethodSignature method);
 }

Modified: projects/ejb3/trunk/metadata/src/main/java/org/jboss/ejb3/metadata/annotation/AnnotationRepositoryToMetaData.java
===================================================================
--- projects/ejb3/trunk/metadata/src/main/java/org/jboss/ejb3/metadata/annotation/AnnotationRepositoryToMetaData.java	2008-08-18 09:41:32 UTC (rev 77149)
+++ projects/ejb3/trunk/metadata/src/main/java/org/jboss/ejb3/metadata/annotation/AnnotationRepositoryToMetaData.java	2008-08-18 10:44:12 UTC (rev 77150)
@@ -23,6 +23,7 @@
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Member;
+import java.lang.reflect.Method;
 import java.util.Arrays;
 import java.util.Map;
 
@@ -52,6 +53,7 @@
 import org.jboss.metadata.spi.scope.Scope;
 import org.jboss.metadata.spi.scope.ScopeKey;
 import org.jboss.metadata.spi.signature.ConstructorSignature;
+import org.jboss.metadata.spi.signature.DeclaredMethodSignature;
 import org.jboss.metadata.spi.signature.FieldSignature;
 import org.jboss.metadata.spi.signature.MethodSignature;
 import org.jboss.metadata.spi.signature.Signature;
@@ -226,12 +228,12 @@
 
    public void addAnnotation(Member m, Class annotation, Object value)
    {
-      mutableMetaData.addAnnotation(m, initAnnotation(value));
+      mutableMetaData.addAnnotation(getSignature(m), initAnnotation(value));
    }
 
    public void addAnnotation(Member m, String annotation, Object value)
    {
-      mutableMetaData.addAnnotation(m, initAnnotation(value));
+      mutableMetaData.addAnnotation(getSignature(m), initAnnotation(value));
    }
 
    public void addClassAnnotation(Class annotation, Object value)
@@ -266,6 +268,13 @@
       throw new RuntimeException("Not implemented: getClassAnnotations()");
    }
 
+   private static Signature getSignature(Member member)
+   {
+      if(member instanceof Method)
+         return new DeclaredMethodSignature((Method) member);
+      return Signature.getSignature(member);
+   }
+   
    public boolean hasAnnotation(Class<?> cls, Class<? extends Annotation> annotationType)
    {
       if(annotationType == null)
@@ -283,7 +292,7 @@
       MetaData classComponent = getComponentMetaData(cls);
       if(classComponent == null)
          return false;
-      MetaData component = classComponent.getComponentMetaData(Signature.getSignature(member));
+      MetaData component = classComponent.getComponentMetaData(getSignature(member));
       if(component == null)
          return false;
       return component.isMetaDataPresent(annotationType);
@@ -303,7 +312,7 @@
    {
       if (annotation == null)
          throw new IllegalArgumentException("Null annotation");
-      MetaData component = metaData.getComponentMetaData(Signature.getSignature(m));
+      MetaData component = metaData.getComponentMetaData(getSignature(m));
       if (component == null)
          return false;
       return component.isAnnotationPresent(annotation);
@@ -313,7 +322,7 @@
    {
       if (annotation == null)
          throw new IllegalArgumentException("Null annotation");
-      MetaData component = metaData.getComponentMetaData(Signature.getSignature(m));
+      MetaData component = metaData.getComponentMetaData(getSignature(m));
       if (component == null)
          return false;
       return component.isAnnotationPresent(loadClass(annotation));
@@ -357,7 +366,7 @@
       MetaData classComponent = getComponentMetaData(cls);
       if(classComponent == null)
          return null;
-      MetaData component = classComponent.getComponentMetaData(Signature.getSignature(member));
+      MetaData component = classComponent.getComponentMetaData(getSignature(member));
       if (component == null)
          return null;
       return component.getAnnotation(annotationType);
@@ -367,7 +376,7 @@
    {
       if (annotation == null)
          throw new IllegalArgumentException("Null annotation");
-      MetaData component = metaData.getComponentMetaData(Signature.getSignature(m));
+      MetaData component = metaData.getComponentMetaData(getSignature(m));
       if (component == null)
          return null;
       return component.getAnnotation(annotation);

Modified: projects/ejb3/trunk/metadata/src/main/java/org/jboss/ejb3/metadata/plugins/loader/BridgedMetaDataLoader.java
===================================================================
--- projects/ejb3/trunk/metadata/src/main/java/org/jboss/ejb3/metadata/plugins/loader/BridgedMetaDataLoader.java	2008-08-18 09:41:32 UTC (rev 77149)
+++ projects/ejb3/trunk/metadata/src/main/java/org/jboss/ejb3/metadata/plugins/loader/BridgedMetaDataLoader.java	2008-08-18 10:44:12 UTC (rev 77150)
@@ -22,7 +22,6 @@
 package org.jboss.ejb3.metadata.plugins.loader;
 
 import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -33,7 +32,7 @@
 import org.jboss.metadata.spi.retrieval.MetaDataRetrieval;
 import org.jboss.metadata.spi.retrieval.simple.SimpleAnnotationItem;
 import org.jboss.metadata.spi.scope.ScopeKey;
-import org.jboss.metadata.spi.signature.MethodSignature;
+import org.jboss.metadata.spi.signature.DeclaredMethodSignature;
 import org.jboss.metadata.spi.signature.Signature;
 
 /**
@@ -52,21 +51,16 @@
    private class MethodMetaDataRetrieval extends AbstractMethodMetaDataLoader
    {
       /** The signature */
-      private MethodSignature signature;
+      private DeclaredMethodSignature signature;
       
-      private Method method;
-      
       /**
        * Create a new MethodMetaDataRetrieval.
        * 
        * @param methodSignature the signature
        */
-      public MethodMetaDataRetrieval(MethodSignature methodSignature)
+      public MethodMetaDataRetrieval(DeclaredMethodSignature methodSignature)
       {
          this.signature = methodSignature;
-         this.method = signature.getMethod();
-         
-         assert this.method != null : "methodSignature.method is null";
       }
 
       public <T extends Annotation> AnnotationItem<T> retrieveAnnotation(Class<T> annotationType)
@@ -76,7 +70,7 @@
          
          for(MetaDataBridge<M> bridge : bridges)
          {
-            T annotation = bridge.retrieveAnnotation(annotationType, metaData, classLoader, method);
+            T annotation = bridge.retrieveAnnotation(annotationType, metaData, classLoader, signature);
             if(annotation != null)
                return new SimpleAnnotationItem<T>(annotation);
          }
@@ -139,8 +133,8 @@
       }
       
       // TODO: shouldn't this be a factory?
-      if(signature instanceof MethodSignature)
-         return new MethodMetaDataRetrieval((MethodSignature) signature);
+      if(signature instanceof DeclaredMethodSignature)
+         return new MethodMetaDataRetrieval((DeclaredMethodSignature) signature);
       
       return super.getComponentMetaDataRetrieval(signature);
    }

Added: projects/ejb3/trunk/metadata/src/test/java/org/jboss/ejb3/metadata/test/mutable/Dummy.java
===================================================================
--- projects/ejb3/trunk/metadata/src/test/java/org/jboss/ejb3/metadata/test/mutable/Dummy.java	                        (rev 0)
+++ projects/ejb3/trunk/metadata/src/test/java/org/jboss/ejb3/metadata/test/mutable/Dummy.java	2008-08-18 10:44:12 UTC (rev 77150)
@@ -0,0 +1,34 @@
+/*
+ * 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.ejb3.metadata.test.mutable;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public class Dummy
+{
+   public void dummyMethod()
+   {
+      
+   }
+}

Added: projects/ejb3/trunk/metadata/src/test/java/org/jboss/ejb3/metadata/test/mutable/unit/MutableMetaDataTestCase.java
===================================================================
--- projects/ejb3/trunk/metadata/src/test/java/org/jboss/ejb3/metadata/test/mutable/unit/MutableMetaDataTestCase.java	                        (rev 0)
+++ projects/ejb3/trunk/metadata/src/test/java/org/jboss/ejb3/metadata/test/mutable/unit/MutableMetaDataTestCase.java	2008-08-18 10:44:12 UTC (rev 77150)
@@ -0,0 +1,62 @@
+/*
+ * 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.ejb3.metadata.test.mutable.unit;
+
+import static org.junit.Assert.assertTrue;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+
+import javax.annotation.Resource;
+
+import org.jboss.ejb3.annotation.impl.ResourceImpl;
+import org.jboss.ejb3.metadata.annotation.AnnotationRepositoryToMetaData;
+import org.jboss.ejb3.metadata.test.metadatacomplete.TwoLifecycleMethodsBean;
+import org.jboss.ejb3.metadata.test.mutable.Dummy;
+import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
+import org.junit.Test;
+
+/**
+ * To allow core to dynamically add annotations it must be mutable.
+ * 
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public class MutableMetaDataTestCase
+{
+   @Test
+   public void test1() throws Exception
+   {
+      JBossEnterpriseBeanMetaData beanMetaData = null;
+      
+      // Bootstrap meta data bridge
+      String canonicalObjectName = "Not important";
+      ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+      AnnotationRepositoryToMetaData repository = new AnnotationRepositoryToMetaData(TwoLifecycleMethodsBean.class, beanMetaData, canonicalObjectName, classLoader);
+      
+      Method method = Dummy.class.getDeclaredMethod("dummyMethod");
+      Annotation annotation = new ResourceImpl();
+      repository.addAnnotation(method, Resource.class, annotation);
+      
+      assertTrue("Failed to find annotation @Resource on " + method, repository.hasAnnotation(method, Resource.class));
+   }
+}

Modified: projects/ejb3/trunk/metadata/src/test/java/org/jboss/ejb3/test/metadata/interceptor/BeanInterceptorMetaDataBridge.java
===================================================================
--- projects/ejb3/trunk/metadata/src/test/java/org/jboss/ejb3/test/metadata/interceptor/BeanInterceptorMetaDataBridge.java	2008-08-18 09:41:32 UTC (rev 77149)
+++ projects/ejb3/trunk/metadata/src/test/java/org/jboss/ejb3/test/metadata/interceptor/BeanInterceptorMetaDataBridge.java	2008-08-18 10:44:12 UTC (rev 77150)
@@ -22,7 +22,6 @@
 package org.jboss.ejb3.test.metadata.interceptor;
 
 import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
 
 import javax.interceptor.AroundInvoke;
 import javax.interceptor.Interceptors;
@@ -37,6 +36,7 @@
 import org.jboss.metadata.ejb.spec.InterceptorBindingMetaData;
 import org.jboss.metadata.ejb.spec.InterceptorBindingsMetaData;
 import org.jboss.metadata.ejb.spec.InterceptorClassesMetaData;
+import org.jboss.metadata.spi.signature.DeclaredMethodSignature;
 
 /**
  * Comment
@@ -102,7 +102,7 @@
    }
 
    @Override
-   public <A extends Annotation> A retrieveAnnotation(Class<A> annotationClass, JBossEnterpriseBeanMetaData beanMetaData, ClassLoader classLoader, Method method)
+   public <A extends Annotation> A retrieveAnnotation(Class<A> annotationClass, JBossEnterpriseBeanMetaData beanMetaData, ClassLoader classLoader, DeclaredMethodSignature method)
    {
       if(annotationClass == AroundInvoke.class)
       {

Modified: projects/ejb3/trunk/metadata/src/test/java/org/jboss/ejb3/test/metadata/interceptor/EnvironmentInterceptorMetaDataBridge.java
===================================================================
--- projects/ejb3/trunk/metadata/src/test/java/org/jboss/ejb3/test/metadata/interceptor/EnvironmentInterceptorMetaDataBridge.java	2008-08-18 09:41:32 UTC (rev 77149)
+++ projects/ejb3/trunk/metadata/src/test/java/org/jboss/ejb3/test/metadata/interceptor/EnvironmentInterceptorMetaDataBridge.java	2008-08-18 10:44:12 UTC (rev 77150)
@@ -22,7 +22,6 @@
 package org.jboss.ejb3.test.metadata.interceptor;
 
 import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
@@ -38,6 +37,7 @@
 import org.jboss.metadata.javaee.spec.Environment;
 import org.jboss.metadata.javaee.spec.LifecycleCallbackMetaData;
 import org.jboss.metadata.javaee.spec.LifecycleCallbacksMetaData;
+import org.jboss.metadata.spi.signature.DeclaredMethodSignature;
 
 /**
  * Does only interceptor stuff.
@@ -65,14 +65,14 @@
       }
    }
    
-   protected AroundInvoke getAroundInvokeAnnotation(AroundInvokesMetaData callbacks, Method method)
+   protected AroundInvoke getAroundInvokeAnnotation(AroundInvokesMetaData callbacks, DeclaredMethodSignature method)
    {
       if(callbacks == null || callbacks.isEmpty())
          return null;
       
       assert callbacks.size() == 1;
       AroundInvokeMetaData callback = callbacks.get(0);
-      if(isEmpty(callback.getClassName()) || callback.getClassName().equals(method.getDeclaringClass().getName()))
+      if(isEmpty(callback.getClassName()) || callback.getClassName().equals(method.getDeclaringClass()))
       {
          String callbackMethodName = callback.getMethodName();
          if(method.getName().equals(callbackMethodName))
@@ -81,14 +81,14 @@
       return null;
    }
    
-   private <T extends Annotation> T getLifeCycleAnnotation(LifecycleCallbacksMetaData callbacks, Class<T> annotationImplType, Method method)
+   private <T extends Annotation> T getLifeCycleAnnotation(LifecycleCallbacksMetaData callbacks, Class<T> annotationImplType, DeclaredMethodSignature method)
    {
       if(callbacks == null || callbacks.isEmpty())
          return null;
       
       assert callbacks.size() == 1;
       LifecycleCallbackMetaData callback = callbacks.get(0);
-      if(isEmpty(callback.getClassName()) || callback.getClassName().equals(method.getDeclaringClass().getName()))
+      if(isEmpty(callback.getClassName()) || callback.getClassName().equals(method.getDeclaringClass()))
       {
          String callbackMethodName = callback.getMethodName();
          if(method.getName().equals(callbackMethodName))
@@ -111,7 +111,7 @@
       return null;
    }
 
-   public <A extends Annotation> A retrieveAnnotation(Class<A> annotationClass, M metaData, ClassLoader classLoader, Method method)
+   public <A extends Annotation> A retrieveAnnotation(Class<A> annotationClass, M metaData, ClassLoader classLoader, DeclaredMethodSignature method)
    {
       if(annotationClass == PostConstruct.class)
       {

Modified: projects/ejb3/trunk/metadata/src/test/java/org/jboss/ejb3/test/metadata/interceptor/InterceptorMetaDataBridge.java
===================================================================
--- projects/ejb3/trunk/metadata/src/test/java/org/jboss/ejb3/test/metadata/interceptor/InterceptorMetaDataBridge.java	2008-08-18 09:41:32 UTC (rev 77149)
+++ projects/ejb3/trunk/metadata/src/test/java/org/jboss/ejb3/test/metadata/interceptor/InterceptorMetaDataBridge.java	2008-08-18 10:44:12 UTC (rev 77150)
@@ -22,13 +22,13 @@
 package org.jboss.ejb3.test.metadata.interceptor;
 
 import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
 
 import javax.interceptor.AroundInvoke;
 
 import org.jboss.ejb3.metadata.MetaDataBridge;
 import org.jboss.logging.Logger;
 import org.jboss.metadata.ejb.spec.InterceptorMetaData;
+import org.jboss.metadata.spi.signature.DeclaredMethodSignature;
 
 /**
  * Comment
@@ -47,7 +47,7 @@
    }
 
    @Override
-   public <A extends Annotation> A retrieveAnnotation(Class<A> annotationClass, InterceptorMetaData interceptorMetaData, ClassLoader classLoader, Method method)
+   public <A extends Annotation> A retrieveAnnotation(Class<A> annotationClass, InterceptorMetaData interceptorMetaData, ClassLoader classLoader, DeclaredMethodSignature method)
    {
       if(annotationClass == AroundInvoke.class)
       {

Modified: projects/ejb3/trunk/metadata/src/test/java/org/jboss/ejb3/test/metadata/securitydomain/SecurityDomainMetaDataBridge.java
===================================================================
--- projects/ejb3/trunk/metadata/src/test/java/org/jboss/ejb3/test/metadata/securitydomain/SecurityDomainMetaDataBridge.java	2008-08-18 09:41:32 UTC (rev 77149)
+++ projects/ejb3/trunk/metadata/src/test/java/org/jboss/ejb3/test/metadata/securitydomain/SecurityDomainMetaDataBridge.java	2008-08-18 10:44:12 UTC (rev 77150)
@@ -22,13 +22,13 @@
 package org.jboss.ejb3.test.metadata.securitydomain;
 
 import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
 
 import org.jboss.ejb3.annotation.SecurityDomain;
 import org.jboss.ejb3.annotation.impl.SecurityDomainImpl;
 import org.jboss.ejb3.metadata.MetaDataBridge;
 import org.jboss.logging.Logger;
 import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
+import org.jboss.metadata.spi.signature.DeclaredMethodSignature;
 
 /**
  * Comment
@@ -51,7 +51,7 @@
       return null;
    }
 
-   public <A extends Annotation> A retrieveAnnotation(Class<A> annotationClass, JBossEnterpriseBeanMetaData beanMetaData, ClassLoader classLoader, Method method)
+   public <A extends Annotation> A retrieveAnnotation(Class<A> annotationClass, JBossEnterpriseBeanMetaData beanMetaData, ClassLoader classLoader, DeclaredMethodSignature method)
    {
       return null;
    }




More information about the jboss-cvs-commits mailing list