[jboss-cvs] JBossAS SVN: r76002 - in projects/metadata/trunk/src: main/java/org/jboss/metadata/annotation/creator/client and 8 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Jul 18 12:06:03 EDT 2008
Author: emuckenhuber
Date: 2008-07-18 12:06:03 -0400 (Fri, 18 Jul 2008)
New Revision: 76002
Added:
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractCreator.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AnnotationContext.java
Modified:
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractComponentProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractEJBProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractPersistenceContextProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractResourceProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractRunAsProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/DeclareRolesProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/EJBsClassProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/PostConstructMethodProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/PreDestroyMethodProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/Processor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ProcessorUtils.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ResourcesClassProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/client/ApplicationClient5MetaDataCreator.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractEnterpriseBeanProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractSessionBeanProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractTransactionAttributeProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/ApplicationExceptionProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/AroundInvokeProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/DenyAllProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/EjbJar30Creator.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/ImplicitLocalProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/InitProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/InterceptorsProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/LocalHomeProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/LocalProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/MessageDrivenProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/PermitAllProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/PostActivateMethodProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/PrePassivateMethodProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/RemoteHomeProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/RemoteProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/RemoveProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/RolesAllowedProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/StatefulProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/StatelessProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/TimeoutProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractEnterpriseBeanProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractTransactionAttributeProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/ApplicationExceptionProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AroundInvokeProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/DenyAllProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/ImplicitLocalProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/InitProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/InterceptorsProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBoss50Creator.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossAspectDomainProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossCacheConfigProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossClusteredProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossConsumerProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossJndiPolicyProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossManagementProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossPoolProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossProducerProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossProducersProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossResourceAdapterProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossSerializedConcurrentAccessProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossServiceProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/LocalBindingProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/LocalHomeBindingProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/LocalHomeProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/LocalProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/MessageDrivenProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/PermitAllProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/PostActivateMethodProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/PrePassivateMethodProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteBindingProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteBindingsProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteHomeBindingProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteHomeProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoveProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RolesAllowedProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/StatefulProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/StatelessProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/TimeoutProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/jboss/AbstractComponentProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/jboss/PostConstructMethodProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/jboss/PreDestroyMethodProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/web/Web25MetaDataCreator.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/AbstractWebServiceRefProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceHandlerChainProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceRefsClassProcessor.java
projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/AnnotationClientUnitTestCase.java
projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3UnitTestCase.java
projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/JBossAnnotationEjb3UnitTestCase.java
projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/AnnotationWebUnitTestCase.java
Log:
[JBMETA-72] expose processed annotations
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractComponentProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractComponentProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractComponentProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -22,19 +22,7 @@
package org.jboss.metadata.annotation.creator;
import java.lang.reflect.AnnotatedElement;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.lang.reflect.TypeVariable;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import org.jboss.logging.Logger;
import org.jboss.metadata.annotation.creator.ws.WebServiceRefClassProcessor;
import org.jboss.metadata.annotation.creator.ws.WebServiceRefFieldProcessor;
import org.jboss.metadata.annotation.creator.ws.WebServiceRefMethodProcessor;
@@ -55,28 +43,12 @@
* @version $Revision$
*/
public abstract class AbstractComponentProcessor<MD>
- extends AbstractFinderUser
+ extends AbstractProcessor<MD>
{
- private static Logger log = Logger.getLogger(AbstractComponentProcessor.class);
- /** Map<Processor metdata type class, List<Processor for classes>> */
- protected Map<Class<?>, List<Processor<Object, Class<?>>>> typeProcessors;
- /** Map<Processor metdata type class, List<Processor for fields>> */
- protected Map<Class<?>, List<Processor<Object, Field>>> fieldProcessors;
- /** Map<Processor metdata type class, List<Processor for methods>> */
- protected Map<Class<?>, List<Processor<Object, Method>>> methodProcessors;
- /** */
- protected Set<Class> boundedTypes = new HashSet<Class>();
-
- /**
- * @param finder
- */
public AbstractComponentProcessor(AnnotationFinder<AnnotatedElement> finder)
{
super(finder);
- typeProcessors = new HashMap<Class<?>, List<Processor<Object,Class<?>>>>();
- fieldProcessors = new HashMap<Class<?>, List<Processor<Object,Field>>>();
- methodProcessors = new HashMap<Class<?>, List<Processor<Object,Method>>>();
// Add component environment processors
// @Resources/@Resource
@@ -103,49 +75,9 @@
addTypeProcessor(new WebServiceRefsClassProcessor(finder));
}
- public void addFieldProcessor(Processor processor)
- {
- Class processorType = getProcessorMetaDataType(processor);
- if(log.isTraceEnabled())
- log.trace("addFieldProcessor: "+processor+", for type: "+processorType);
- List<Processor<Object, Field>> processors = fieldProcessors.get(processorType);
- if(processors == null)
- {
- processors = new ArrayList<Processor<Object, Field>>();
- fieldProcessors.put(processorType, processors);
- }
- processors.add(processor);
- }
-
- public void addMethodProcessor(Processor processor)
- {
- Class processorType = getProcessorMetaDataType(processor);
- if(log.isTraceEnabled())
- log.trace("addMethodProcessor: "+processor+", for type: "+processorType);
- List<Processor<Object, Method>> processors = methodProcessors.get(processorType);
- if(processors == null)
- {
- processors = new ArrayList<Processor<Object, Method>>();
- methodProcessors.put(processorType, processors);
- }
- processors.add(processor);
- }
- public void addTypeProcessor(Processor processor)
- {
- Class processorType = getProcessorMetaDataType(processor);
- if(log.isTraceEnabled())
- log.trace("addTypeProcessor: "+processor+", for type: "+processorType);
- List<Processor<Object, Class<?>>> processors = typeProcessors.get(processorType);
- if(processors == null)
- {
- processors = new ArrayList<Processor<Object, Class<?>>>();
- typeProcessors.put(processorType, processors);
- }
- processors.add(processor);
- }
-
/**
* Process type for remote environment metadata related annotations
+ *
* @param metaData
* @param type
*/
@@ -180,8 +112,10 @@
}
processClass(wsRefs, type);
}
+
/**
* Process type for environment metadata related annotations
+ *
* @param metaData
* @param type
*/
@@ -198,174 +132,4 @@
}
processClass(pcRefs, type);
}
- /**
- * Process type for component metadata related annotations
- * @param metaData
- * @param type
- */
- public void process(MD metaData, Class<?> type)
- {
- processClass(metaData, type);
- }
-
- /**
- * Process a the cls annotations at the type, method and field levels
- * into the argument metaData. Only processors registered for the metaData
- * type will be run.
- *
- * @param <T>
- * @param metaData
- * @param cls
- */
- protected <T> void processClass(T metaData, Class<?> cls)
- {
- Class<?> type = metaData.getClass();
- boolean trace = log.isTraceEnabled();
- int processorCount = processClass(metaData, cls, type);
- if(trace)
- log.trace("Found "+processorCount+" processors for type: "+type);
- // See if metaData has a bounded type
- type = type.getSuperclass();
- while(boundedTypes.contains(type) == false && type != Object.class)
- {
- type = type.getSuperclass();
- }
- //
- if(type != Object.class)
- {
- if(trace)
- log.trace("Reprocessing class using bounded processor type: "+type);
- processClass(metaData, cls, type);
- }
- // Also process the interfaces of the metadata class
- for(Class<?> iface : metaData.getClass().getInterfaces())
- {
- if(boundedTypes.contains(iface));
- {
- processClass(metaData, cls, iface);
- }
- }
- }
- private <T> int processClass(T metaData, Class<?> cls, Class processorType)
- {
- boolean trace = log.isTraceEnabled();
- int processorCount = 0;
- if(trace)
- log.trace("processClass for metaData: "+processorType+", class: "+cls);
-
- List<Processor<Object, Class<?>>> tps = typeProcessors.get(processorType);
- if(tps != null)
- {
- processorCount += tps.size();
- if(trace)
- log.trace("typeProcessors("+tps.size()+") for metaData: "+tps);
- for(Processor<Object, Class<?>> processor : tps)
- {
- processor.process(metaData, cls);
- }
-
- for(Class<?> intf : cls.getInterfaces())
- {
- for(Processor<Object, Class<?>> processor : tps)
- {
- processor.process(metaData, intf);
- }
- }
- }
-
- List<Processor<Object, Field>> fps = fieldProcessors.get(processorType);
- if(fps != null)
- {
- processorCount += fps.size();
- if(trace)
- log.trace("fieldProcessors("+fps.size()+") for metaData: "+fps);
- Field[] fields = {};
- try
- {
- fields = cls.getDeclaredFields();
- }
- catch(Throwable e)
- {
- log.debug("Failed to get DeclaredFields for: "+cls, e);
- }
- for(Field field : fields)
- {
- for(Processor<Object, Field> processor : fps)
- {
- processor.process(metaData, field);
- }
- }
- }
-
- List<Processor<Object, Method>> mps = methodProcessors.get(processorType);
- if(mps != null)
- {
- processorCount += mps.size();
- if(trace)
- log.trace("methodProcessors("+mps.size()+") for metaData: "+mps);
- Method[] methods = {};
- try
- {
- methods = cls.getDeclaredMethods();
- }
- catch(Throwable e)
- {
- log.debug("Failed to get DeclaredMethods for: "+cls, e);
- }
- for(Method method : methods)
- {
- if(trace)
- log.trace("process method " + method);
- for(Processor<Object, Method> processor : mps)
- {
- processor.process(metaData, method);
- }
- }
- }
-
- if(cls.getSuperclass() != null && cls.getSuperclass() != Object.class)
- processorCount += processClass(metaData, cls.getSuperclass(), processorType);
- return processorCount;
- }
-
- /**
- * Determine the Processor<T, ?> T generic processorType class.
- *
- * @param processor
- * @return The Class for the T parameter type. If this was an upper bound,
- * this will have been added to the boundedTypes set.
- */
- protected Class getProcessorMetaDataType(Processor processor)
- {
- // Find the Proccessor<T, ?> interface
- Type[] interfaces = processor.getClass().getGenericInterfaces();
- Type processorType = null;
- for(Type t : interfaces)
- {
- ParameterizedType pt = (ParameterizedType) t;
- Type rawType = pt.getRawType();
- if((rawType instanceof Class) && ((Class)rawType).getName().equals("org.jboss.metadata.annotation.creator.Processor"))
- {
- processorType = t;
- break;
- }
- }
- if(processorType == null)
- throw new IllegalStateException("No generic Processor interface found on: "+processor);
-
- // Get the type of the T parameter
- ParameterizedType pt = (ParameterizedType) processorType;
- Type t0 = pt.getActualTypeArguments()[0];
- Class t = null;
- if(t0 instanceof Class)
- t = (Class) t0;
- else if(t0 instanceof TypeVariable)
- {
- TypeVariable tv = (TypeVariable) t0;
- t = (Class)tv.getBounds()[0];
- boundedTypes.add(t);
- }
- return t;
- }
-
}
Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractCreator.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractCreator.java (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractCreator.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -0,0 +1,183 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.metadata.annotation.creator;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.AnnotatedElement;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.jboss.metadata.annotation.creator.AbstractProcessor.Scope;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+
+/**
+ * A abstract base creator.
+ *
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public abstract class AbstractCreator<MD> extends AbstractFinderUser
+{
+ /** The Processors */
+ private List<Processor<MD, Class<?>>> processors;
+
+ /** The processed annotations */
+ private Map<Scope, Set<Class<? extends Annotation>>> processedAnnotations;
+
+ /**
+ * The constructor.
+ *
+ * @param finder the AnnotationFinder
+ */
+ protected AbstractCreator(AnnotationFinder<AnnotatedElement> finder)
+ {
+ super(finder);
+ //
+ this.processors = new ArrayList<Processor<MD,Class<?>>>();
+ this.processedAnnotations = new HashMap<Scope, Set<Class<? extends Annotation>>>();
+ }
+
+ /**
+ * Abstract create method of a Creator<Collection<Class<?>, MD>.
+ *
+ * @param element the classes
+ * @return the metadata
+ */
+ public abstract MD create(Collection<Class<?>> element);
+
+ /**
+ * Add a Class<?> processor.
+ *
+ * @param processor
+ * @throws IllegalArgumentException
+ */
+ @SuppressWarnings("unchecked")
+ public void addProcessor(Processor<MD, Class<?>> processor)
+ {
+ if(processor == null)
+ throw new IllegalArgumentException("null processor.");
+
+ // Add annotations
+ if(processor instanceof AbstractProcessor)
+ addAnnotations((AbstractProcessor) processor);
+ else
+ addAnnotations(Scope.TYPE, processor.getAnnotationTypes());
+
+ this.processors.add(processor);
+ }
+
+ /**
+ * Process the meta data.
+ *
+ * @param metaData the meta data
+ * @param type a Class
+ * @throws IllegalArgumentException
+ */
+ protected void process(MD metaData, Class<?> type)
+ {
+ if(metaData == null)
+ throw new IllegalArgumentException("null metadata.");
+ if(type == null)
+ throw new IllegalArgumentException("null classes;");
+
+ for(Processor<MD, Class<?>> processor : processors)
+ {
+ processor.process(metaData, type);
+ }
+ }
+
+ /**
+ * Add the annotations handled by an AbstractProcessor.
+ *
+ * @param processor the abstract processor
+ */
+ @SuppressWarnings("unchecked")
+ private void addAnnotations(AbstractProcessor processor)
+ {
+ addAnnotations(Scope.TYPE, processor.getProcessedAnnotations(Scope.TYPE));
+ addAnnotations(Scope.METHOD, processor.getProcessedAnnotations(Scope.METHOD));
+ addAnnotations(Scope.FIELD, processor.getProcessedAnnotations(Scope.FIELD));
+ }
+
+ /**
+ * Add annotations to a specific Scope.
+ *
+ * @param scope the scope
+ * @param annotations a set of annotations
+ */
+ private void addAnnotations(Scope scope, Collection<Class<?extends Annotation>> annotations)
+ {
+ if(annotations == null)
+ return;
+
+ if(scope == null)
+ throw new IllegalArgumentException("null scope.");
+
+ if(this.processedAnnotations.get(scope) == null)
+ this.processedAnnotations.put(scope, new HashSet<Class<? extends Annotation>>());
+
+ this.processedAnnotations.get(scope).addAll(annotations);
+ }
+
+ /**
+ * Get annotations for a given Scope.
+ *
+ * @param scope the Scope
+ * @return the processed annotations
+ */
+ protected Collection<Class<? extends Annotation>> getAnnotationsForScope(Scope scope)
+ {
+ return this.processedAnnotations.get(scope);
+ }
+
+ /**
+ * Create a basic annotation context, based on the information of the added processors.
+ *
+ * @return the annotation context
+ */
+ public AnnotationContext getAnnotationContext()
+ {
+ return new AnnotationContext()
+ {
+ public Collection<Class<? extends Annotation>> getFieldAnnotations()
+ {
+ return processedAnnotations.get(Scope.FIELD);
+ }
+
+ public Collection<Class<? extends Annotation>> getMethodAnnotations()
+ {
+ return processedAnnotations.get(Scope.METHOD);
+ }
+
+ public Collection<Class<? extends Annotation>> getTypeAnnotations()
+ {
+ return processedAnnotations.get(Scope.TYPE);
+ }
+ };
+ }
+}
+
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractEJBProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractEJBProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractEJBProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,7 +21,9 @@
*/
package org.jboss.metadata.annotation.creator;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import java.util.Set;
import javax.ejb.EJB;
@@ -107,4 +109,9 @@
return ref;
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(EJB.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractPersistenceContextProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractPersistenceContextProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractPersistenceContextProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,7 +21,9 @@
*/
package org.jboss.metadata.annotation.creator;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import java.util.Set;
import javax.persistence.PersistenceContext;
@@ -99,4 +101,9 @@
return ref;
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(PersistenceContext.class);
+ }
}
Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractProcessor.java (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -0,0 +1,381 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.metadata.annotation.creator;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.AnnotatedElement;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.lang.reflect.TypeVariable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.jboss.logging.Logger;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+
+/**
+ * A abstract base processor.
+ *
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public abstract class AbstractProcessor<MD> extends AbstractFinderUser
+{
+
+ /** Map<Processor metdata type class, List<Processor for classes>> */
+ private Map<Class<?>, List<Processor<Object, Class<?>>>> typeProcessors;
+
+ /** Map<Processor metdata type class, List<Processor for fields>> */
+ private Map<Class<?>, List<Processor<Object, Field>>> fieldProcessors;
+
+ /** Map<Processor metdata type class, List<Processor for methods>> */
+ private Map<Class<?>, List<Processor<Object, Method>>> methodProcessors;
+
+ /** The map of processed Annotations */
+ private Map<Scope, Set<Class<? extends Annotation>>> processedAnnotations;
+
+ /** The processed types. */
+ private Set<Class<?>> processedTypes = new HashSet<Class<?>>();
+
+ /** The logger */
+ private final static Logger log = Logger.getLogger(AbstractProcessor.class);
+
+ /**
+ * The constructor.
+ *
+ * @param finder the AnnotationFinder
+ */
+ public AbstractProcessor(AnnotationFinder<AnnotatedElement> finder)
+ {
+ super(finder);
+ //
+ typeProcessors = new HashMap<Class<?>, List<Processor<Object,Class<?>>>>();
+ fieldProcessors = new HashMap<Class<?>, List<Processor<Object,Field>>>();
+ methodProcessors = new HashMap<Class<?>, List<Processor<Object,Method>>>();
+ processedAnnotations = new HashMap<Scope, Set<Class<? extends Annotation>>>();
+ }
+
+ /**
+ * Add a Field processor.
+ *
+ * @param processor Processor<Object, Field>
+ */
+ public void addFieldProcessor(Processor processor)
+ {
+ Class<?> processorType = getProcessorMetaDataType(processor, Scope.FIELD);
+ if(log.isTraceEnabled())
+ log.trace("addFieldProcessor: " + processor + ", for type: " + processorType);
+ List<Processor<Object, Field>> processors = fieldProcessors.get(processorType);
+ if(processors == null)
+ {
+ processors = new ArrayList<Processor<Object, Field>>();
+ fieldProcessors.put(processorType, processors);
+ }
+ processors.add(processor);
+ }
+
+ /**
+ * Add a method processor.
+ *
+ * @param processor Processor<Object, Method>>
+ */
+ public void addMethodProcessor(Processor processor)
+ {
+ Class<?> processorType = getProcessorMetaDataType(processor, Scope.METHOD);
+ if(log.isTraceEnabled())
+ log.trace("addMethodProcessor: " + processor + ", for type: " + processorType);
+ List<Processor<Object, Method>> processors = methodProcessors.get(processorType);
+ if(processors == null)
+ {
+ processors = new ArrayList<Processor<Object, Method>>();
+ methodProcessors.put(processorType, processors);
+ }
+ processors.add(processor);
+ }
+
+ /**
+ * Add a type processor.
+ *
+ * @param processor Processor<Object, Class<?>>
+ */
+ public void addTypeProcessor(Processor processor)
+ {
+ Class<?> processorType = getProcessorMetaDataType(processor, Scope.TYPE);
+ if(log.isTraceEnabled())
+ log.trace("addTypeProcessor: " + processor + ", for type: " + processorType);
+ List<Processor<Object, Class<?>>> processors = typeProcessors.get(processorType);
+ if(processors == null)
+ {
+ processors = new ArrayList<Processor<Object, Class<?>>>();
+ typeProcessors.put(processorType, processors);
+ }
+ processors.add(processor);
+ }
+
+ /**
+ * Process type for component meta data related annotations
+ *
+ * @param metaData
+ * @param type
+ */
+ public void process(MD metaData, Class<?> type)
+ {
+ processClass(metaData, type);
+ }
+
+ /**
+ * Process a the cls annotations at the type, method and field levels
+ * into the argument metaData. Only processors registered for the metaData
+ * type will be run.
+ *
+ * @param <T>
+ * @param metaData
+ * @param cls
+ */
+ protected <T> void processClass(T metaData, Class<?> cls)
+ {
+ Class<?> type = metaData.getClass();
+ boolean trace = log.isTraceEnabled();
+
+ // See if we process this type
+ while(type != Object.class)
+ {
+ if(processedTypes.contains(type))
+ {
+ int processorCount = processClass(metaData, cls, type);
+ if(trace)
+ log.trace("Found "+processorCount+" processors for type: "+type);
+ }
+ // Also process each superClass of the meta data
+ type = type.getSuperclass();
+ }
+
+ // Also process the interfaces of the meta data class
+ for(Class<?> iface : metaData.getClass().getInterfaces())
+ {
+ if(processedTypes.contains(iface));
+ {
+ processClass(metaData, cls, iface);
+ }
+ }
+ }
+
+ /**
+ * Process the class and superClasses, based on their processorType.
+ *
+ * @param <T>
+ * @param metaData the metadata
+ * @param cls the class
+ * @param processorType the processed metadata class
+ * @return
+ */
+ protected <T> int processClass(T metaData, Class<?> cls, Class processorType)
+ {
+ boolean trace = log.isTraceEnabled();
+ int processorCount = 0;
+ if(trace)
+ log.trace("processClass for metaData: " + processorType + ", class: " + cls);
+
+ List<Processor<Object, Class<?>>> tps = typeProcessors.get(processorType);
+ if(tps != null)
+ {
+ processorCount += tps.size();
+ if(trace)
+ log.trace("typeProcessors(" + tps.size() + ") for metaData: "+tps);
+ // Process class
+ for(Processor<Object, Class<?>> processor : tps)
+ {
+ processor.process(metaData, cls);
+ }
+ // Process interfaces
+ for(Class<?> intf : cls.getInterfaces())
+ {
+ for(Processor<Object, Class<?>> processor : tps)
+ {
+ processor.process(metaData, intf);
+ }
+ }
+ }
+
+ List<Processor<Object, Field>> fps = fieldProcessors.get(processorType);
+ if(fps != null)
+ {
+ processorCount += fps.size();
+ if(trace)
+ log.trace("fieldProcessors(" + fps.size() + ") for metaData: " + fps);
+ Field[] fields = {};
+ try
+ {
+ fields = cls.getDeclaredFields();
+ }
+ catch(Throwable e)
+ {
+ log.debug("Failed to get DeclaredFields for: " + cls, e);
+ }
+ // Process fields
+ for(Field field : fields)
+ {
+ for(Processor<Object, Field> processor : fps)
+ {
+ processor.process(metaData, field);
+ }
+ }
+ }
+
+ List<Processor<Object, Method>> mps = methodProcessors.get(processorType);
+ if(mps != null)
+ {
+ processorCount += mps.size();
+ if(trace)
+ log.trace("methodProcessors(" + mps.size() + ") for metaData: " + mps);
+ Method[] methods = {};
+ try
+ {
+ methods = cls.getDeclaredMethods();
+ }
+ catch(Throwable e)
+ {
+ log.debug("Failed to get DeclaredMethods for: " + cls, e);
+ }
+ // Process methods
+ for(Method method : methods)
+ {
+ if(trace)
+ log.trace("process method " + method);
+ for(Processor<Object, Method> processor : mps)
+ {
+ processor.process(metaData, method);
+ }
+ }
+ }
+
+ // Process superclass
+ if(cls.getSuperclass() != null && cls.getSuperclass() != Object.class)
+ processorCount += processClass(metaData, cls.getSuperclass(), processorType);
+ return processorCount;
+ }
+
+ /**
+ * Determine the Processor<T, ?> T generic processorType class.
+ *
+ * @param processor
+ * @return The Class for the T parameter type.
+ */
+ private Class<?> getProcessorMetaDataType(Processor processor, Scope scope)
+ {
+ // Find the Proccessor<T, ?> interface
+ Type[] interfaces = processor.getClass().getGenericInterfaces();
+ Type processorType = null;
+ for(Type t : interfaces)
+ {
+ ParameterizedType pt = (ParameterizedType) t;
+ Type rawType = pt.getRawType();
+ if((rawType instanceof Class) && ((Class<?>)rawType).getName().equals(Processor.class.getName()))
+ {
+ processorType = t;
+ break;
+ }
+ }
+ if(processorType == null)
+ throw new IllegalStateException("No generic Processor interface found on: "+processor);
+
+ // Get the type of the T parameter
+ ParameterizedType pt = (ParameterizedType) processorType;
+ Type t0 = pt.getActualTypeArguments()[0];
+ Class<?> t = null;
+ if(t0 instanceof Class)
+ t = (Class<?>) t0;
+ else if(t0 instanceof TypeVariable)
+ {
+ TypeVariable tv = (TypeVariable) t0;
+ t = (Class<?>)tv.getBounds()[0];
+ }
+
+ // Add processed annotations
+ addProcessedAnnotations(scope, processor.getAnnotationTypes());
+
+ // Add processor to boundedTypes
+ if(! processedTypes.contains(t))
+ processedTypes.add(t);
+
+ return t;
+ }
+
+ /**
+ * Add processed annotations to a specific scope.
+ *
+ * @param scope the Scope
+ * @param annotations the processed annotations
+ */
+ private void addProcessedAnnotations(Scope scope, Collection<Class<? extends Annotation>> annotations)
+ {
+ if(annotations != null && annotations.size() > 0)
+ {
+ if(this.processedAnnotations.get(scope) == null)
+ this.processedAnnotations.put(scope, new HashSet<Class<? extends Annotation>>());
+
+ this.processedAnnotations.get(scope).addAll(annotations);
+ }
+ }
+
+ /**
+ * Get annotations for a given scope.
+ *
+ * @param scope the Scope
+ * @return the processed annotations
+ */
+ public Collection<Class<? extends Annotation>> getProcessedAnnotations(Scope scope)
+ {
+ return this.processedAnnotations.get(scope);
+ }
+
+ /**
+ * Get a set of all processed annotations handled by this processor.
+ *
+ * @return processed annotations
+ */
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ // Merge processed annotations from all scopes
+ Set<Class<? extends Annotation>> set = new HashSet<Class<? extends Annotation>>();
+ if(getProcessedAnnotations(Scope.TYPE) != null)
+ set.addAll(getProcessedAnnotations(Scope.TYPE));
+ if(getProcessedAnnotations(Scope.METHOD) != null)
+ set.addAll(getProcessedAnnotations(Scope.METHOD));
+ if(getProcessedAnnotations(Scope.FIELD) != null)
+ set.addAll(getProcessedAnnotations(Scope.FIELD ));
+ return set;
+ }
+
+ public static enum Scope
+ {
+ TYPE, METHOD, FIELD
+ }
+
+}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractResourceProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractResourceProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractResourceProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,7 +21,9 @@
*/
package org.jboss.metadata.annotation.creator;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
@@ -377,4 +379,9 @@
return ref;
}
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(Resource.class);
+ }
+
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractRunAsProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractRunAsProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractRunAsProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,7 +21,9 @@
*/
package org.jboss.metadata.annotation.creator;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import javax.annotation.security.RunAs;
@@ -37,14 +39,14 @@
*/
public class AbstractRunAsProcessor
extends AbstractFinderUser
- implements Creator<Class, RunAsMetaData>
+ implements Creator<Class<?>, RunAsMetaData>
{
public AbstractRunAsProcessor(AnnotationFinder<AnnotatedElement> finder)
{
super(finder);
}
- public RunAsMetaData create(Class element)
+ public RunAsMetaData create(Class<?> element)
{
RunAs runAs = finder.getAnnotation(element, RunAs.class);
if(runAs == null)
@@ -57,4 +59,9 @@
return metaData;
}
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(RunAs.class);
+ }
+
}
Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AnnotationContext.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AnnotationContext.java (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AnnotationContext.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -0,0 +1,57 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.metadata.annotation.creator;
+
+import java.lang.annotation.Annotation;
+import java.util.Collection;
+
+/**
+ * The annotation context represents the annotations handled by a
+ * Creator or Processor.
+ *
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public interface AnnotationContext
+{
+ /**
+ * Get the processed Type annotations.
+ *
+ * @return the processed Type annotations
+ */
+ Collection<Class<? extends Annotation>> getTypeAnnotations();
+
+ /**
+ * Get the processed Method annotations.
+ *
+ * @return the processed Method annotations
+ */
+ Collection<Class<? extends Annotation>> getMethodAnnotations();
+
+ /**
+ * Get the processed Field annotations.
+ *
+ * @return the processed Field annotations
+ */
+ Collection<Class<? extends Annotation>> getFieldAnnotations();
+
+}
\ No newline at end of file
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/DeclareRolesProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/DeclareRolesProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/DeclareRolesProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,7 +21,9 @@
*/
package org.jboss.metadata.annotation.creator;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import javax.annotation.security.DeclareRoles;
@@ -38,14 +40,14 @@
*/
public class DeclareRolesProcessor
extends AbstractFinderUser
- implements Processor<SecurityRolesMetaData, Class>
+ implements Processor<SecurityRolesMetaData, Class<?>>
{
public DeclareRolesProcessor(AnnotationFinder<AnnotatedElement> finder)
{
super(finder);
}
- public void process(SecurityRolesMetaData metaData, Class element)
+ public void process(SecurityRolesMetaData metaData, Class<?> element)
{
DeclareRoles roles = finder.getAnnotation(element, DeclareRoles.class);
if(roles == null)
@@ -61,4 +63,9 @@
}
}
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(DeclareRoles.class);
+ }
+
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/EJBsClassProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/EJBsClassProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/EJBsClassProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,7 +21,9 @@
*/
package org.jboss.metadata.annotation.creator;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import javax.ejb.EJB;
import javax.ejb.EJBs;
@@ -73,5 +75,11 @@
{
return element;
}
+
+ @Override
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(EJBs.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/PostConstructMethodProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/PostConstructMethodProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/PostConstructMethodProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,8 +21,10 @@
*/
package org.jboss.metadata.annotation.creator;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
import javax.annotation.PostConstruct;
@@ -65,5 +67,10 @@
}
postConstructs.add(callback);
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(PostConstruct.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/PreDestroyMethodProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/PreDestroyMethodProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/PreDestroyMethodProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,8 +21,10 @@
*/
package org.jboss.metadata.annotation.creator;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
import javax.annotation.PreDestroy;
@@ -66,4 +68,8 @@
preDestroys.add(callback);
}
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(PreDestroy.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/Processor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/Processor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/Processor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,13 +21,32 @@
*/
package org.jboss.metadata.annotation.creator;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
+
/**
* Creates and places a piece of meta data into the right place.
*
* @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
* @version $Revision: $
*/
-public interface Processor<MD, T>
+public interface Processor<MD, T extends AnnotatedElement>
{
+
+ /**
+ * Process a piece of meta data.
+ *
+ * @param metaData the meta data
+ * @param type the annotated element
+ */
void process(MD metaData, T type);
+
+ /**
+ * Get the annotations handled by this processor.
+ *
+ * @return the processed annotation types
+ */
+ Collection<Class<? extends Annotation>> getAnnotationTypes();
+
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ProcessorUtils.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ProcessorUtils.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ProcessorUtils.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,10 +21,13 @@
*/
package org.jboss.metadata.annotation.creator;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
+import java.util.Collection;
import java.util.Collections;
+import java.util.HashSet;
import java.util.Set;
import org.jboss.annotation.javaee.Descriptions;
@@ -142,4 +145,19 @@
return dg;
}
+ public static Collection<Class<? extends Annotation>> createAnnotationSet(Class<? extends Annotation> annotation)
+ {
+ Set<Class<? extends Annotation>> set = new HashSet<Class<? extends Annotation>>();
+ set.add(annotation);
+ return set;
+ }
+
+ public static Collection<Class<? extends Annotation>> createAnnotationSet(Class<? extends Annotation>... annotations)
+ {
+ Set<Class<? extends Annotation>> set = new HashSet<Class<? extends Annotation>>();
+ for(Class<? extends Annotation> annotation : annotations)
+ set.add(annotation);
+ return set;
+ }
+
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ResourcesClassProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ResourcesClassProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ResourcesClassProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,7 +21,9 @@
*/
package org.jboss.metadata.annotation.creator;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import javax.annotation.Resource;
import javax.annotation.Resources;
@@ -85,5 +87,11 @@
{
return element.getName();
}
+
+ @Override
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(Resources.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/client/ApplicationClient5MetaDataCreator.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/client/ApplicationClient5MetaDataCreator.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/client/ApplicationClient5MetaDataCreator.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -22,13 +22,10 @@
package org.jboss.metadata.annotation.creator.client;
import java.lang.reflect.AnnotatedElement;
-import java.util.ArrayList;
import java.util.Collection;
-import java.util.List;
-import org.jboss.metadata.annotation.creator.AbstractFinderUser;
+import org.jboss.metadata.annotation.creator.AbstractCreator;
import org.jboss.metadata.annotation.creator.Creator;
-import org.jboss.metadata.annotation.creator.Processor;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.client.spec.ApplicationClient5MetaData;
@@ -38,31 +35,28 @@
* @author Scott.Stark at jboss.org
* @version $Revision$
*/
-public class ApplicationClient5MetaDataCreator extends AbstractFinderUser
+public class ApplicationClient5MetaDataCreator extends AbstractCreator<ApplicationClient5MetaData>
implements Creator<Collection<Class<?>>, ApplicationClient5MetaData>
{
- private List<Processor<ApplicationClient5MetaData, Class<?>>> processors;
-
public ApplicationClient5MetaDataCreator(AnnotationFinder<AnnotatedElement> finder)
{
super(finder);
- processors = new ArrayList<Processor<ApplicationClient5MetaData,Class<?>>>();
- processors.add(new ApplicationClientProcessor(finder));
+ addProcessor(new ApplicationClientProcessor(finder));
}
public ApplicationClient5MetaData create(Collection<Class<?>> classes)
{
+ // Don't create meta data for a empty collection
+ if(classes == null || classes.isEmpty())
+ return null;
+
ApplicationClient5MetaData metaData = new ApplicationClient5MetaData();
metaData.setVersion("5");
+ // Process
for(Class<?> cls : classes)
- {
- for(Processor<ApplicationClient5MetaData, Class<?>> processor : processors)
- {
- processor.process(metaData, cls);
- }
- }
+ process(metaData, cls);
return metaData;
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractEnterpriseBeanProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractEnterpriseBeanProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractEnterpriseBeanProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,8 +21,11 @@
*/
package org.jboss.metadata.annotation.creator.ejb;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
+import java.util.Collections;
import org.jboss.metadata.annotation.creator.AbstractComponentProcessor;
import org.jboss.metadata.annotation.creator.DeclareRolesProcessor;
@@ -142,4 +145,31 @@
EjbNameThreadLocal.ejbName.set(null);
}
+
+ /**
+ * Get the processed annotations types.
+ * Inherited classes need to override the getAnnotationTypes method from AbstractProcessor
+ * to only expose the top level class annotation.
+ *
+ * @returns a collection of processed annotations
+ */
+ public abstract Collection<Class<? extends Annotation>> getAnnotationTypes();
+
+ /**
+ * Get the processed annotations for a specific scope.
+ * In case of a EnterpriseBean we only need the TYPE annotation, as the other annotations
+ * depend on the presents of this 'top level' annotation. e.g. @Stateful, @Stateles, @MesageDriven
+ *
+ * @param scope the Scope
+ * @returns a collection of processed annotations
+ *
+ */
+ @Override
+ public Collection<Class<? extends Annotation>> getProcessedAnnotations(Scope scope)
+ {
+ if(scope == Scope.TYPE)
+ return getAnnotationTypes();
+ else
+ return Collections.EMPTY_SET;
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractSessionBeanProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractSessionBeanProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractSessionBeanProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -48,7 +48,7 @@
protected AbstractSessionBeanProcessor(AnnotationFinder<AnnotatedElement> finder)
{
super(finder);
-
+ //
addTypeProcessor(new LocalProcessor(finder));
addTypeProcessor(new LocalHomeProcessor(finder));
addTypeProcessor(new RemoteProcessor(finder));
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractTransactionAttributeProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractTransactionAttributeProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractTransactionAttributeProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,8 +21,10 @@
*/
package org.jboss.metadata.annotation.creator.ejb;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
@@ -80,4 +82,9 @@
ContainerTransactionMetaData transaction = createContainerTransaction(bean.getEjbName(), annotation, element);
ejbJarMetaData.getAssemblyDescriptor().getContainerTransactions().add(transaction);
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(TransactionAttribute.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/ApplicationExceptionProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/ApplicationExceptionProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/ApplicationExceptionProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,13 +21,16 @@
*/
package org.jboss.metadata.annotation.creator.ejb;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import javax.ejb.ApplicationException;
import org.jboss.metadata.annotation.creator.AbstractFinderUser;
import org.jboss.metadata.annotation.creator.Creator;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.spec.ApplicationExceptionMetaData;
import org.jboss.metadata.ejb.spec.ApplicationExceptionsMetaData;
@@ -38,11 +41,11 @@
* Process an application exception annotation.
*
* @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
- * @version $Revision: $
+ * @version $Revision$
*/
public class ApplicationExceptionProcessor extends AbstractFinderUser implements Creator<Class<?>, ApplicationExceptionMetaData>, Processor<EjbJar3xMetaData, Class<?>>
{
- protected ApplicationExceptionProcessor(AnnotationFinder<AnnotatedElement> finder)
+ public ApplicationExceptionProcessor(AnnotationFinder<AnnotatedElement> finder)
{
super(finder);
}
@@ -76,4 +79,9 @@
ejbJar.getAssemblyDescriptor().getApplicationExceptions().add(applicationException);
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(ApplicationException.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/AroundInvokeProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/AroundInvokeProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/AroundInvokeProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,14 +21,17 @@
*/
package org.jboss.metadata.annotation.creator.ejb;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
import javax.interceptor.AroundInvoke;
import org.jboss.metadata.annotation.creator.AbstractFinderUser;
import org.jboss.metadata.annotation.creator.Creator;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.spec.AroundInvokeMetaData;
import org.jboss.metadata.ejb.spec.AroundInvokesMetaData;
@@ -38,7 +41,7 @@
* Process an AroundInvoke annotation.
*
* @author Scott.Stark at jboss.org
- * @version $Revision: $
+ * @version $Revision$
*/
public class AroundInvokeProcessor extends AbstractFinderUser
implements Creator<Method, AroundInvokeMetaData>,
@@ -76,4 +79,9 @@
}
invokes.add(metaData);
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(AroundInvoke.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/DenyAllProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/DenyAllProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/DenyAllProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,8 +21,10 @@
*/
package org.jboss.metadata.annotation.creator.ejb;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
import javax.annotation.security.DenyAll;
@@ -74,5 +76,10 @@
log.trace("add " + mmd);
methods.add(mmd);
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(DenyAll.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/EjbJar30Creator.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/EjbJar30Creator.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/EjbJar30Creator.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,14 +21,15 @@
*/
package org.jboss.metadata.annotation.creator.ejb;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
-import java.util.ArrayList;
import java.util.Collection;
-import java.util.List;
+import java.util.Collections;
-import org.jboss.metadata.annotation.creator.AbstractFinderUser;
+import org.jboss.metadata.annotation.creator.AbstractCreator;
+import org.jboss.metadata.annotation.creator.AnnotationContext;
import org.jboss.metadata.annotation.creator.Creator;
-import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.AbstractProcessor.Scope;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.spec.EjbJar30MetaData;
import org.jboss.metadata.ejb.spec.EjbJar3xMetaData;
@@ -39,35 +40,66 @@
* @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
* @version $Revision: $
*/
-public class EjbJar30Creator extends AbstractFinderUser
+public class EjbJar30Creator extends AbstractCreator<EjbJar3xMetaData>
implements Creator<Collection<Class<?>>, EjbJar30MetaData>
{
- private List<Processor<EjbJar3xMetaData, Class<?>>> processors;
-
+ /**
+ * Create a new EjbJar30Creator.
+ *
+ * @param finder the AnnotationFinder
+ */
public EjbJar30Creator(AnnotationFinder<AnnotatedElement> finder)
{
super(finder);
-
- processors = new ArrayList<Processor<EjbJar3xMetaData,Class<?>>>();
- processors.add(new StatefulProcessor(finder));
- processors.add(new StatelessProcessor(finder));
- processors.add(new MessageDrivenProcessor(finder));
- processors.add(new ApplicationExceptionProcessor(finder));
+ //
+ addProcessor(new StatefulProcessor(finder));
+ addProcessor(new StatelessProcessor(finder));
+ addProcessor(new MessageDrivenProcessor(finder));
+ addProcessor(new ApplicationExceptionProcessor(finder));
}
+ /**
+ * Create the meta data for a set of annotated classes.
+ *
+ * @param classes
+ */
public EjbJar30MetaData create(Collection<Class<?>> classes)
{
+ // Don't create meta data for a empty collection
+ if(classes == null || classes.isEmpty())
+ return null;
+
+ // Create meta data
EjbJar30MetaData metaData = new EjbJar30MetaData();
metaData.setVersion("3.0");
+ // Process metadata
for(Class<?> cls : classes)
+ process(metaData, cls);
+
+ return metaData;
+ }
+
+ /**
+ * Get the annotation context. This overrides the inherited method,
+ * as we just need the Type annotations. e.g. @Stateful, @Stateless, @Service
+ *
+ * @return the AnnotationContext
+ */
+ @Override
+ public AnnotationContext getAnnotationContext()
+ {
+ return new AnnotationContext()
{
- for(Processor<EjbJar3xMetaData, Class<?>> processor : processors)
+ public Collection<Class<? extends Annotation>> getTypeAnnotations()
{
- processor.process(metaData, cls);
+ return getAnnotationsForScope(Scope.TYPE);
}
- }
-
- return metaData;
+
+ public Collection<Class<? extends Annotation>> getFieldAnnotations() { return Collections.EMPTY_SET; }
+
+ public Collection<Class<? extends Annotation>> getMethodAnnotations() { return Collections.EMPTY_SET; }
+
+ };
}
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/ImplicitLocalProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/ImplicitLocalProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/ImplicitLocalProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,7 +21,10 @@
*/
package org.jboss.metadata.annotation.creator.ejb;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
+import java.util.Collections;
import javax.ejb.EJBLocalObject;
import javax.ejb.Remote;
@@ -83,5 +86,11 @@
// Finally add local business interface
metaData.getBusinessLocals().add(businessInterface.getName());
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ // does not process any annotation
+ return Collections.EMPTY_SET;
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/InitProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/InitProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/InitProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,8 +21,10 @@
*/
package org.jboss.metadata.annotation.creator.ejb;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
import javax.ejb.Init;
@@ -43,7 +45,7 @@
*
* @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
* @author Scott.Stark at jboss.org
- * @version $Revision: $
+ * @version $Revision$
*/
public class InitProcessor extends AbstractFinderUser implements Creator<Method, InitMethodMetaData>, Processor<SessionBeanMetaData, Method>
{
@@ -99,4 +101,9 @@
bean.getInitMethods().add(initMethod);
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(Init.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/InterceptorsProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/InterceptorsProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/InterceptorsProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,8 +21,10 @@
*/
package org.jboss.metadata.annotation.creator.ejb;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
import javax.interceptor.ExcludeClassInterceptors;
import javax.interceptor.ExcludeDefaultInterceptors;
@@ -91,4 +93,9 @@
metaData.add(interceptor);
}
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(Interceptors.class);
+ }
+
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/LocalHomeProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/LocalHomeProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/LocalHomeProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,13 +21,16 @@
*/
package org.jboss.metadata.annotation.creator.ejb;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import javax.ejb.EJBLocalHome;
import javax.ejb.EJBLocalObject;
import javax.ejb.LocalHome;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.spec.SessionBeanMetaData;
@@ -73,7 +76,11 @@
throw new IllegalStateException("2.1 bean " + metaData.getEjbName() + " already has a local interface " + metaData.getLocal() + ", can't add " + businessInterface.getName());
metaData.setLocal(businessInterface.getName());
-
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(LocalHome.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/LocalProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/LocalProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/LocalProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,13 +21,16 @@
*/
package org.jboss.metadata.annotation.creator.ejb;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import javax.ejb.EJBLocalObject;
import javax.ejb.Local;
import org.jboss.metadata.annotation.creator.AbstractFinderUser;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.spec.BusinessLocalsMetaData;
import org.jboss.metadata.ejb.spec.SessionBeanMetaData;
@@ -88,4 +91,9 @@
}
}
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(Local.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/MessageDrivenProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/MessageDrivenProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/MessageDrivenProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,7 +21,9 @@
*/
package org.jboss.metadata.annotation.creator.ejb;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
@@ -84,5 +86,10 @@
metaData.setActivationConfig(config);
return metaData;
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(MessageDriven.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/PermitAllProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/PermitAllProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/PermitAllProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,8 +21,10 @@
*/
package org.jboss.metadata.annotation.creator.ejb;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
import javax.annotation.security.PermitAll;
@@ -79,4 +81,9 @@
metaData.add(perm);
}
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(PermitAll.class);
+ }
+
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/PostActivateMethodProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/PostActivateMethodProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/PostActivateMethodProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,13 +21,16 @@
*/
package org.jboss.metadata.annotation.creator.ejb;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
import javax.ejb.PostActivate;
import org.jboss.metadata.annotation.creator.AbstractLifeCycleMethodProcessor;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.spec.SessionBeanMetaData;
import org.jboss.metadata.javaee.spec.LifecycleCallbackMetaData;
@@ -68,4 +71,9 @@
preDestroys.add(callback);
}
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(PostActivate.class);
+ }
+
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/PrePassivateMethodProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/PrePassivateMethodProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/PrePassivateMethodProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,13 +21,16 @@
*/
package org.jboss.metadata.annotation.creator.ejb;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
import javax.ejb.PrePassivate;
import org.jboss.metadata.annotation.creator.AbstractLifeCycleMethodProcessor;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.spec.SessionBeanMetaData;
import org.jboss.metadata.javaee.spec.LifecycleCallbackMetaData;
@@ -68,4 +71,9 @@
preDestroys.add(callback);
}
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(PrePassivate.class);
+ }
+
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/RemoteHomeProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/RemoteHomeProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/RemoteHomeProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,13 +21,16 @@
*/
package org.jboss.metadata.annotation.creator.ejb;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import javax.ejb.EJBHome;
import javax.ejb.EJBObject;
import javax.ejb.RemoteHome;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.spec.SessionBeanMetaData;
@@ -74,7 +77,10 @@
throw new IllegalStateException("2.1 bean " + metaData.getEjbName() + " already has a remote interface " + metaData.getRemote() + ", can't add " + businessInterface.getName());
metaData.setRemote(businessInterface.getName());
-
}
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(RemoteHome.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/RemoteProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/RemoteProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/RemoteProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,13 +21,16 @@
*/
package org.jboss.metadata.annotation.creator.ejb;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import javax.ejb.EJBObject;
import javax.ejb.Remote;
import org.jboss.metadata.annotation.creator.AbstractFinderUser;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.spec.BusinessRemotesMetaData;
import org.jboss.metadata.ejb.spec.SessionBeanMetaData;
@@ -88,4 +91,9 @@
}
}
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(Remote.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/RemoveProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/RemoveProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/RemoveProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,8 +21,10 @@
*/
package org.jboss.metadata.annotation.creator.ejb;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
import javax.ejb.Remove;
@@ -85,4 +87,9 @@
bean.getRemoveMethods().add(removeMethod);
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(Remove.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/RolesAllowedProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/RolesAllowedProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/RolesAllowedProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,8 +21,10 @@
*/
package org.jboss.metadata.annotation.creator.ejb;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
import java.util.HashSet;
import javax.annotation.security.RolesAllowed;
@@ -81,5 +83,10 @@
methods.add(mmd);
metaData.add(perm);
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(RolesAllowed.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/StatefulProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/StatefulProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/StatefulProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,10 +21,13 @@
*/
package org.jboss.metadata.annotation.creator.ejb;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import javax.ejb.Stateful;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.spec.SessionBeanMetaData;
import org.jboss.metadata.ejb.spec.SessionType;
@@ -34,7 +37,7 @@
*
* @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
* @author Scott.Stark at jboss.org
- * @version $Revision: $
+ * @version $Revision$
*/
public class StatefulProcessor extends AbstractSessionBeanProcessor
{
@@ -61,4 +64,9 @@
{
return create(beanClass, annotation.name(), annotation.mappedName(), annotation.description());
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(Stateful.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/StatelessProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/StatelessProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/StatelessProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,10 +21,13 @@
*/
package org.jboss.metadata.annotation.creator.ejb;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import javax.ejb.Stateless;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.spec.SessionBeanMetaData;
import org.jboss.metadata.ejb.spec.SessionType;
@@ -33,7 +36,7 @@
* Create the correct meta data for a stateless annotation.
*
* @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
- * @version $Revision: $
+ * @version $Revision$
*/
public class StatelessProcessor extends AbstractSessionBeanProcessor
{
@@ -57,4 +60,9 @@
{
return create(beanClass, annotation.name(), annotation.mappedName(), annotation.description());
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(Stateless.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/TimeoutProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/TimeoutProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/TimeoutProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,8 +21,10 @@
*/
package org.jboss.metadata.annotation.creator.ejb;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
import javax.ejb.Timeout;
@@ -58,4 +60,9 @@
timeoutMethod.setMethodParams(ProcessorUtils.getMethodParameters(method));
bean.setTimeoutMethod(timeoutMethod);
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(Timeout.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractEnterpriseBeanProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractEnterpriseBeanProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractEnterpriseBeanProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,11 +21,15 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
+import java.util.Collections;
import org.jboss.metadata.annotation.creator.DeclareRolesProcessor;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.AbstractProcessor.Scope;
import org.jboss.metadata.annotation.creator.jboss.AbstractComponentProcessor;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossAssemblyDescriptorMetaData;
@@ -155,4 +159,32 @@
EjbNameThreadLocal.ejbName.set(null);
}
}
+
+ /**
+ * Get the processed annotations types.
+ * Inherited classes need to override the getAnnotationTypes method from AbstractProcessor
+ * to only expose the top level class annotation.
+ *
+ * @returns a collection of processed annotations
+ */
+ public abstract Collection<Class<? extends Annotation>> getAnnotationTypes();
+
+ /**
+ * Get the processed annotations for a specific scope.
+ * In case of a EnterpriseBean we only need the TYPE annotation, as the other annotations
+ * depend on the presents of this 'top level' annotation. e.g. @Stateful, @Stateles, @MesageDriven
+ *
+ * @param scope the Scope
+ * @returns a collection of processed annotations
+ *
+ */
+ @Override
+ public Collection<Class<? extends Annotation>> getProcessedAnnotations(Scope scope)
+ {
+ if(scope == Scope.TYPE)
+ return getAnnotationTypes();
+ else
+ return Collections.EMPTY_SET;
+ }
+
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractTransactionAttributeProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractTransactionAttributeProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractTransactionAttributeProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,8 +21,10 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
@@ -83,4 +85,9 @@
ContainerTransactionMetaData transaction = createContainerTransaction(bean.getEjbName(), annotation, element);
ejbJarMetaData.getAssemblyDescriptor().getContainerTransactions().add(transaction);
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(TransactionAttribute.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/ApplicationExceptionProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/ApplicationExceptionProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/ApplicationExceptionProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,13 +21,16 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import javax.ejb.ApplicationException;
import org.jboss.metadata.annotation.creator.AbstractFinderUser;
import org.jboss.metadata.annotation.creator.Creator;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossAssemblyDescriptorMetaData;
import org.jboss.metadata.ejb.jboss.JBossMetaData;
@@ -42,7 +45,7 @@
*/
public class ApplicationExceptionProcessor extends AbstractFinderUser implements Creator<Class<?>, ApplicationExceptionMetaData>, Processor<JBossMetaData, Class<?>>
{
- protected ApplicationExceptionProcessor(AnnotationFinder<AnnotatedElement> finder)
+ public ApplicationExceptionProcessor(AnnotationFinder<AnnotatedElement> finder)
{
super(finder);
}
@@ -76,4 +79,9 @@
ejbJar.getAssemblyDescriptor().getApplicationExceptions().add(applicationException);
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(ApplicationException.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AroundInvokeProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AroundInvokeProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AroundInvokeProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,14 +21,17 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
import javax.interceptor.AroundInvoke;
import org.jboss.metadata.annotation.creator.AbstractFinderUser;
import org.jboss.metadata.annotation.creator.Creator;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
import org.jboss.metadata.ejb.spec.AroundInvokeMetaData;
@@ -76,4 +79,9 @@
}
invokes.add(metaData);
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(AroundInvoke.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/DenyAllProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/DenyAllProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/DenyAllProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,8 +21,10 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
import javax.annotation.security.DenyAll;
@@ -75,4 +77,8 @@
methods.add(mmd);
}
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(DenyAll.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/ImplicitLocalProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/ImplicitLocalProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/ImplicitLocalProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,7 +21,10 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
+import java.util.Collections;
import javax.ejb.EJBLocalObject;
import javax.ejb.Remote;
@@ -83,4 +86,10 @@
// Finally add local business interface
metaData.getBusinessLocals().add(businessInterface.getName());
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ // does not process any annotation
+ return Collections.EMPTY_SET;
+ }
}
\ No newline at end of file
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/InitProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/InitProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/InitProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,8 +21,10 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
import javax.ejb.Init;
@@ -99,4 +101,9 @@
bean.getInitMethods().add(initMethod);
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(Init.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/InterceptorsProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/InterceptorsProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/InterceptorsProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,8 +21,10 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
import javax.interceptor.ExcludeClassInterceptors;
import javax.interceptor.ExcludeDefaultInterceptors;
@@ -91,4 +93,8 @@
metaData.add(interceptor);
}
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(Interceptors.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBoss50Creator.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBoss50Creator.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBoss50Creator.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,58 +21,89 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
-import java.util.ArrayList;
import java.util.Collection;
-import java.util.List;
+import java.util.Collections;
-import org.jboss.metadata.annotation.creator.AbstractFinderUser;
+import org.jboss.metadata.annotation.creator.AbstractCreator;
+import org.jboss.metadata.annotation.creator.AnnotationContext;
import org.jboss.metadata.annotation.creator.Creator;
-import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.AbstractProcessor.Scope;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBoss50MetaData;
import org.jboss.metadata.ejb.jboss.JBossMetaData;
-
/**
* A JBoss50Creator.
*
* @author <a href="alex at jboss.com">Alexey Loubyansky</a>
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
* @version $Revision: 1.1 $
*/
-public class JBoss50Creator extends AbstractFinderUser
+public class JBoss50Creator extends AbstractCreator<JBossMetaData>
implements Creator<Collection<Class<?>>, JBoss50MetaData>
{
- private List<Processor<JBossMetaData, Class<?>>> processors;
-
+ /**
+ * Create a new JBoss50Creator.
+ *
+ * @param finder the AnnotationFinder
+ */
public JBoss50Creator(AnnotationFinder<AnnotatedElement> finder)
{
super(finder);
-
- processors = new ArrayList<Processor<JBossMetaData,Class<?>>>();
- processors.add(new StatefulProcessor(finder));
- processors.add(new StatelessProcessor(finder));
- processors.add(new JBossServiceProcessor(finder));
- processors.add(new JBossConsumerProcessor(finder));
- processors.add(new MessageDrivenProcessor(finder));
- processors.add(new ApplicationExceptionProcessor(finder));
-
+ //
+ addProcessor(new StatefulProcessor(finder));
+ addProcessor(new StatelessProcessor(finder));
+ addProcessor(new JBossServiceProcessor(finder));
+ addProcessor(new JBossConsumerProcessor(finder));
+ addProcessor(new MessageDrivenProcessor(finder));
+ addProcessor(new ApplicationExceptionProcessor(finder));
}
+ /**
+ * Create the meta data for a set of annotated classes.
+ *
+ * @param classes
+ */
public JBoss50MetaData create(Collection<Class<?>> classes)
{
+ // Don't create meta data for a empty collection
+ if(classes == null || classes.isEmpty())
+ return null;
+
+ // Create meta data
JBoss50MetaData metaData = new JBoss50MetaData();
metaData.setVersion("3.0");
metaData.setEjbVersion("3.0");
+ // Process classes
for(Class<?> cls : classes)
+ process(metaData, cls);
+
+ return metaData;
+ }
+
+ /**
+ * Get the annotation context. This overrides the inherited method,
+ * as we just need the Type annotations. e.g. @Stateful, @Stateless, @Service
+ *
+ * @return the AnnotationContext
+ */
+ @Override
+ public AnnotationContext getAnnotationContext()
+ {
+ return new AnnotationContext()
{
- for(Processor<JBossMetaData, Class<?>> processor : processors)
+ public Collection<Class<? extends Annotation>> getTypeAnnotations()
{
- processor.process(metaData, cls);
+ return getAnnotationsForScope(Scope.TYPE);
}
- }
+
+ public Collection<Class<? extends Annotation>> getFieldAnnotations() { return Collections.EMPTY_SET; }
- return metaData;
+ public Collection<Class<? extends Annotation>> getMethodAnnotations() { return Collections.EMPTY_SET; }
+
+ };
}
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossAspectDomainProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossAspectDomainProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossAspectDomainProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,11 +21,14 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import org.jboss.ejb3.annotation.AspectDomain;
import org.jboss.metadata.annotation.creator.AbstractFinderUser;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
@@ -55,5 +58,9 @@
metaData.setAopDomainName(annotation.value());
}
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(AspectDomain.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossCacheConfigProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossCacheConfigProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossCacheConfigProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,11 +21,14 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import org.jboss.ejb3.annotation.CacheConfig;
import org.jboss.metadata.annotation.creator.AbstractFinderUser;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.CacheConfigMetaData;
import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
@@ -64,5 +67,9 @@
metaData.setCacheConfig(cacheConfig);
}
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(CacheConfig.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossClusteredProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossClusteredProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossClusteredProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,7 +21,9 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import org.jboss.ejb3.annotation.Clustered;
import org.jboss.metadata.annotation.creator.AbstractFinderUser;
@@ -63,5 +65,9 @@
metaData.setClusterConfig(clustered);
}
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(Clustered.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossConsumerProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossConsumerProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossConsumerProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,13 +21,19 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import javax.ejb.ActivationConfigProperty;
import org.jboss.ejb3.annotation.Consumer;
+import org.jboss.metadata.annotation.creator.Creator;
+import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossConsumerBeanMetaData;
+import org.jboss.metadata.ejb.jboss.JBossMetaData;
import org.jboss.metadata.ejb.spec.ActivationConfigMetaData;
import org.jboss.metadata.ejb.spec.ActivationConfigPropertiesMetaData;
import org.jboss.metadata.ejb.spec.ActivationConfigPropertyMetaData;
@@ -38,7 +44,9 @@
* @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
* @version $Revision$
*/
-public class JBossConsumerProcessor extends AbstractEnterpriseBeanProcessor<JBossConsumerBeanMetaData>
+public class JBossConsumerProcessor
+ extends AbstractEnterpriseBeanProcessor<JBossConsumerBeanMetaData>
+ implements Creator<Class<?>, JBossConsumerBeanMetaData>, Processor<JBossMetaData, Class<?>>
{
protected JBossConsumerProcessor(AnnotationFinder<AnnotatedElement> finder)
@@ -50,7 +58,7 @@
}
@Override
- protected JBossConsumerBeanMetaData create(Class<?> beanClass)
+ public JBossConsumerBeanMetaData create(Class<?> beanClass)
{
Consumer annotation = finder.getAnnotation(beanClass, Consumer.class);
if(annotation == null)
@@ -79,5 +87,9 @@
return metaData;
}
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(Consumer.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossJndiPolicyProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossJndiPolicyProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossJndiPolicyProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,11 +21,14 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import org.jboss.ejb3.annotation.JndiBindingPolicy;
import org.jboss.metadata.annotation.creator.AbstractFinderUser;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
@@ -54,5 +57,9 @@
metaData.setJndiBindingPolicy(annotation.policy().getName());
}
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(JndiBindingPolicy.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossManagementProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossManagementProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossManagementProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,11 +21,14 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import org.jboss.ejb3.annotation.Management;
import org.jboss.metadata.annotation.creator.AbstractFinderUser;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossServiceBeanMetaData;
import org.jboss.metadata.lang.ClassHelper;
@@ -73,5 +76,10 @@
return ClassHelper.getDefaultInterface(type);
}
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(Management.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossPoolProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossPoolProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossPoolProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,11 +21,14 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import org.jboss.ejb3.annotation.Pool;
import org.jboss.metadata.annotation.creator.AbstractFinderUser;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
import org.jboss.metadata.ejb.jboss.PoolConfigMetaData;
@@ -58,5 +61,10 @@
poolConfig.setValue(annotation.value());
metaData.setPoolConfig(poolConfig);
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(Pool.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossProducerProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossProducerProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossProducerProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,12 +21,15 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.util.ArrayList;
+import java.util.Collection;
import org.jboss.ejb3.annotation.Producer;
import org.jboss.metadata.annotation.creator.AbstractFinderUser;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossConsumerBeanMetaData;
import org.jboss.metadata.ejb.jboss.ProducerMetaData;
@@ -61,11 +64,11 @@
ProducerMetaData producer = new ProducerMetaData();
if(annotation.connectionFactory().length() > 1)
producer.setConnectionFactory(annotation.connectionFactory());
+
if(annotation.producer() != Producer.class)
producer.setClassName(annotation.producer().getName());
- // TODO find interfaces
+ // TODO find default interface ?
-
// TODO
// annotation.transacted();
// annotation.acknowledgeMode()
@@ -76,5 +79,9 @@
metaData.getProducers().add(producer);
}
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(Producer.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossProducersProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossProducersProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossProducersProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,11 +21,14 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import org.jboss.ejb3.annotation.Producer;
import org.jboss.ejb3.annotation.Producers;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossConsumerBeanMetaData;
@@ -58,5 +61,11 @@
super.process(metaData, producer);
}
}
+
+ @Override
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(Producers.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossResourceAdapterProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossResourceAdapterProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossResourceAdapterProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,11 +21,14 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import org.jboss.ejb3.annotation.ResourceAdapter;
import org.jboss.metadata.annotation.creator.AbstractFinderUser;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossMessageDrivenBeanMetaData;
@@ -55,5 +58,9 @@
metaData.setResourceAdapterName(annotation.value());
}
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(ResourceAdapter.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossSerializedConcurrentAccessProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossSerializedConcurrentAccessProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossSerializedConcurrentAccessProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,11 +21,14 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import org.jboss.ejb3.annotation.SerializedConcurrentAccess;
import org.jboss.metadata.annotation.creator.AbstractFinderUser;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
@@ -53,5 +56,10 @@
metaData.setConcurrent(Boolean.TRUE);
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(SerializedConcurrentAccess.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossServiceProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossServiceProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBossServiceProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,13 +21,18 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;
import org.jboss.ejb3.annotation.Service;
+import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.ejb.jboss.JBossMetaData;
import org.jboss.metadata.ejb.jboss.JBossServiceBeanMetaData;
import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
@@ -38,6 +43,7 @@
* @version $Revision$
*/
public class JBossServiceProcessor extends StatefulProcessor
+ implements Processor<JBossMetaData, Class<?>>
{
protected JBossServiceProcessor(AnnotationFinder<AnnotatedElement> finder)
@@ -73,6 +79,12 @@
return bean;
}
+
+ @Override
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(Service.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/LocalBindingProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/LocalBindingProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/LocalBindingProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,11 +21,14 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import org.jboss.ejb3.annotation.LocalBinding;
import org.jboss.metadata.annotation.creator.AbstractFinderUser;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
@@ -53,4 +56,8 @@
metaData.setLocalJndiName(annotation.jndiBinding());
}
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(LocalBinding.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/LocalHomeBindingProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/LocalHomeBindingProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/LocalHomeBindingProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,11 +21,14 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import org.jboss.ejb3.annotation.LocalHomeBinding;
import org.jboss.metadata.annotation.creator.AbstractFinderUser;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
@@ -54,6 +57,11 @@
if(annotation.jndiBinding().length() > 1)
metaData.setLocalHomeJndiName(annotation.jndiBinding());
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(LocalHomeBinding.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/LocalHomeProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/LocalHomeProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/LocalHomeProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,13 +21,16 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import javax.ejb.EJBLocalHome;
import javax.ejb.EJBLocalObject;
import javax.ejb.LocalHome;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.creator.ejb.AbstractHomeProcessor;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
@@ -36,6 +39,7 @@
* Comment
*
* @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
* @version $Revision: 67165 $
*/
public class LocalHomeProcessor extends AbstractHomeProcessor implements Processor<JBossSessionBeanMetaData, Class<?>>
@@ -74,4 +78,9 @@
metaData.setLocal(businessInterface.getName());
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(LocalHome.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/LocalProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/LocalProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/LocalProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,13 +21,16 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import javax.ejb.EJBLocalObject;
import javax.ejb.Local;
import org.jboss.metadata.annotation.creator.AbstractFinderUser;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
import org.jboss.metadata.ejb.spec.BusinessLocalsMetaData;
@@ -88,4 +91,9 @@
}
}
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(Local.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/MessageDrivenProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/MessageDrivenProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/MessageDrivenProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,7 +21,9 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
@@ -88,4 +90,9 @@
metaData.setActivationConfig(config);
return metaData;
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(MessageDriven.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/PermitAllProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/PermitAllProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/PermitAllProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,8 +21,10 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
import javax.annotation.security.PermitAll;
@@ -51,7 +53,6 @@
{
super(finder);
}
-
public void process(MethodPermissionsMetaData metaData, T type)
{
@@ -78,5 +79,10 @@
methods.add(mmd);
metaData.add(perm);
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(PermitAll.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/PostActivateMethodProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/PostActivateMethodProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/PostActivateMethodProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,13 +21,16 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
import javax.ejb.PostActivate;
import org.jboss.metadata.annotation.creator.AbstractLifeCycleMethodProcessor;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
import org.jboss.metadata.javaee.spec.LifecycleCallbackMetaData;
@@ -68,4 +71,8 @@
preDestroys.add(callback);
}
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(PostActivate.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/PrePassivateMethodProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/PrePassivateMethodProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/PrePassivateMethodProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,13 +21,16 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
import javax.ejb.PrePassivate;
import org.jboss.metadata.annotation.creator.AbstractLifeCycleMethodProcessor;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
import org.jboss.metadata.javaee.spec.LifecycleCallbackMetaData;
@@ -67,5 +70,10 @@
}
preDestroys.add(callback);
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(PrePassivate.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteBindingProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteBindingProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteBindingProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,8 +21,10 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.util.ArrayList;
+import java.util.Collection;
import org.jboss.annotation.javaee.Descriptions;
import org.jboss.ejb3.annotation.RemoteBinding;
@@ -82,4 +84,8 @@
return remote;
}
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(RemoteBinding.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteBindingsProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteBindingsProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteBindingsProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,11 +21,14 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import org.jboss.ejb3.annotation.RemoteBinding;
import org.jboss.ejb3.annotation.RemoteBindings;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
@@ -53,5 +56,11 @@
for(RemoteBinding remoteBinding : annotation.value())
process(metaData, type, remoteBinding);
}
+
+ @Override
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(RemoteBindings.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteHomeBindingProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteHomeBindingProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteHomeBindingProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,11 +21,14 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import org.jboss.ejb3.annotation.RemoteHomeBinding;
import org.jboss.metadata.annotation.creator.AbstractFinderUser;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
@@ -54,5 +57,10 @@
if(annotation.jndiBinding().length() > 1)
metaData.setHomeJndiName(annotation.jndiBinding());
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(RemoteHomeBinding.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteHomeProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteHomeProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteHomeProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,13 +21,16 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import javax.ejb.EJBHome;
import javax.ejb.EJBObject;
import javax.ejb.RemoteHome;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.creator.ejb.AbstractHomeProcessor;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
@@ -76,4 +79,9 @@
metaData.setRemote(businessInterface.getName());
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(RemoteHome.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoteProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,13 +21,16 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import javax.ejb.EJBObject;
import javax.ejb.Remote;
import org.jboss.metadata.annotation.creator.AbstractFinderUser;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
import org.jboss.metadata.ejb.spec.BusinessRemotesMetaData;
@@ -88,4 +91,9 @@
}
}
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(Remote.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoveProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoveProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RemoveProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,8 +21,10 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
import javax.ejb.Remove;
@@ -85,4 +87,9 @@
bean.getRemoveMethods().add(removeMethod);
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(Remove.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RolesAllowedProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RolesAllowedProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/RolesAllowedProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,8 +21,10 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
import java.util.HashSet;
import javax.annotation.security.RolesAllowed;
@@ -51,7 +53,6 @@
{
super(finder);
}
-
public void process(MethodPermissionsMetaData metaData, T type)
{
@@ -81,5 +82,10 @@
methods.add(mmd);
metaData.add(perm);
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(RolesAllowed.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/StatefulProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/StatefulProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/StatefulProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,10 +21,13 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import javax.ejb.Stateful;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
import org.jboss.metadata.ejb.spec.SessionType;
@@ -68,4 +71,9 @@
{
return create(beanClass, annotation.name(), annotation.mappedName(), annotation.description());
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(Stateful.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/StatelessProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/StatelessProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/StatelessProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,10 +21,13 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import javax.ejb.Stateless;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
import org.jboss.metadata.ejb.spec.SessionType;
@@ -61,4 +64,9 @@
{
return create(beanClass, annotation.name(), annotation.mappedName(), annotation.description());
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(Stateless.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/TimeoutProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/TimeoutProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/TimeoutProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,8 +21,10 @@
*/
package org.jboss.metadata.annotation.creator.ejb.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
import javax.ejb.Timeout;
@@ -58,4 +60,9 @@
timeoutMethod.setMethodParams(ProcessorUtils.getMethodParameters(method));
bean.setTimeoutMethod(timeoutMethod);
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(Timeout.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/jboss/AbstractComponentProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/jboss/AbstractComponentProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/jboss/AbstractComponentProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -22,20 +22,8 @@
package org.jboss.metadata.annotation.creator.jboss;
import java.lang.reflect.AnnotatedElement;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.lang.reflect.TypeVariable;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import org.jboss.logging.Logger;
-import org.jboss.metadata.annotation.creator.AbstractFinderUser;
+import org.jboss.metadata.annotation.creator.AbstractProcessor;
import org.jboss.metadata.annotation.creator.EJBClassProcessor;
import org.jboss.metadata.annotation.creator.EJBFieldProcessor;
import org.jboss.metadata.annotation.creator.EJBMethodProcessor;
@@ -43,7 +31,6 @@
import org.jboss.metadata.annotation.creator.PersistenceContextClassProcessor;
import org.jboss.metadata.annotation.creator.PersistenceContextFieldProcessor;
import org.jboss.metadata.annotation.creator.PersistenceContextMethodProcessor;
-import org.jboss.metadata.annotation.creator.Processor;
import org.jboss.metadata.annotation.creator.ResourceClassProcessor;
import org.jboss.metadata.annotation.creator.ResourceFieldProcessor;
import org.jboss.metadata.annotation.creator.ResourceMethodProcessor;
@@ -70,28 +57,12 @@
* @version $Revision: 72364 $
*/
public abstract class AbstractComponentProcessor<MD>
- extends AbstractFinderUser
+ extends AbstractProcessor<MD>
{
- private static Logger log = Logger.getLogger(AbstractComponentProcessor.class);
- /** Map<Processor metdata type class, List<Processor for classes>> */
- protected Map<Class<?>, List<Processor<Object, Class<?>>>> typeProcessors;
- /** Map<Processor metdata type class, List<Processor for fields>> */
- protected Map<Class<?>, List<Processor<Object, Field>>> fieldProcessors;
- /** Map<Processor metdata type class, List<Processor for methods>> */
- protected Map<Class<?>, List<Processor<Object, Method>>> methodProcessors;
- /** */
- protected Set<Class<?>> boundedTypes = new HashSet<Class<?>>();
-
- /**
- * @param finder
- */
public AbstractComponentProcessor(AnnotationFinder<AnnotatedElement> finder)
{
super(finder);
- typeProcessors = new HashMap<Class<?>, List<Processor<Object,Class<?>>>>();
- fieldProcessors = new HashMap<Class<?>, List<Processor<Object,Field>>>();
- methodProcessors = new HashMap<Class<?>, List<Processor<Object,Method>>>();
// Add component environment processors
// @Resources/@Resource
@@ -118,49 +89,9 @@
addTypeProcessor(new WebServiceRefsClassProcessor(finder));
}
- public void addFieldProcessor(Processor processor)
- {
- Class processorType = getProcessorMetaDataType(processor);
- if(log.isTraceEnabled())
- log.trace("addFieldProcessor: "+processor+", for type: "+processorType);
- List<Processor<Object, Field>> processors = fieldProcessors.get(processorType);
- if(processors == null)
- {
- processors = new ArrayList<Processor<Object, Field>>();
- fieldProcessors.put(processorType, processors);
- }
- processors.add(processor);
- }
-
- public void addMethodProcessor(Processor processor)
- {
- Class processorType = getProcessorMetaDataType(processor);
- if(log.isTraceEnabled())
- log.trace("addMethodProcessor: "+processor+", for type: "+processorType);
- List<Processor<Object, Method>> processors = methodProcessors.get(processorType);
- if(processors == null)
- {
- processors = new ArrayList<Processor<Object, Method>>();
- methodProcessors.put(processorType, processors);
- }
- processors.add(processor);
- }
- public void addTypeProcessor(Processor processor)
- {
- Class processorType = getProcessorMetaDataType(processor);
- if(log.isTraceEnabled())
- log.trace("addTypeProcessor: "+processor+", for type: "+processorType);
- List<Processor<Object, Class<?>>> processors = typeProcessors.get(processorType);
- if(processors == null)
- {
- processors = new ArrayList<Processor<Object, Class<?>>>();
- typeProcessors.put(processorType, processors);
- }
- processors.add(processor);
- }
-
/**
* Process type for remote environment metadata related annotations
+ *
* @param metaData
* @param type
*/
@@ -195,8 +126,10 @@
}
processClass(wsRefs, type);
}
+
/**
* Process type for environment metadata related annotations
+ *
* @param metaData
* @param type
*/
@@ -213,175 +146,4 @@
}
processClass(pcRefs, type);
}
- /**
- * Process type for component metadata related annotations
- * @param metaData
- * @param type
- */
- public void process(MD metaData, Class<?> type)
- {
- processClass(metaData, type);
- }
-
- /**
- * Process a the cls annotations at the type, method and field levels
- * into the argument metaData. Only processors registered for the metaData
- * type will be run.
- *
- * @param <T>
- * @param metaData
- * @param cls
- */
- protected <T> void processClass(T metaData, Class<?> cls)
- {
- Class<?> type = metaData.getClass();
- boolean trace = log.isTraceEnabled();
- int processorCount = processClass(metaData, cls, type);
- if(trace)
- log.trace("Found "+processorCount+" processors for type: "+type);
- // See if metaData has a bounded type
- while(type != Object.class)
- {
- type = type.getSuperclass();
- if(boundedTypes.contains(type))
- {
- if(trace)
- log.trace("Reprocessing class using bounded processor type: "+type);
- processClass(metaData, cls, type);
- }
- }
- // Also process the interfaces of the metadata class
- for(Class<?> iface : metaData.getClass().getInterfaces())
- {
- if(boundedTypes.contains(iface));
- {
- processClass(metaData, cls, iface);
- }
- }
- }
- private <T> int processClass(T metaData, Class<?> cls, Class processorType)
- {
- boolean trace = log.isTraceEnabled();
- int processorCount = 0;
- if(trace)
- log.trace("processClass for metaData: "+processorType+", class: "+cls);
-
- List<Processor<Object, Class<?>>> tps = typeProcessors.get(processorType);
- if(tps != null)
- {
- processorCount += tps.size();
- if(trace)
- log.trace("typeProcessors("+tps.size()+") for metaData: "+tps);
- for(Processor<Object, Class<?>> processor : tps)
- {
- processor.process(metaData, cls);
- }
-
- for(Class<?> intf : cls.getInterfaces())
- {
- for(Processor<Object, Class<?>> processor : tps)
- {
- processor.process(metaData, intf);
- }
- }
- }
-
- List<Processor<Object, Field>> fps = fieldProcessors.get(processorType);
- if(fps != null)
- {
- processorCount += fps.size();
- if(trace)
- log.trace("fieldProcessors("+fps.size()+") for metaData: "+fps);
- Field[] fields = {};
- try
- {
- fields = cls.getDeclaredFields();
- }
- catch(Throwable e)
- {
- log.debug("Failed to get DeclaredFields for: "+cls, e);
- }
- for(Field field : fields)
- {
- for(Processor<Object, Field> processor : fps)
- {
- processor.process(metaData, field);
- }
- }
- }
-
- List<Processor<Object, Method>> mps = methodProcessors.get(processorType);
- if(mps != null)
- {
- processorCount += mps.size();
- if(trace)
- log.trace("methodProcessors("+mps.size()+") for metaData: "+mps);
- Method[] methods = {};
- try
- {
- methods = cls.getDeclaredMethods();
- }
- catch(Throwable e)
- {
- log.debug("Failed to get DeclaredMethods for: "+cls, e);
- }
- for(Method method : methods)
- {
- if(trace)
- log.trace("process method " + method);
- for(Processor<Object, Method> processor : mps)
- {
- processor.process(metaData, method);
- }
- }
- }
-
- if(cls.getSuperclass() != null && cls.getSuperclass() != Object.class)
- processorCount += processClass(metaData, cls.getSuperclass(), processorType);
- return processorCount;
- }
-
- /**
- * Determine the Processor<T, ?> T generic processorType class.
- *
- * @param processor
- * @return The Class for the T parameter type. If this was an upper bound,
- * this will have been added to the boundedTypes set.
- */
- protected Class getProcessorMetaDataType(Processor processor)
- {
- // Find the Proccessor<T, ?> interface
- Type[] interfaces = processor.getClass().getGenericInterfaces();
- Type processorType = null;
- for(Type t : interfaces)
- {
- ParameterizedType pt = (ParameterizedType) t;
- Type rawType = pt.getRawType();
- if((rawType instanceof Class) && ((Class)rawType).getName().equals("org.jboss.metadata.annotation.creator.Processor"))
- {
- processorType = t;
- break;
- }
- }
- if(processorType == null)
- throw new IllegalStateException("No generic Processor interface found on: "+processor);
-
- // Get the type of the T parameter
- ParameterizedType pt = (ParameterizedType) processorType;
- Type t0 = pt.getActualTypeArguments()[0];
- Class<?> t = null;
- if(t0 instanceof Class)
- t = (Class<?>) t0;
- else if(t0 instanceof TypeVariable)
- {
- TypeVariable tv = (TypeVariable) t0;
- t = (Class<?>)tv.getBounds()[0];
- }
- // Add processor to boundedTypes
- if(! boundedTypes.contains(t))
- boundedTypes.add(t);
-
- return t;
- }
-
-}
+ }
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/jboss/PostConstructMethodProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/jboss/PostConstructMethodProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/jboss/PostConstructMethodProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,13 +21,16 @@
*/
package org.jboss.metadata.annotation.creator.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
import javax.annotation.PostConstruct;
import org.jboss.metadata.annotation.creator.AbstractLifeCycleMethodProcessor;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossEnvironmentRefsGroupMetaData;
import org.jboss.metadata.javaee.spec.LifecycleCallbackMetaData;
@@ -67,5 +70,10 @@
}
postConstructs.add(callback);
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(PostConstruct.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/jboss/PreDestroyMethodProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/jboss/PreDestroyMethodProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/jboss/PreDestroyMethodProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,13 +21,16 @@
*/
package org.jboss.metadata.annotation.creator.jboss;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.Collection;
import javax.annotation.PreDestroy;
import org.jboss.metadata.annotation.creator.AbstractLifeCycleMethodProcessor;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossEnvironmentRefsGroupMetaData;
import org.jboss.metadata.javaee.spec.LifecycleCallbackMetaData;
@@ -68,4 +71,8 @@
preDestroys.add(callback);
}
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(PreDestroy.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/web/Web25MetaDataCreator.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/web/Web25MetaDataCreator.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/web/Web25MetaDataCreator.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -22,13 +22,10 @@
package org.jboss.metadata.annotation.creator.web;
import java.lang.reflect.AnnotatedElement;
-import java.util.ArrayList;
import java.util.Collection;
-import java.util.List;
-import org.jboss.metadata.annotation.creator.AbstractFinderUser;
+import org.jboss.metadata.annotation.creator.AbstractCreator;
import org.jboss.metadata.annotation.creator.Creator;
-import org.jboss.metadata.annotation.creator.Processor;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.web.spec.Web25MetaData;
import org.jboss.metadata.web.spec.WebMetaData;
@@ -39,32 +36,29 @@
* @author Scott.Stark at jboss.org
* @version $Revision$
*/
-public class Web25MetaDataCreator extends AbstractFinderUser
- implements Creator<Collection<Class<?>>, Web25MetaData>
+public class Web25MetaDataCreator extends AbstractCreator<WebMetaData>
+ implements Creator<Collection<Class<?>>, Web25MetaData>
{
- private List<Processor<WebMetaData, Class<?>>> processors;
-
public Web25MetaDataCreator(AnnotationFinder<AnnotatedElement> finder)
{
super(finder);
-
- processors = new ArrayList<Processor<WebMetaData,Class<?>>>();
- processors.add(new WebComponentProcessor(finder));
+ addProcessor(new WebComponentProcessor(finder));
}
public Web25MetaData create(Collection<Class<?>> classes)
{
+ // Don't create meta data for a empty collection
+ if(classes == null || classes.isEmpty())
+ return null;
+
+ // Create meta data
Web25MetaData metaData = new Web25MetaData();
metaData.setVersion("2.5");
- for(Class<?> cls : classes)
- {
- for(Processor<WebMetaData, Class<?>> processor : processors)
- {
- processor.process(metaData, cls);
- }
- }
-
+ // Process classes
+ for (Class<?> cls : classes)
+ process(metaData, cls);
+
return metaData;
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/AbstractWebServiceRefProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/AbstractWebServiceRefProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/AbstractWebServiceRefProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,7 +21,9 @@
*/
package org.jboss.metadata.annotation.creator.ws;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import java.util.Set;
import javax.xml.ws.WebServiceRef;
@@ -65,6 +67,7 @@
return;
process(refs, element, annotation);
}
+
protected void process(RemoteEnvironmentRefsGroupMetaData refs, E element, WebServiceRef annotation)
{
boolean trace = log.isTraceEnabled();
@@ -84,7 +87,7 @@
if(trace)
log.trace("created service-ref: "+ref);
- /** Delegate to handlerChainProcessor */
+ /** Delegate @HandlerChain processing to the handlerChainProcessor */
handlerChainProcessor.process(ref, element);
}
@@ -124,4 +127,9 @@
return ref;
}
+
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(WebServiceRef.class);
+ }
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceHandlerChainProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceHandlerChainProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceHandlerChainProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -23,17 +23,20 @@
import java.io.IOException;
import java.io.InputStream;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.Collection;
import javax.jws.HandlerChain;
import org.jboss.logging.Logger;
import org.jboss.metadata.annotation.creator.AbstractFinderUser;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.javaee.spec.ServiceReferenceHandlerChainsMetaData;
import org.jboss.metadata.javaee.spec.ServiceReferenceMetaData;
@@ -78,7 +81,8 @@
if (annotation.file() != null && annotation.file().length() > 1)
{
- log.trace("processing HandlerChain for element: " + type);
+ if(log.isTraceEnabled())
+ log.trace("processing HandlerChain for element: " + type);
process(refs, type, annotation);
}
}
@@ -117,7 +121,7 @@
}
/**
- * Unmarshal
+ * Unmarshal the handler-chains xml file.
*
* @param in the input stream of the file
* @return ServiceReferenceHandlerChainsMetaData
@@ -201,4 +205,9 @@
return ((Field) element).getDeclaringClass();
}
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(HandlerChain.class);
+ }
+
}
\ No newline at end of file
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceRefsClassProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceRefsClassProcessor.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceRefsClassProcessor.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,16 +21,21 @@
*/
package org.jboss.metadata.annotation.creator.ws;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import javax.xml.ws.WebServiceRef;
import javax.xml.ws.WebServiceRefs;
import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.javaee.spec.RemoteEnvironmentRefsGroupMetaData;
/**
+ * @WebServiceRefs processor
+ *
* @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
* @version $Revision$
*/
@@ -78,4 +83,9 @@
return element.getName();
}
+ @Override
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return ProcessorUtils.createAnnotationSet(WebServiceRefs.class);
+ }
}
Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/AnnotationClientUnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/AnnotationClientUnitTestCase.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/AnnotationClientUnitTestCase.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,11 +21,26 @@
*/
package org.jboss.test.metadata.annotation.client;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Field;
import java.util.Collection;
+import java.util.HashSet;
import java.util.Set;
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.annotation.Resource;
+import javax.annotation.Resources;
+import javax.annotation.security.DeclareRoles;
+import javax.annotation.security.RunAs;
+import javax.ejb.EJB;
+import javax.ejb.EJBs;
+import javax.persistence.PersistenceContext;
+import javax.xml.ws.WebServiceRef;
+import javax.xml.ws.WebServiceRefs;
+
+import org.jboss.metadata.annotation.creator.AnnotationContext;
import org.jboss.metadata.annotation.creator.client.ApplicationClient5MetaDataCreator;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.annotation.finder.DefaultAnnotationFinder;
@@ -196,6 +211,8 @@
assertEquals(Client.class.getName(), wsRefFieldTarget.getInjectionTargetClass());
assertEquals("service", wsRefFieldTarget.getInjectionTargetName());
assertNull(wsRef.getServiceInterface());
+
+ assertAnnotationContext(creator.getAnnotationContext());
}
@ScanPackage("org.jboss.test.metadata.annotation.client.basic")
@@ -367,4 +384,45 @@
assertEquals("service", wsRefFieldTarget.getInjectionTargetName());
assertEquals(wsRefField.getType().getName(), serviceRef.getServiceInterface());
}
+
+ private void assertAnnotationContext(AnnotationContext context)
+ {
+ Collection<Class<? extends Annotation>> typeAnnotations = new HashSet<Class<? extends Annotation>>();
+ typeAnnotations.add(Resource.class);
+ typeAnnotations.add(Resources.class);
+ typeAnnotations.add(EJB.class);
+ typeAnnotations.add(EJBs.class);
+ typeAnnotations.add(PersistenceContext.class);
+ typeAnnotations.add(WebServiceRef.class);
+ typeAnnotations.add(WebServiceRefs.class);
+
+ // Assert Type annotations
+ assertAnnotations(typeAnnotations, context.getTypeAnnotations());
+
+ Collection<Class<? extends Annotation>> methodAnnotations = new HashSet<Class<? extends Annotation>>();
+ methodAnnotations.add(PreDestroy.class);
+ methodAnnotations.add(PostConstruct.class);
+ methodAnnotations.add(Resource.class);
+ methodAnnotations.add(EJB.class);
+ methodAnnotations.add(PersistenceContext.class);
+ methodAnnotations.add(WebServiceRef.class);
+
+ // Assert Method annotations
+ assertAnnotations(methodAnnotations, context.getMethodAnnotations());
+
+ Collection<Class<? extends Annotation>> fieldAnnotations = new HashSet<Class<? extends Annotation>>();
+ fieldAnnotations.add(Resource.class);
+ fieldAnnotations.add(EJB.class);
+ fieldAnnotations.add(PersistenceContext.class);
+ fieldAnnotations.add(WebServiceRef.class);
+
+ // Assert Field annotations
+ assertAnnotations(fieldAnnotations, context.getFieldAnnotations());
+ }
+
+ private void assertAnnotations(Collection<Class<? extends Annotation>> expected, Collection<Class<? extends Annotation>> actual)
+ {
+ assertEquals(expected.size(), actual.size());
+ assertTrue(actual.containsAll(expected));
+ }
}
Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3UnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3UnitTestCase.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3UnitTestCase.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -23,6 +23,7 @@
import java.io.File;
import java.io.FilenameFilter;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.net.URISyntaxException;
import java.net.URL;
@@ -33,6 +34,10 @@
import java.util.Iterator;
import java.util.List;
+import javax.ejb.ApplicationException;
+import javax.ejb.MessageDriven;
+import javax.ejb.Stateful;
+import javax.ejb.Stateless;
import javax.ejb.Timer;
import javax.ejb.TransactionAttributeType;
@@ -42,11 +47,9 @@
import org.jboss.metadata.common.ejb.IEnterpriseBeanMetaData;
import org.jboss.metadata.ejb.jboss.JBoss50DTDMetaData;
import org.jboss.metadata.ejb.jboss.JBoss50MetaData;
-import org.jboss.metadata.ejb.jboss.JBossConsumerBeanMetaData;
import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
import org.jboss.metadata.ejb.jboss.JBossMessageDrivenBeanMetaData;
import org.jboss.metadata.ejb.jboss.JBossMetaData;
-import org.jboss.metadata.ejb.jboss.JBossServiceBeanMetaData;
import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
import org.jboss.metadata.ejb.spec.ActivationConfigMetaData;
import org.jboss.metadata.ejb.spec.ActivationConfigPropertiesMetaData;
@@ -62,7 +65,6 @@
import org.jboss.metadata.ejb.spec.EjbJar3xMetaData;
import org.jboss.metadata.ejb.spec.EnterpriseBeanMetaData;
import org.jboss.metadata.ejb.spec.EnterpriseBeansMetaData;
-import org.jboss.metadata.ejb.spec.EntityBeanMetaData;
import org.jboss.metadata.ejb.spec.ExcludeListMetaData;
import org.jboss.metadata.ejb.spec.InitMethodMetaData;
import org.jboss.metadata.ejb.spec.InitMethodsMetaData;
@@ -810,4 +812,26 @@
assertNotNull(runAs);
assertEquals("InternalUser", runAs.getRoleName());
}
+
+ public void testEjbJar30CreatorAnnotationContext()
+ {
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ EjbJar30Creator creator = new EjbJar30Creator(finder);
+
+ assertNotNull(creator);
+ assertNotNull(creator.getAnnotationContext());
+
+ Collection<Class<? extends Annotation>> expected = new HashSet<Class<? extends Annotation>>();
+ expected.add(Stateless.class);
+ expected.add(Stateful.class);
+ expected.add(MessageDriven.class);
+ expected.add(ApplicationException.class);
+
+ // Check Type annotations, others must be empty
+ assertEquals(expected.size(), creator.getAnnotationContext().getTypeAnnotations().size());
+ assertTrue(creator.getAnnotationContext().getTypeAnnotations().containsAll(expected));
+
+ assertTrue(creator.getAnnotationContext().getFieldAnnotations().isEmpty());
+ assertTrue(creator.getAnnotationContext().getMethodAnnotations().isEmpty());
+ }
}
Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/JBossAnnotationEjb3UnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/JBossAnnotationEjb3UnitTestCase.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/JBossAnnotationEjb3UnitTestCase.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -23,6 +23,7 @@
import java.io.File;
import java.io.FilenameFilter;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.net.URISyntaxException;
import java.net.URL;
@@ -33,9 +34,15 @@
import java.util.Iterator;
import java.util.List;
+import javax.ejb.ApplicationException;
+import javax.ejb.MessageDriven;
+import javax.ejb.Stateful;
+import javax.ejb.Stateless;
import javax.ejb.Timer;
import javax.ejb.TransactionAttributeType;
+import org.jboss.ejb3.annotation.Consumer;
+import org.jboss.ejb3.annotation.Service;
import org.jboss.metadata.annotation.creator.ejb.jboss.JBoss50Creator;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.annotation.finder.DefaultAnnotationFinder;
@@ -48,7 +55,6 @@
import org.jboss.metadata.ejb.jboss.JBossConsumerBeanMetaData;
import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeansMetaData;
-import org.jboss.metadata.ejb.jboss.JBossEntityBeanMetaData;
import org.jboss.metadata.ejb.jboss.JBossMessageDrivenBeanMetaData;
import org.jboss.metadata.ejb.jboss.JBossMetaData;
import org.jboss.metadata.ejb.jboss.JBossServiceBeanMetaData;
@@ -980,4 +986,28 @@
}
return classes;
}
+
+ public void testJBoss50CreatorAnnotationContext()
+ {
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ JBoss50Creator creator = new JBoss50Creator(finder);
+
+ assertNotNull(creator);
+ assertNotNull(creator.getAnnotationContext());
+
+ Collection<Class<? extends Annotation>> expected = new HashSet<Class<? extends Annotation>>();
+ expected.add(Stateless.class);
+ expected.add(Stateful.class);
+ expected.add(MessageDriven.class);
+ expected.add(ApplicationException.class);
+ expected.add(Consumer.class);
+ expected.add(Service.class);
+
+ // Check Type annotations, others must be empty
+ assertEquals(expected.size(), creator.getAnnotationContext().getTypeAnnotations().size());
+ assertTrue(creator.getAnnotationContext().getTypeAnnotations().containsAll(expected));
+
+ assertTrue(creator.getAnnotationContext().getFieldAnnotations().isEmpty());
+ assertTrue(creator.getAnnotationContext().getMethodAnnotations().isEmpty());
+ }
}
Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/AnnotationWebUnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/AnnotationWebUnitTestCase.java 2008-07-18 15:25:18 UTC (rev 76001)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/AnnotationWebUnitTestCase.java 2008-07-18 16:06:03 UTC (rev 76002)
@@ -21,13 +21,28 @@
*/
package org.jboss.test.metadata.annotation.web;
+import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.annotation.Resource;
+import javax.annotation.Resources;
+import javax.annotation.security.DeclareRoles;
+import javax.annotation.security.RunAs;
+import javax.ejb.EJB;
+import javax.ejb.EJBs;
+import javax.persistence.PersistenceContext;
import javax.transaction.UserTransaction;
+import javax.xml.ws.WebServiceRef;
+import javax.xml.ws.WebServiceRefs;
+import org.jboss.metadata.annotation.creator.AnnotationContext;
import org.jboss.metadata.annotation.creator.web.Web25MetaDataCreator;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.annotation.finder.DefaultAnnotationFinder;
@@ -397,5 +412,50 @@
JBossServletMetaData jbossServletMetaData = newMerged.getServlets().get("MyServlet");
assertEquals("InternalUser", jbossServletMetaData.getRunAs().getRoleName());
assertEquals("javajoe", jbossServletMetaData.getRunAsPrincipal());
- }
+
+ assertAnnotationContext(creator.getAnnotationContext());
+ }
+
+ private void assertAnnotationContext(AnnotationContext context)
+ {
+ Collection<Class<? extends Annotation>> typeAnnotations = new HashSet<Class<? extends Annotation>>();
+ typeAnnotations.add(RunAs.class);
+ typeAnnotations.add(DeclareRoles.class);
+ typeAnnotations.add(Resource.class);
+ typeAnnotations.add(Resources.class);
+ typeAnnotations.add(EJB.class);
+ typeAnnotations.add(EJBs.class);
+ typeAnnotations.add(PersistenceContext.class);
+ typeAnnotations.add(WebServiceRef.class);
+ typeAnnotations.add(WebServiceRefs.class);
+
+ // Assert Type annotations
+ assertAnnotations(typeAnnotations, context.getTypeAnnotations());
+
+ Collection<Class<? extends Annotation>> methodAnnotations = new HashSet<Class<? extends Annotation>>();
+ methodAnnotations.add(PreDestroy.class);
+ methodAnnotations.add(PostConstruct.class);
+ methodAnnotations.add(Resource.class);
+ methodAnnotations.add(EJB.class);
+ methodAnnotations.add(PersistenceContext.class);
+ methodAnnotations.add(WebServiceRef.class);
+
+ // Assert Method annotations
+ assertAnnotations(methodAnnotations, context.getMethodAnnotations());
+
+ Collection<Class<? extends Annotation>> fieldAnnotations = new HashSet<Class<? extends Annotation>>();
+ fieldAnnotations.add(Resource.class);
+ fieldAnnotations.add(EJB.class);
+ fieldAnnotations.add(PersistenceContext.class);
+ fieldAnnotations.add(WebServiceRef.class);
+
+ // Assert Field Annotations
+ assertAnnotations(fieldAnnotations, context.getFieldAnnotations());
+ }
+
+ private void assertAnnotations(Collection<Class<? extends Annotation>> expected, Collection<Class<? extends Annotation>> actual)
+ {
+ assertEquals(expected.size(), actual.size());
+ assertTrue(actual.containsAll(expected));
+ }
}
More information about the jboss-cvs-commits
mailing list