[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