[jboss-cvs] JBossAS SVN: r97470 - in projects/jboss-mdr/trunk: src/main/java/org/jboss/metadata/plugins/context and 15 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Dec 4 11:56:15 EST 2009
Author: kabir.khan at jboss.com
Date: 2009-12-04 11:56:15 -0500 (Fri, 04 Dec 2009)
New Revision: 97470
Added:
projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/plugins/loader/AnnotationsAnnotatedWithCache.java
projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/retrieval/cummulative/CummulativeAnnotationsFilter.java
projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/support/MetaAnnotation1.java
projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/support/MetaAnnotation2.java
Modified:
projects/jboss-mdr/trunk/.classpath
projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/plugins/context/AbstractMetaDataContext.java
projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/plugins/loader/AbstractMetaDataLoader.java
projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/plugins/loader/memory/MemoryMetaDataLoader.java
projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/plugins/loader/thread/ThreadLocalMetaDataLoader.java
projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/MetaData.java
projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/retrieval/MetaDataRetrieval.java
projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/retrieval/MetaDataRetrievalToMetaDataBridge.java
projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/retrieval/cummulative/CummulativeAnnotationsItem.java
projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/AbstractMetaDataTest.java
projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/context/MetaDataContextAnnotationTest.java
projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/loader/MutableAnnotationsTest.java
projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/loader/MutableMetaDataLoaderAnnotationsInvalidationTest.java
projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/loader/reflection/support/TestAnnotationWithValue.java
projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/loader/reflection/test/AnnotatedElementLoaderDeclaredMethodSignatureUnitTestCase.java
projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/loader/reflection/test/AnnotatedElementLoaderNotPublicUnitTestCase.java
projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/retrieval/support/TestMetaDataRetrieval.java
projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/retrieval/test/HelpersUnitTestCase.java
projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/BasicAnnotationsTest.java
projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/ComponentBasicAnnotationsTest.java
projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/support/MetaDataAndMutableMetaDataImpl.java
projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/support/TestAnnotation.java
projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/support/TestAnnotation1.java
Log:
[JBREFLECT-82] Add and support MetaData.getAnnotationsWith(Annotation meta) and MetaDataRetrieval.retrieveAnnotationsWith(Annotation meta).
Extend the existing tests to also test this functionality
Modified: projects/jboss-mdr/trunk/.classpath
===================================================================
--- projects/jboss-mdr/trunk/.classpath 2009-12-04 16:39:11 UTC (rev 97469)
+++ projects/jboss-mdr/trunk/.classpath 2009-12-04 16:56:15 UTC (rev 97470)
@@ -1,19 +1,19 @@
<classpath>
- <classpathentry kind="src" path="src/main/java"/>
- <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
+ <classpathentry kind="src" path="src/test/java" output="target/test-classes" including="**/*.java"/>
+ <classpathentry kind="src" path="src/main/java" including="**/*.java"/>
<classpathentry kind="output" path="target/classes"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="var" path="M2_REPO/org/apache/ant/ant/1.7.0/ant-1.7.0.jar"/>
<classpathentry kind="var" path="M2_REPO/org/apache/ant/ant-junit/1.7.0/ant-junit-1.7.0.jar"/>
<classpathentry kind="var" path="M2_REPO/org/apache/ant/ant-launcher/1.7.0/ant-launcher-1.7.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/javassist/javassist/3.8.1.GA/javassist-3.8.1.GA.jar" sourcepath="M2_REPO/javassist/javassist/3.8.1.GA/javassist-3.8.1.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-common-core/2.2.9.GA/jboss-common-core-2.2.9.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javassist/javassist/3.11.0.GA/javassist-3.11.0.GA.jar" sourcepath="M2_REPO/javassist/javassist/3.11.0.GA/javassist-3.11.0.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-common-core/2.2.16.GA/jboss-common-core-2.2.16.GA.jar" sourcepath="M2_REPO/org/jboss/jboss-common-core/2.2.16.GA/jboss-common-core-2.2.16.GA-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jboss/logging/jboss-logging-log4j/2.0.5.GA/jboss-logging-log4j-2.0.5.GA.jar" sourcepath="M2_REPO/org/jboss/logging/jboss-logging-log4j/2.0.5.GA/jboss-logging-log4j-2.0.5.GA-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jboss/logging/jboss-logging-spi/2.0.5.GA/jboss-logging-spi-2.0.5.GA.jar" sourcepath="M2_REPO/org/jboss/logging/jboss-logging-spi/2.0.5.GA/jboss-logging-spi-2.0.5.GA-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/jboss/profiler/jvmti/jboss-profiler-jvmti/1.0.0.CR5/jboss-profiler-jvmti-1.0.0.CR5.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-reflect/2.0.0.CR1/jboss-reflect-2.0.0.CR1.jar" sourcepath="M2_REPO/org/jboss/jboss-reflect/2.0.0.CR1/jboss-reflect-2.0.0.CR1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-reflect/2.0.2.GA/jboss-reflect-2.0.2.GA.jar" sourcepath="M2_REPO/org/jboss/jboss-reflect/2.0.2.GA/jboss-reflect-2.0.2.GA-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jboss/jbossas/jboss-server-manager/0.1.1.GA/jboss-server-manager-0.1.1.GA.jar" sourcepath="M2_REPO/org/jboss/jbossas/jboss-server-manager/0.1.1.GA/jboss-server-manager-0.1.1.GA-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jboss/test/jboss-test/1.1.1.GA/jboss-test-1.1.1.GA.jar" sourcepath="M2_REPO/org/jboss/test/jboss-test/1.1.1.GA/jboss-test-1.1.1.GA-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/4.4/junit-4.4.jar" sourcepath="M2_REPO/junit/junit/4.4/junit-4.4-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/apache-log4j/log4j/1.2.14/log4j-1.2.14.jar" sourcepath="M2_REPO/apache-log4j/log4j/1.2.14/log4j-1.2.14-sources.jar"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
</classpath>
\ No newline at end of file
Modified: projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/plugins/context/AbstractMetaDataContext.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/plugins/context/AbstractMetaDataContext.java 2009-12-04 16:39:11 UTC (rev 97469)
+++ projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/plugins/context/AbstractMetaDataContext.java 2009-12-04 16:56:15 UTC (rev 97470)
@@ -35,6 +35,7 @@
import org.jboss.metadata.spi.retrieval.MetaDataRetrieval;
import org.jboss.metadata.spi.retrieval.MetaDatasItem;
import org.jboss.metadata.spi.retrieval.ValidTime;
+import org.jboss.metadata.spi.retrieval.cummulative.CummulativeAnnotationsFilter;
import org.jboss.metadata.spi.retrieval.cummulative.CummulativeAnnotationsItem;
import org.jboss.metadata.spi.retrieval.cummulative.CummulativeMetaDatasItem;
import org.jboss.metadata.spi.scope.Scope;
@@ -224,6 +225,11 @@
return null;
}
+
+ public AnnotationsItem retrieveAnnotationsAnnotatedWith(Class<? extends Annotation> meta)
+ {
+ return new CummulativeAnnotationsItem(this, true, new AnnotationsAnnotatedWithFilter(meta));
+ }
public MetaDatasItem retrieveMetaData()
{
@@ -323,4 +329,19 @@
return null;
}
+
+ private static class AnnotationsAnnotatedWithFilter implements CummulativeAnnotationsFilter
+ {
+ Class<? extends Annotation> meta;
+
+ public AnnotationsAnnotatedWithFilter(Class<? extends Annotation> meta)
+ {
+ this.meta = meta;
+ }
+
+ public AnnotationsItem getAnnotations(MetaDataRetrieval retrieval)
+ {
+ return retrieval.retrieveAnnotationsAnnotatedWith(meta);
+ }
+ }
}
Modified: projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/plugins/loader/AbstractMetaDataLoader.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/plugins/loader/AbstractMetaDataLoader.java 2009-12-04 16:39:11 UTC (rev 97469)
+++ projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/plugins/loader/AbstractMetaDataLoader.java 2009-12-04 16:56:15 UTC (rev 97470)
@@ -22,6 +22,8 @@
package org.jboss.metadata.plugins.loader;
import java.lang.annotation.Annotation;
+import java.util.ArrayList;
+import java.util.List;
import org.jboss.metadata.spi.loader.MetaDataLoader;
import org.jboss.metadata.spi.retrieval.AnnotationItem;
@@ -31,6 +33,7 @@
import org.jboss.metadata.spi.retrieval.MetaDataRetrieval;
import org.jboss.metadata.spi.retrieval.MetaDatasItem;
import org.jboss.metadata.spi.retrieval.ValidTime;
+import org.jboss.metadata.spi.retrieval.basic.BasicAnnotationsItem;
import org.jboss.metadata.spi.retrieval.helper.AnnotationToMetaDataBridge;
import org.jboss.metadata.spi.retrieval.helper.AnnotationsToMetaDatasBridge;
import org.jboss.metadata.spi.scope.ScopeKey;
@@ -54,6 +57,8 @@
/** The scope key */
private ScopeKey scopeKey;
+ private volatile AnnotationsAnnotatedWithCache cache;
+
/**
* Create a new AbstractMetaDataLoader.
*/
@@ -92,7 +97,47 @@
{
return retrieveAnnotations();
}
+
+ protected AnnotationsAnnotatedWithCache getAnnotationsAnnotatedWithCache()
+ {
+ if (cache == null)
+ {
+ synchronized (this)
+ {
+ if (cache == null)
+ {
+ cache = new AnnotationsAnnotatedWithCache();
+ }
+ }
+ }
+ return cache;
+ }
+ public AnnotationsItem retrieveAnnotationsAnnotatedWith(Class<? extends Annotation> meta)
+ {
+ AnnotationsItem item = getAnnotationsAnnotatedWithCache().getAnnotationsAnnotatedWith(meta);
+ if (item == null)
+ {
+ AnnotationsItem annotations = retrieveAnnotations();
+ List<AnnotationItem<? extends Annotation>> values = new ArrayList<AnnotationItem<? extends Annotation>>(annotations.getAnnotations().length);
+ for (AnnotationItem<? extends Annotation> current : annotations.getAnnotations())
+ {
+ for (Annotation ann : current.getAnnotation().annotationType().getAnnotations())
+ {
+ if (meta == ann.annotationType())
+ {
+ values.add(current);
+ break;
+ }
+ }
+ }
+ item = new BasicAnnotationsItem(this, values.toArray(new AnnotationItem[values.size()]));
+ cache.addAnnotationsAnnotatedWith(meta, item);
+ }
+ return item;
+ }
+
+
@SuppressWarnings("unchecked")
public <T> MetaDataItem<T> retrieveMetaData(Class<T> type)
{
@@ -141,5 +186,12 @@
public void invalidate()
{
validTime.invalidate();
+ invalidateAnnotationsAnnotatedWithCache();
}
+
+ protected void invalidateAnnotationsAnnotatedWithCache()
+ {
+ if (cache != null)
+ cache.invalidate();
+ }
}
Added: projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/plugins/loader/AnnotationsAnnotatedWithCache.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/plugins/loader/AnnotationsAnnotatedWithCache.java (rev 0)
+++ projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/plugins/loader/AnnotationsAnnotatedWithCache.java 2009-12-04 16:56:15 UTC (rev 97470)
@@ -0,0 +1,56 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, 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.plugins.loader;
+
+import java.lang.annotation.Annotation;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+import org.jboss.metadata.spi.retrieval.AnnotationsItem;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class AnnotationsAnnotatedWithCache
+{
+ private ConcurrentMap<Class<? extends Annotation>, AnnotationsItem> annotationsByMetaAnnotation = new ConcurrentHashMap<Class<? extends Annotation>, AnnotationsItem>();
+
+ public AnnotationsItem getAnnotationsAnnotatedWith(Class<? extends Annotation> meta)
+ {
+ AnnotationsItem annotationsItem = annotationsByMetaAnnotation.get(meta);
+ if (annotationsItem != null)
+ return annotationsItem;
+ return null;
+ }
+
+ public void addAnnotationsAnnotatedWith(Class<? extends Annotation> meta, AnnotationsItem item)
+ {
+ annotationsByMetaAnnotation.putIfAbsent(meta, item);
+ }
+
+ public void invalidate()
+ {
+ annotationsByMetaAnnotation.clear();
+ }
+}
Modified: projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/plugins/loader/memory/MemoryMetaDataLoader.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/plugins/loader/memory/MemoryMetaDataLoader.java 2009-12-04 16:39:11 UTC (rev 97469)
+++ projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/plugins/loader/memory/MemoryMetaDataLoader.java 2009-12-04 16:56:15 UTC (rev 97470)
@@ -186,6 +186,7 @@
annotation.invalidate();
invalidateAnnotationsItem();
invalidateMetaDatasItem();
+ invalidateAnnotationsAnnotatedWithCache();
return annotation.getAnnotation();
}
Modified: projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/plugins/loader/thread/ThreadLocalMetaDataLoader.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/plugins/loader/thread/ThreadLocalMetaDataLoader.java 2009-12-04 16:39:11 UTC (rev 97469)
+++ projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/plugins/loader/thread/ThreadLocalMetaDataLoader.java 2009-12-04 16:56:15 UTC (rev 97470)
@@ -156,6 +156,15 @@
return delegate.removeAnnotation(annotationType);
}
+ @Override
+ public AnnotationsItem retrieveAnnotationsAnnotatedWith(Class<? extends Annotation> meta)
+ {
+ MemoryMetaDataLoader delegate = threadLocal.get();
+ if (delegate == null)
+ return NO_ANNOTATIONS;
+ return delegate.retrieveAnnotationsAnnotatedWith(meta);
+ }
+
public MetaDatasItem retrieveMetaData()
{
MemoryMetaDataLoader delegate = threadLocal.get();
Modified: projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/MetaData.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/MetaData.java 2009-12-04 16:39:11 UTC (rev 97469)
+++ projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/MetaData.java 2009-12-04 16:56:15 UTC (rev 97470)
@@ -77,6 +77,14 @@
* @return true when present
*/
boolean isAnnotationPresent(Class<? extends Annotation> annotationType);
+
+ /**
+ * Get all the annotations annotated with the given meta annotation
+ *
+ * @param the meta annotation
+ * @return the annotations annotated with the meta annotation
+ */
+ Annotation[] getAnnotationsAnnotatedWith(Class<? extends Annotation> meta);
/**
* Get metadata
Modified: projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/retrieval/MetaDataRetrieval.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/retrieval/MetaDataRetrieval.java 2009-12-04 16:39:11 UTC (rev 97469)
+++ projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/retrieval/MetaDataRetrieval.java 2009-12-04 16:56:15 UTC (rev 97470)
@@ -62,6 +62,15 @@
* @return the annotations
*/
AnnotationsItem retrieveLocalAnnotations();
+
+
+ /**
+ * Get all the annotations annotated with the given meta annotation
+ *
+ * @param the meta annotation
+ * @return the annotations annotated with the meta annotation
+ */
+ AnnotationsItem retrieveAnnotationsAnnotatedWith(Class<? extends Annotation> meta);
/**
* Get annotation
Modified: projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/retrieval/MetaDataRetrievalToMetaDataBridge.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/retrieval/MetaDataRetrievalToMetaDataBridge.java 2009-12-04 16:39:11 UTC (rev 97469)
+++ projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/retrieval/MetaDataRetrievalToMetaDataBridge.java 2009-12-04 16:56:15 UTC (rev 97470)
@@ -82,6 +82,14 @@
return item.getValue();
}
+ public Annotation[] getAnnotationsAnnotatedWith(Class<? extends Annotation> meta)
+ {
+ AnnotationsItem item = retrieval.retrieveAnnotationsAnnotatedWith(meta);
+ if (item == null)
+ return NO_ANNOTATIONS;
+ return item.getValue();
+ }
+
public Object[] getMetaData()
{
MetaDatasItem item = retrieval.retrieveMetaData();
Added: projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/retrieval/cummulative/CummulativeAnnotationsFilter.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/retrieval/cummulative/CummulativeAnnotationsFilter.java (rev 0)
+++ projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/retrieval/cummulative/CummulativeAnnotationsFilter.java 2009-12-04 16:56:15 UTC (rev 97470)
@@ -0,0 +1,35 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, 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.spi.retrieval.cummulative;
+
+import org.jboss.metadata.spi.retrieval.AnnotationsItem;
+import org.jboss.metadata.spi.retrieval.MetaDataRetrieval;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public interface CummulativeAnnotationsFilter
+{
+ AnnotationsItem getAnnotations(MetaDataRetrieval retrieval);
+}
Modified: projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/retrieval/cummulative/CummulativeAnnotationsItem.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/retrieval/cummulative/CummulativeAnnotationsItem.java 2009-12-04 16:39:11 UTC (rev 97469)
+++ projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/retrieval/cummulative/CummulativeAnnotationsItem.java 2009-12-04 16:56:15 UTC (rev 97470)
@@ -49,6 +49,8 @@
/** The valid time */
private long validTime;
+ private CummulativeAnnotationsFilter filter = AllAnnotationsFilter.INSTANCE;
+
/**
* Create a new CummulativeAnnotationsItem.
*
@@ -57,11 +59,25 @@
*/
public CummulativeAnnotationsItem(MetaDataContext context, boolean includeParent)
{
+ this(context, includeParent, null);
+ }
+
+ /**
+ * Create a new CummulativeAnnotationsItem.
+ *
+ * @param context the context
+ * @param includeParent whether to include the parent
+ */
+ public CummulativeAnnotationsItem(MetaDataContext context, boolean includeParent, CummulativeAnnotationsFilter filter)
+ {
if (context == null)
throw new IllegalArgumentException("Null context");
this.context = context;
this.includeParent = includeParent;
+ if (filter != null)
+ this.filter = filter;
+
init(context.getValidTime().getValidTime());
}
@@ -131,7 +147,7 @@
for (MetaDataRetrieval retrieval : retrievals)
{
- AnnotationsItem item = retrieval.retrieveAnnotations();
+ AnnotationsItem item = filter.getAnnotations(retrieval);
if (item != null)
{
AnnotationItem<? extends Annotation>[] items = item.getAnnotations();
@@ -150,4 +166,14 @@
setAnnotationItems(items);
this.validTime = validTime;
}
+
+ private static class AllAnnotationsFilter implements CummulativeAnnotationsFilter
+ {
+ private static final CummulativeAnnotationsFilter INSTANCE = new AllAnnotationsFilter();
+
+ public AnnotationsItem getAnnotations(MetaDataRetrieval retrieval)
+ {
+ return retrieval.retrieveAnnotations();
+ }
+ }
}
Modified: projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/AbstractMetaDataTest.java
===================================================================
--- projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/AbstractMetaDataTest.java 2009-12-04 16:39:11 UTC (rev 97469)
+++ projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/AbstractMetaDataTest.java 2009-12-04 16:56:15 UTC (rev 97470)
@@ -1565,6 +1565,20 @@
{
return new ExpectedMetaData();
}
+
+ /**
+ * Create an expected annotations with the annotation types
+ *
+ * @param types the annotation types
+ * @return the expected annotations
+ */
+ protected ExpectedAnnotations expectedAnnotations(Class<? extends Annotation>...types)
+ {
+ ExpectedAnnotations expected = new ExpectedAnnotations();
+ for (Class<? extends Annotation> type : types)
+ expected.add(type);
+ return expected;
+ }
/**
* Check the annotations from all retrieval methods
@@ -1597,6 +1611,102 @@
}
/**
+ * Check the annotations annotated with a meta annotation
+ *
+ * @param metaData the meta data
+ * @param metaAnnotation the meya annotation
+ * @param expected the expected annotation classes
+ * @param local whether to test the local annotations
+ * @return the annotations found
+ * @throws Exception for any error
+ */
+ protected Annotation[] assertAnnotationsAnnotatedWith(MetaData metaData, Class<? extends Annotation> metaAnnotation, ExpectedAnnotations expected) throws Exception
+ {
+ assertNotNull(metaData);
+ assertNotNull(expected);
+
+ Annotation[] result = metaData.getAnnotationsAnnotatedWith(metaAnnotation);
+ assertNotNull("Null result", result);
+ ExpectedAnnotations actual = emptyExpectedAnnotations();
+ for (Annotation annotation : result)
+ {
+ assertNotNull("Null annotation " + Arrays.asList(result), annotation);
+ actual.add(annotation.annotationType());
+ }
+
+ assertExpectedAnnotations("Annotations", expected, actual);
+ return result;
+ }
+
+ /**
+ * Check the annotations annotated with a meta annotation
+ *
+ * @param metaData the meta data retrieval
+ * @param metaAnnotation the meya annotation
+ * @param expected the expected annotation classes
+ * @param local whether to test the local annotations
+ * @return the annotations found
+ * @throws Exception for any error
+ */
+ protected void assertAnnotationsAnnotatedWith(MetaDataRetrieval metaData, Class<? extends Annotation> metaAnnotation, ExpectedAnnotations expected) throws Exception
+ {
+ assertNotNull(metaData);
+ assertNotNull(expected);
+
+ AnnotationsItem result = metaData.retrieveAnnotationsAnnotatedWith(metaAnnotation);
+ assertNotNull("Null result", result);
+ AnnotationItem<? extends Annotation>[] items = result.getAnnotations();
+ assertNotNull("Null items", items);
+ ExpectedAnnotations actual = emptyExpectedAnnotations();
+ for (AnnotationItem<? extends Annotation> item : items)
+ {
+ assertNotNull("Null annotation item " + Arrays.asList(items), item);
+ Annotation annotation = item.getAnnotation();
+ assertNotNull("Null annotation " + Arrays.asList(items), annotation);
+ actual.add(annotation.annotationType());
+ }
+
+ assertExpectedAnnotations("Annotations", expected, actual);
+ }
+
+ /**
+ * Check the annotations annotated with a meta annotation is not present
+ *
+ * @param metaData the meta data
+ * @param metaAnnotation the meya annotation
+ * @param expected the expected annotation classes
+ * @param local whether to test the local annotations
+ * @throws Exception for any error
+ */
+ protected void assertNoAnnotationsAnnotatedWith(MetaData metaData, Class<? extends Annotation> metaAnnotation) throws Exception
+ {
+ assertNotNull(metaData);
+
+ Annotation[] result = metaData.getAnnotationsAnnotatedWith(metaAnnotation);
+ assertNotNull("Null result", result);
+ assertEmpty(result);
+ }
+
+ /**
+ * Check the annotations annotated with a meta annotation is not present
+ *
+ * @param metaData the meta data retrieval
+ * @param metaAnnotation the meya annotation
+ * @param expected the expected annotation classes
+ * @param local whether to test the local annotations
+ * @throws Exception for any error
+ */
+ protected void assertNoAnnotationsAnnotatedWith(MetaDataRetrieval metaData, Class<? extends Annotation> metaAnnotation) throws Exception
+ {
+ assertNotNull(metaData);
+
+ AnnotationsItem result = metaData.retrieveAnnotationsAnnotatedWith(metaAnnotation);
+ assertNotNull("Null result", result);
+ AnnotationItem<?>[] items = result.getAnnotations();
+ assertNotNull("Null items", items);
+ assertEmpty(items);
+ }
+ /**
* Check the annotations
*
* @param metaData the meta data
Modified: projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/context/MetaDataContextAnnotationTest.java
===================================================================
--- projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/context/MetaDataContextAnnotationTest.java 2009-12-04 16:39:11 UTC (rev 97469)
+++ projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/context/MetaDataContextAnnotationTest.java 2009-12-04 16:56:15 UTC (rev 97470)
@@ -24,6 +24,8 @@
import org.jboss.metadata.spi.MetaData;
import org.jboss.metadata.spi.loader.MutableMetaDataLoader;
import org.jboss.test.metadata.shared.support.ExpectedAnnotations;
+import org.jboss.test.metadata.shared.support.MetaAnnotation1;
+import org.jboss.test.metadata.shared.support.MetaAnnotation2;
import org.jboss.test.metadata.shared.support.TestAnnotation;
import org.jboss.test.metadata.shared.support.TestAnnotation1;
import org.jboss.test.metadata.shared.support.TestAnnotation1Impl;
@@ -49,15 +51,21 @@
ExpectedAnnotations expected = emptyExpectedAnnotations();
long last = metaData.getValidTime();
assertNoAnnotation(metaData, TestAnnotation.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
TestAnnotation annotation = new TestAnnotationImpl();
last = assertAddAnnotationNoPrevious(metaData, loader, annotation, expected, last);
assertAnnotation(metaData, TestAnnotation.class);
+ assertAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class, expected);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expected, local);
assertRemoveAnnotation(metaData, loader, TestAnnotation.class, expected, last, false);
assertNoAnnotation(metaData, TestAnnotation.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expected, local);
}
@@ -92,11 +100,15 @@
long last = metaData.getValidTime();
assertNoAnnotation(metaData, TestAnnotation1.class);
assertNoAnnotation(metaData, TestAnnotation2.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
TestAnnotation1 annotation1 = new TestAnnotation1Impl();
last = assertAddAnnotationNoPrevious(metaData, loader1, annotation1, expected, last);
assertAnnotation(metaData, TestAnnotation1.class);
assertNoAnnotation(metaData, TestAnnotation2.class);
+ assertAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class, expected);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expected, local);
@@ -104,18 +116,25 @@
last = assertAddAnnotationNoPrevious(metaData, loader2, annotation2, expected, last);
assertAnnotation(metaData, TestAnnotation1.class);
assertAnnotation(metaData, TestAnnotation2.class);
+ assertAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class, expectedAnnotations(TestAnnotation1.class));
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
+
assertAllAnnotations(metaData, expected, local);
assertRemoveAnnotation(metaData, loader1, TestAnnotation1.class, expected, last, false);
assertNoAnnotation(metaData, TestAnnotation1.class);
assertAnnotation(metaData, TestAnnotation2.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expected, local);
assertRemoveAnnotation(metaData, loader2, TestAnnotation2.class, expected, last, false);
assertNoAnnotation(metaData, TestAnnotation1.class);
assertNoAnnotation(metaData, TestAnnotation2.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expected, local);
}
@@ -221,26 +240,35 @@
ExpectedAnnotations expected = emptyExpectedAnnotations();
long last = metaData.getValidTime();
assertNoAnnotation(metaData, TestAnnotation.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
TestAnnotation annotation1 = new TestAnnotationImpl();
last = assertAddAnnotationNoPrevious(metaData, loader1, annotation1, expected, last);
assertAnnotation(metaData, TestAnnotation.class);
+ assertAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class, expected);
assertAllAnnotations(metaData, expected, local);
TestAnnotation annotation2 = new TestAnnotationImpl();
last = assertAddAnnotationWithPrevious(metaData, loader2, annotation2, last);
assertAnnotation(metaData, TestAnnotation.class);
+ assertAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class, expected);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expected, local);
assertRemoveAnnotation(metaData, loader1, TestAnnotation.class, expected, last, true);
assertAnnotation(metaData, TestAnnotation.class);
+ assertAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class, expected);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expected, local);
assertRemoveAnnotation(metaData, loader2, TestAnnotation.class, expected, last, false);
assertNoAnnotation(metaData, TestAnnotation.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expected, local);
}
Modified: projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/loader/MutableAnnotationsTest.java
===================================================================
--- projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/loader/MutableAnnotationsTest.java 2009-12-04 16:39:11 UTC (rev 97469)
+++ projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/loader/MutableAnnotationsTest.java 2009-12-04 16:56:15 UTC (rev 97470)
@@ -23,6 +23,8 @@
import org.jboss.test.metadata.AbstractMetaDataTest;
import org.jboss.test.metadata.shared.support.ExpectedAnnotations;
+import org.jboss.test.metadata.shared.support.MetaAnnotation1;
+import org.jboss.test.metadata.shared.support.MetaAnnotation2;
import org.jboss.test.metadata.shared.support.MetaDataAndMutableMetaData;
import org.jboss.test.metadata.shared.support.NotPresentAnnotation;
import org.jboss.test.metadata.shared.support.TestAnnotation;
@@ -65,16 +67,22 @@
assertNoAnnotation(metaData, TestAnnotation.class);
assertNoAnnotation(metaData, NotPresentAnnotation.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expectedAnnotations);
last = assertAddAnnotationNoPrevious(metaData, new TestAnnotationImpl(), expectedAnnotations, last);
assertAnnotation(metaData, TestAnnotation.class);
assertNoAnnotation(metaData, NotPresentAnnotation.class);
+ assertAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class, expectedAnnotations(TestAnnotation.class));
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expectedAnnotations);
assertRemoveAnnotation(metaData, TestAnnotation.class, expectedAnnotations, last);
assertNoAnnotation(metaData, TestAnnotation.class);
assertNoAnnotation(metaData, NotPresentAnnotation.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expectedAnnotations);
}
@@ -87,30 +95,40 @@
assertNoAnnotation(metaData, TestAnnotation1.class);
assertNoAnnotation(metaData, TestAnnotation2.class);
assertNoAnnotation(metaData, NotPresentAnnotation.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expectedAnnotations);
last = assertAddAnnotationNoPrevious(metaData, new TestAnnotation1Impl(), expectedAnnotations, last);
assertAnnotation(metaData, TestAnnotation1.class);
assertNoAnnotation(metaData, TestAnnotation2.class);
assertNoAnnotation(metaData, NotPresentAnnotation.class);
+ assertAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class, expectedAnnotations(TestAnnotation1.class));
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expectedAnnotations);
last = assertAddAnnotationNoPrevious(metaData, new TestAnnotation2Impl(), expectedAnnotations, last);
assertAnnotation(metaData, TestAnnotation1.class);
assertAnnotation(metaData, TestAnnotation2.class);
assertNoAnnotation(metaData, NotPresentAnnotation.class);
+ assertAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class, expectedAnnotations(TestAnnotation1.class));
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expectedAnnotations);
assertRemoveAnnotation(metaData, TestAnnotation1.class, expectedAnnotations, last);
assertNoAnnotation(metaData, TestAnnotation1.class);
assertAnnotation(metaData, TestAnnotation2.class);
assertNoAnnotation(metaData, NotPresentAnnotation.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expectedAnnotations);
assertRemoveAnnotation(metaData, TestAnnotation2.class, expectedAnnotations, last);
assertNoAnnotation(metaData, TestAnnotation1.class);
assertNoAnnotation(metaData, TestAnnotation2.class);
assertNoAnnotation(metaData, NotPresentAnnotation.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expectedAnnotations);
}
@@ -122,16 +140,22 @@
assertNoAnnotation(metaData, TestAnnotation.class);
assertNoAnnotation(metaData, NotPresentAnnotation.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expectedAnnotations);
last = assertAddAnnotationNoPrevious(metaData, new TestAnnotationImpl(), expectedAnnotations, last);
assertAnnotation(metaData, TestAnnotation.class);
assertNoAnnotation(metaData, NotPresentAnnotation.class);
+ assertAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class, expectedAnnotations(TestAnnotation.class));
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expectedAnnotations);
last = assertAddAnnotationWithPrevious(metaData, new TestAnnotationImpl(), last);
assertAnnotation(metaData, TestAnnotation.class);
assertNoAnnotation(metaData, NotPresentAnnotation.class);
+ assertAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class, expectedAnnotations(TestAnnotation.class));
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expectedAnnotations);
}
@@ -143,17 +167,23 @@
assertNoAnnotation(metaData, TestAnnotation.class);
assertNoAnnotation(metaData, NotPresentAnnotation.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expectedAnnotations);
TestAnnotation annotation = new TestAnnotationImpl();
last = assertAddAnnotationNoPrevious(metaData, annotation, expectedAnnotations, last);
assertAnnotation(metaData, TestAnnotation.class);
assertNoAnnotation(metaData, NotPresentAnnotation.class);
+ assertAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class, expectedAnnotations(TestAnnotation.class));
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expectedAnnotations);
assertAddAnnotationWithPreviousSameObject(metaData, annotation, last);
assertAnnotation(metaData, TestAnnotation.class);
assertNoAnnotation(metaData, NotPresentAnnotation.class);
+ assertAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class, expectedAnnotations(TestAnnotation.class));
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expectedAnnotations);
}
Modified: projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/loader/MutableMetaDataLoaderAnnotationsInvalidationTest.java
===================================================================
--- projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/loader/MutableMetaDataLoaderAnnotationsInvalidationTest.java 2009-12-04 16:39:11 UTC (rev 97469)
+++ projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/loader/MutableMetaDataLoaderAnnotationsInvalidationTest.java 2009-12-04 16:56:15 UTC (rev 97470)
@@ -24,6 +24,8 @@
import org.jboss.metadata.spi.loader.MutableMetaDataLoader;
import org.jboss.test.metadata.AbstractMetaDataTest;
import org.jboss.test.metadata.shared.support.ExpectedAnnotations;
+import org.jboss.test.metadata.shared.support.MetaAnnotation1;
+import org.jboss.test.metadata.shared.support.MetaAnnotation2;
import org.jboss.test.metadata.shared.support.NotPresentAnnotation;
import org.jboss.test.metadata.shared.support.TestAnnotation;
import org.jboss.test.metadata.shared.support.TestAnnotation1;
@@ -52,6 +54,8 @@
ExpectedAnnotations expectedAnnotations = emptyExpectedAnnotations();
assertNoAnnotation(metaData, NotPresentAnnotation.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expectedAnnotations);
assertValidTimeUnchanged(metaData, last);
@@ -65,16 +69,22 @@
assertNoAnnotation(metaData, TestAnnotation.class);
assertNoAnnotation(metaData, NotPresentAnnotation.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expectedAnnotations);
last = assertAddAnnotationNoPrevious(metaData, new TestAnnotationImpl(), expectedAnnotations, last);
assertAnnotation(metaData, TestAnnotation.class);
assertNoAnnotation(metaData, NotPresentAnnotation.class);
+ assertAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class, expectedAnnotations);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expectedAnnotations);
assertRemoveAnnotation(metaData, TestAnnotation.class, expectedAnnotations, last);
assertNoAnnotation(metaData, TestAnnotation.class);
assertNoAnnotation(metaData, NotPresentAnnotation.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expectedAnnotations);
}
@@ -87,30 +97,40 @@
assertNoAnnotation(metaData, TestAnnotation1.class);
assertNoAnnotation(metaData, TestAnnotation2.class);
assertNoAnnotation(metaData, NotPresentAnnotation.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expectedAnnotations);
last = assertAddAnnotationNoPrevious(metaData, new TestAnnotation1Impl(), expectedAnnotations, last);
assertAnnotation(metaData, TestAnnotation1.class);
assertNoAnnotation(metaData, TestAnnotation2.class);
assertNoAnnotation(metaData, NotPresentAnnotation.class);
+ assertAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class, expectedAnnotations);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expectedAnnotations);
last = assertAddAnnotationNoPrevious(metaData, new TestAnnotation2Impl(), expectedAnnotations, last);
assertAnnotation(metaData, TestAnnotation1.class);
assertAnnotation(metaData, TestAnnotation2.class);
assertNoAnnotation(metaData, NotPresentAnnotation.class);
+ assertAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class, expectedAnnotations(TestAnnotation1.class));
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expectedAnnotations);
assertRemoveAnnotation(metaData, TestAnnotation1.class, expectedAnnotations, last);
assertNoAnnotation(metaData, TestAnnotation1.class);
assertAnnotation(metaData, TestAnnotation2.class);
assertNoAnnotation(metaData, NotPresentAnnotation.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expectedAnnotations);
assertRemoveAnnotation(metaData, TestAnnotation2.class, expectedAnnotations, last);
assertNoAnnotation(metaData, TestAnnotation1.class);
assertNoAnnotation(metaData, TestAnnotation2.class);
assertNoAnnotation(metaData, NotPresentAnnotation.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
assertAllAnnotations(metaData, expectedAnnotations);
}
Modified: projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/loader/reflection/support/TestAnnotationWithValue.java
===================================================================
--- projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/loader/reflection/support/TestAnnotationWithValue.java 2009-12-04 16:39:11 UTC (rev 97469)
+++ projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/loader/reflection/support/TestAnnotationWithValue.java 2009-12-04 16:56:15 UTC (rev 97470)
@@ -24,7 +24,10 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import org.jboss.test.metadata.shared.support.MetaAnnotation1;
+
@Retention(RetentionPolicy.RUNTIME)
+ at MetaAnnotation1
public @interface TestAnnotationWithValue
{
String value();
Modified: projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/loader/reflection/test/AnnotatedElementLoaderDeclaredMethodSignatureUnitTestCase.java
===================================================================
--- projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/loader/reflection/test/AnnotatedElementLoaderDeclaredMethodSignatureUnitTestCase.java 2009-12-04 16:39:11 UTC (rev 97469)
+++ projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/loader/reflection/test/AnnotatedElementLoaderDeclaredMethodSignatureUnitTestCase.java 2009-12-04 16:56:15 UTC (rev 97470)
@@ -31,6 +31,7 @@
import org.jboss.test.metadata.loader.reflection.support.TestAnnotationWithValue;
import org.jboss.test.metadata.loader.reflection.support.TestSub;
import org.jboss.test.metadata.loader.reflection.support.TestSuper;
+import org.jboss.test.metadata.shared.support.MetaAnnotation1;
/**
* AnnotatedElementLoaderNotPublicUnitTestCase.
@@ -78,6 +79,7 @@
TestAnnotationWithValue annotation = metaData.getAnnotation(TestAnnotationWithValue.class);
assertNotNull(annotation);
assertEquals(expected, annotation.value());
+ assertAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class, expectedAnnotations(TestAnnotationWithValue.class));
}
protected MetaData createMetaData()
Modified: projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/loader/reflection/test/AnnotatedElementLoaderNotPublicUnitTestCase.java
===================================================================
--- projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/loader/reflection/test/AnnotatedElementLoaderNotPublicUnitTestCase.java 2009-12-04 16:39:11 UTC (rev 97469)
+++ projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/loader/reflection/test/AnnotatedElementLoaderNotPublicUnitTestCase.java 2009-12-04 16:56:15 UTC (rev 97470)
@@ -34,6 +34,8 @@
import org.jboss.test.metadata.loader.reflection.support.NotPublic;
import org.jboss.test.metadata.loader.reflection.support.SuperClassOfNotPublic;
import org.jboss.test.metadata.shared.support.ExpectedAnnotations;
+import org.jboss.test.metadata.shared.support.MetaAnnotation1;
+import org.jboss.test.metadata.shared.support.MetaAnnotation2;
import org.jboss.test.metadata.shared.support.NotPresentAnnotation;
import org.jboss.test.metadata.shared.support.TestAnnotation;
@@ -103,8 +105,11 @@
expectedAnnotations.add(TestAnnotation.class);
assertAllAnnotations(metaData, expectedAnnotations, false);
- }
+ assertAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class, expectedAnnotations);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
+}
+
protected MetaData createMetaData()
{
AnnotatedElementMetaDataLoader loader = new AnnotatedElementMetaDataLoader(NotPublic.class);
Modified: projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/retrieval/support/TestMetaDataRetrieval.java
===================================================================
--- projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/retrieval/support/TestMetaDataRetrieval.java 2009-12-04 16:39:11 UTC (rev 97469)
+++ projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/retrieval/support/TestMetaDataRetrieval.java 2009-12-04 16:56:15 UTC (rev 97470)
@@ -75,6 +75,12 @@
lastMethod = "retrieveLocalAnnotations";
return null;
}
+
+ public AnnotationsItem retrieveAnnotationsAnnotatedWith(Class<? extends Annotation> meta)
+ {
+ lastMethod = "retrieveAnnotationsAnnotatedWith";
+ return null;
+ }
public MetaDatasItem retrieveMetaData()
{
Modified: projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/retrieval/test/HelpersUnitTestCase.java
===================================================================
--- projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/retrieval/test/HelpersUnitTestCase.java 2009-12-04 16:39:11 UTC (rev 97469)
+++ projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/retrieval/test/HelpersUnitTestCase.java 2009-12-04 16:56:15 UTC (rev 97470)
@@ -35,6 +35,7 @@
import org.jboss.metadata.spi.retrieval.simple.SimpleMetaDataItem;
import org.jboss.test.metadata.AbstractMetaDataTest;
import org.jboss.test.metadata.retrieval.support.TestMetaDataRetrieval;
+import org.jboss.test.metadata.shared.support.MetaAnnotation1;
import org.jboss.test.metadata.shared.support.TestAnnotation;
import org.jboss.test.metadata.shared.support.TestAnnotation1;
import org.jboss.test.metadata.shared.support.TestAnnotation1Impl;
@@ -115,6 +116,9 @@
metaData.isMetaDataPresent("Hello", Object.class);
assertEquals("retrieveMetaData(String)", test.lastMethod);
+
+ metaData.getAnnotationsAnnotatedWith(MetaAnnotation1.class);
+ assertEquals("retrieveAnnotationsAnnotatedWith", test.lastMethod);
}
public void testAnnotationsToMetaDatasBridge() throws Exception
Modified: projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/BasicAnnotationsTest.java
===================================================================
--- projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/BasicAnnotationsTest.java 2009-12-04 16:39:11 UTC (rev 97469)
+++ projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/BasicAnnotationsTest.java 2009-12-04 16:56:15 UTC (rev 97470)
@@ -24,6 +24,8 @@
import org.jboss.metadata.spi.MetaData;
import org.jboss.test.metadata.AbstractMetaDataTest;
import org.jboss.test.metadata.shared.support.ExpectedAnnotations;
+import org.jboss.test.metadata.shared.support.MetaAnnotation1;
+import org.jboss.test.metadata.shared.support.MetaAnnotation2;
import org.jboss.test.metadata.shared.support.NotPresentAnnotation;
import org.jboss.test.metadata.shared.support.TestAnnotation;
import org.jboss.test.metadata.shared.support.TestAnnotation1;
@@ -53,6 +55,9 @@
assertNoAnnotation(metaData, NotPresentAnnotation.class);
assertAllAnnotations(metaData, expectedAnnotations, local);
+
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
}
protected abstract MetaData setupEmpty();
@@ -67,6 +72,9 @@
expectedAnnotations.add(TestAnnotation.class);
assertAllAnnotations(metaData, expectedAnnotations, local);
+
+ assertAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class, expectedAnnotations);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
}
protected abstract MetaData setupTestAnnotation();
@@ -83,6 +91,10 @@
expectedAnnotations.add(TestAnnotation1.class);
expectedAnnotations.add(TestAnnotation2.class);
assertAllAnnotations(metaData, expectedAnnotations, local);
+
+ expectedAnnotations.remove(TestAnnotation2.class);
+ assertAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class, expectedAnnotations);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
}
protected abstract MetaData setupTestAnnotation12();
Modified: projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/ComponentBasicAnnotationsTest.java
===================================================================
--- projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/ComponentBasicAnnotationsTest.java 2009-12-04 16:39:11 UTC (rev 97469)
+++ projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/ComponentBasicAnnotationsTest.java 2009-12-04 16:56:15 UTC (rev 97470)
@@ -29,6 +29,8 @@
import org.jboss.metadata.spi.signature.MethodSignature;
import org.jboss.test.metadata.AbstractMetaDataTest;
import org.jboss.test.metadata.shared.support.ExpectedAnnotations;
+import org.jboss.test.metadata.shared.support.MetaAnnotation1;
+import org.jboss.test.metadata.shared.support.MetaAnnotation2;
import org.jboss.test.metadata.shared.support.NotPresentAnnotation;
import org.jboss.test.metadata.shared.support.TestAnnotation;
import org.jboss.test.metadata.shared.support.TestAnnotation1;
@@ -103,6 +105,9 @@
assertNoAnnotation(metaData, NotPresentAnnotation.class);
assertAllAnnotations(metaData, expectedAnnotations, local);
+
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
}
public void testFieldTestAnnotation() throws Exception
@@ -151,6 +156,9 @@
expectedAnnotations.add(TestAnnotation.class);
assertAllAnnotations(metaData, expectedAnnotations, local);
+
+ assertAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class, expectedAnnotations);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
}
public void testFieldTestAnnotation12() throws Exception
@@ -199,6 +207,9 @@
assertNoAnnotation(metaData, NotPresentAnnotation.class);
expectedAnnotations.add(TestAnnotation1.class);
+ assertAnnotationsAnnotatedWith(metaData, MetaAnnotation1.class, expectedAnnotations);
+ assertNoAnnotationsAnnotatedWith(metaData, MetaAnnotation2.class);
+
expectedAnnotations.add(TestAnnotation2.class);
assertAllAnnotations(metaData, expectedAnnotations, local);
}
Added: projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/support/MetaAnnotation1.java
===================================================================
--- projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/support/MetaAnnotation1.java (rev 0)
+++ projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/support/MetaAnnotation1.java 2009-12-04 16:56:15 UTC (rev 97470)
@@ -0,0 +1,38 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, 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.test.metadata.shared.support;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+ at Retention(RetentionPolicy.RUNTIME)
+ at Target(ElementType.ANNOTATION_TYPE)
+public @interface MetaAnnotation1 {
+
+}
Added: projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/support/MetaAnnotation2.java
===================================================================
--- projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/support/MetaAnnotation2.java (rev 0)
+++ projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/support/MetaAnnotation2.java 2009-12-04 16:56:15 UTC (rev 97470)
@@ -0,0 +1,38 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, 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.test.metadata.shared.support;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+ at Retention(RetentionPolicy.RUNTIME)
+ at Target(ElementType.ANNOTATION_TYPE)
+public @interface MetaAnnotation2 {
+
+}
Modified: projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/support/MetaDataAndMutableMetaDataImpl.java
===================================================================
--- projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/support/MetaDataAndMutableMetaDataImpl.java 2009-12-04 16:39:11 UTC (rev 97469)
+++ projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/support/MetaDataAndMutableMetaDataImpl.java 2009-12-04 16:56:15 UTC (rev 97470)
@@ -55,6 +55,11 @@
return metaData.getAnnotations();
}
+ public Annotation[] getAnnotationsAnnotatedWith(Class<? extends Annotation> meta)
+ {
+ return metaData.getAnnotationsAnnotatedWith(meta);
+ }
+
public Annotation[] getLocalAnnotations()
{
return metaData.getLocalAnnotations();
Modified: projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/support/TestAnnotation.java
===================================================================
--- projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/support/TestAnnotation.java 2009-12-04 16:39:11 UTC (rev 97469)
+++ projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/support/TestAnnotation.java 2009-12-04 16:56:15 UTC (rev 97470)
@@ -31,6 +31,7 @@
* @version $Revision$
*/
@Retention(RetentionPolicy.RUNTIME)
+ at MetaAnnotation1
public @interface TestAnnotation
{
}
Modified: projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/support/TestAnnotation1.java
===================================================================
--- projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/support/TestAnnotation1.java 2009-12-04 16:39:11 UTC (rev 97469)
+++ projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/shared/support/TestAnnotation1.java 2009-12-04 16:56:15 UTC (rev 97470)
@@ -31,6 +31,7 @@
* @version $Revision$
*/
@Retention(RetentionPolicy.RUNTIME)
+ at MetaAnnotation1
public @interface TestAnnotation1
{
}
More information about the jboss-cvs-commits
mailing list