[jboss-cvs] JBossAS SVN: r66917 - projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Nov 9 10:43:20 EST 2007
Author: scott.stark at jboss.org
Date: 2007-11-09 10:43:20 -0500 (Fri, 09 Nov 2007)
New Revision: 66917
Added:
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ResourceClassProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ResourcesClassProcessor.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/AbstractEnterpriseBeanProcessor.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/ResourceFieldProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ResourceMethodProcessor.java
Log:
Add @Resources and update @Resource to create env-entry, resource-env-ref, resource-ref, and service-ref metadata based on the resource type.
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 2007-11-09 15:42:17 UTC (rev 66916)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractComponentProcessor.java 2007-11-09 15:43:20 UTC (rev 66917)
@@ -33,10 +33,8 @@
import java.util.Map;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
-import org.jboss.metadata.javaee.spec.AnnotatedEJBReferenceMetaData;
import org.jboss.metadata.javaee.spec.AnnotatedEJBReferencesMetaData;
-import org.jboss.metadata.javaee.spec.MutableEnvironment;
-import org.jboss.metadata.javaee.spec.ResourceReferencesMetaData;
+import org.jboss.metadata.javaee.spec.EnvironmentRefsGroupMetaData;
/**
* A base javaee component processor.
@@ -46,7 +44,7 @@
* @author Scott.Stark at jboss.org
* @version $Revision$
*/
-public abstract class AbstractComponentProcessor<MD, E extends MutableEnvironment>
+public abstract class AbstractComponentProcessor<MD>
extends AbstractFinderUser
{
/** Map<Processor metdata type class, List<Processor for classes>> */
@@ -69,6 +67,8 @@
// Add component environment processors
addMethodProcessor(new ResourceMethodProcessor(finder));
addFieldProcessor(new ResourceFieldProcessor(finder));
+ addTypeProcessor(new ResourceClassProcessor(finder));
+ addTypeProcessor(new ResourcesClassProcessor(finder));
addMethodProcessor(new EJBMethodProcessor(finder));
addFieldProcessor(new EJBFieldProcessor(finder));
}
@@ -113,16 +113,12 @@
* @param metaData
* @param type
*/
- public void process(E metaData, Class<?> type)
+ public void process(EnvironmentRefsGroupMetaData metaData, Class<?> type)
{
- ResourceReferencesMetaData resRefs = metaData.getResourceReferences();
- if(resRefs == null)
- {
- resRefs = new ResourceReferencesMetaData();
- metaData.setResourceReferences(resRefs);
- }
- processClass(resRefs, type);
+ // For Resources/Resource
+ processClass(metaData, type);
+ // @EJB
AnnotatedEJBReferencesMetaData aejbRefs = metaData.getAnnotatedEjbReferences();
if(aejbRefs == null)
{
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractEnterpriseBeanProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractEnterpriseBeanProcessor.java 2007-11-09 15:42:17 UTC (rev 66916)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractEnterpriseBeanProcessor.java 2007-11-09 15:43:20 UTC (rev 66917)
@@ -40,7 +40,7 @@
* @version $Revision: $
*/
public abstract class AbstractEnterpriseBeanProcessor<MD extends EnterpriseBeanMetaData>
- extends AbstractComponentProcessor<MD, EnvironmentRefsGroupMetaData>
+ extends AbstractComponentProcessor<MD>
implements Processor<EjbJar3xMetaData, Class<?>>
{
protected abstract MD create(Class<?> beanClass);
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 2007-11-09 15:42:17 UTC (rev 66916)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractResourceProcessor.java 2007-11-09 15:43:20 UTC (rev 66917)
@@ -23,43 +23,217 @@
import java.lang.reflect.AnnotatedElement;
import java.util.Collections;
+import java.util.HashSet;
import java.util.Set;
import javax.annotation.Resource;
import javax.annotation.Resource.AuthenticationType;
+import org.jboss.annotation.javaee.Descriptions;
+import org.jboss.logging.Logger;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.javaee.spec.DescriptionGroupMetaData;
import org.jboss.metadata.javaee.spec.DescriptionImpl;
import org.jboss.metadata.javaee.spec.DescriptionsImpl;
+import org.jboss.metadata.javaee.spec.EnvironmentEntriesMetaData;
+import org.jboss.metadata.javaee.spec.EnvironmentEntryMetaData;
+import org.jboss.metadata.javaee.spec.EnvironmentRefsGroupMetaData;
+import org.jboss.metadata.javaee.spec.MessageDestinationReferenceMetaData;
+import org.jboss.metadata.javaee.spec.MessageDestinationReferencesMetaData;
import org.jboss.metadata.javaee.spec.ResourceAuthorityType;
+import org.jboss.metadata.javaee.spec.ResourceEnvironmentReferenceMetaData;
+import org.jboss.metadata.javaee.spec.ResourceEnvironmentReferencesMetaData;
import org.jboss.metadata.javaee.spec.ResourceInjectionTargetMetaData;
import org.jboss.metadata.javaee.spec.ResourceReferenceMetaData;
import org.jboss.metadata.javaee.spec.ResourceReferencesMetaData;
+import org.jboss.metadata.javaee.spec.ServiceReferenceMetaData;
+import org.jboss.metadata.javaee.spec.ServiceReferencesMetaData;
/**
- * E defines the actual annotated element we're working for.
- *
+ * Base processor for @Resource annotations. This works on the
+ * MutableRemoteEnvironment since a @Resource produces several different types
+ * of metadata based on the java type of the annotated element. From the common
+ * annotations 1.0 spec, table 2-4
+ *
+java type metadata type
+java.lang.String env-entry
+java.lang.Character env-entry
+java.lang.Integer env-entry
+java.lang.Boolean env-entry
+java.lang.Double env-entry
+java.lang.Byte env-entry
+java.lang.Short env-entry
+java.lang.Long env-entry
+java.lang.Float env-entry
+javax.xml.rpc.Service service-ref
+javax.xml.ws.Service service-ref
+javax.jws.WebService service-ref
+javax.sql.DataSource resource-ref
+javax.jms.ConnectionFactory resource-ref
+javax.jms.QueueConnectionFactory resource-ref
+javax.jms.TopicConnectionFactory resource-ref
+javax.mail.Session resource-ref
+java.net.URL resource-ref
+javax.resource.cci.ConnectionFactory resource-ref
+org.omg.CORBA_2_3.ORB resource-ref
+Any CF resource adapter resource-ref
+javax.jms.Queue message-destination-ref
+javax.jms.Topic message-destination-ref
+javax.resource.cci.InteractionSpec resource-env-ref
+javax.transaction.UserTransaction resource-env-ref
+Everything else resource-env-ref
+
* @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
+ * @author Scott.Stark at jboss.org
* @version $Revision$
*/
-public abstract class AbstractResourceProcessor<E extends AnnotatedElement, T extends ResourceReferencesMetaData>
+public abstract class AbstractResourceProcessor<E extends AnnotatedElement>
extends AbstractFinderUser
{
+ private static Logger log = Logger.getLogger(AbstractResourceProcessor.class);
+ private static final Set<String> envEntryTypes = new HashSet<String>();
+ private static final Set<String> serviceRefTypes = new HashSet<String>();
+ private static final Set<String> resourceRefTypes = new HashSet<String>();
+ private static final Set<String> messageDestRefRefTypes = new HashSet<String>();
+ static
+ {
+ envEntryTypes.add("java.lang.String");
+ envEntryTypes.add("java.lang.Character");
+ envEntryTypes.add("java.lang.Integer");
+ envEntryTypes.add("java.lang.Boolean");
+ envEntryTypes.add("java.lang.Double");
+ envEntryTypes.add("java.lang.Byte");
+ envEntryTypes.add("java.lang.Short");
+ envEntryTypes.add("java.lang.Float");
+ envEntryTypes.add("java.lang.Long");
+ envEntryTypes.add("char");
+ envEntryTypes.add("int");
+ envEntryTypes.add("boolean");
+ envEntryTypes.add("double");
+ envEntryTypes.add("byte");
+ envEntryTypes.add("short");
+ envEntryTypes.add("float");
+ envEntryTypes.add("long");
+ serviceRefTypes.add("javax.xml.rpc.Service");
+ serviceRefTypes.add("javax.xml.ws.Service");
+ serviceRefTypes.add("javax.jws.WebService");
+ resourceRefTypes.add("javax.sql.DataSource");
+ resourceRefTypes.add("javax.jms.ConnectionFactory");
+ resourceRefTypes.add("javax.jms.QueueConnectionFactory");
+ resourceRefTypes.add("javax.jms.TopicConnectionFactory");
+ resourceRefTypes.add("javax.mail.Session");
+ resourceRefTypes.add("java.net.URL");
+ resourceRefTypes.add("javax.resource.cci.ConnectionFactory");
+ resourceRefTypes.add("org.omg.CORBA_2_3.ORB");
+ messageDestRefRefTypes.add("javax.jms.Queue");
+ messageDestRefRefTypes.add("javax.jms.Topic");
+ messageDestRefRefTypes.add("javax.jms.TemporaryQueue");
+ messageDestRefRefTypes.add("javax.jms.TemporaryTopic");
+ }
+
+ public static boolean isEnvEntry(String type)
+ {
+ return envEntryTypes.contains(type);
+ }
+ public static boolean isServiceRef(String type)
+ {
+ return serviceRefTypes.contains(type);
+ }
+ public static boolean isResourceRef(String type)
+ {
+ return resourceRefTypes.contains(type);
+ }
+ public static boolean isMessageDestinationRef(String type)
+ {
+ return messageDestRefRefTypes.contains(type);
+ }
+
protected AbstractResourceProcessor(AnnotationFinder<AnnotatedElement> finder)
{
super(finder);
}
- public void process(T refs, E element)
+ public void process(EnvironmentRefsGroupMetaData refs, E element)
{
Resource annotation = finder.getAnnotation(element, Resource.class);
if(annotation == null)
return;
-
-
- ResourceReferenceMetaData ref = createResource(annotation, element);
- refs.add(ref);
+ process(refs, element, annotation);
}
+ protected void process(EnvironmentRefsGroupMetaData refs, E element, Resource annotation)
+ {
+ boolean trace = log.isTraceEnabled();
+ String type = annotation.type().getName();
+ if(type.equals("java.lang.Object"))
+ type = getType(element);
+ if(trace)
+ log.trace("process: "+annotation+", type="+type);
+ if(isEnvEntry(type))
+ {
+ EnvironmentEntriesMetaData env = refs.getEnvironmentEntries();
+ if(env == null)
+ {
+ env = new EnvironmentEntriesMetaData();
+ refs.setEnvironmentEntries(env);
+ }
+ EnvironmentEntryMetaData entry = createEntry(annotation, element);
+ env.add(entry);
+ if(trace)
+ log.trace("created env-entry: "+entry);
+ }
+ else if(isServiceRef(type))
+ {
+ ServiceReferencesMetaData srefs = refs.getServiceReferences();
+ if(srefs == null)
+ {
+ srefs = new ServiceReferencesMetaData();
+ refs.setServiceReferences(srefs);
+ }
+ ServiceReferenceMetaData ref = createServiceRef(annotation, element);
+ srefs.add(ref);
+ if(trace)
+ log.trace("created service-ref: "+ref);
+ }
+ else if(isResourceRef(type))
+ {
+ ResourceReferencesMetaData resRefs = refs.getResourceReferences();
+ if(resRefs == null)
+ {
+ resRefs = new ResourceReferencesMetaData();
+ refs.setResourceReferences(resRefs);
+ }
+ ResourceReferenceMetaData ref = createResourceRef(annotation, element);
+ resRefs.add(ref);
+ if(trace)
+ log.trace("created resource-ref: "+ref);
+ }
+ else if(isMessageDestinationRef(type))
+ {
+ MessageDestinationReferencesMetaData mrefs = refs.getMessageDestinationReferences();
+ if(mrefs == null)
+ {
+ mrefs = new MessageDestinationReferencesMetaData();
+ refs.setMessageDestinationReferences(mrefs);
+ }
+ MessageDestinationReferenceMetaData ref = createMessageRef(annotation, element);
+ mrefs.add(ref);
+ if(trace)
+ log.trace("created message-destination-ref: "+ref);
+ }
+ else
+ {
+ ResourceEnvironmentReferencesMetaData resRefs = refs.getResourceEnvironmentReferences();
+ if(resRefs == null)
+ {
+ resRefs = new ResourceEnvironmentReferencesMetaData();
+ refs.setResourceEnvironmentReferences(resRefs);
+ }
+ ResourceEnvironmentReferenceMetaData ref = createResourceEnvRef(annotation, element);
+ resRefs.add(ref);
+ if(trace)
+ log.trace("created resource-env-ref: "+ref);
+ }
+ }
/**
* Get the resource name based on the AnnotatedElement
@@ -71,11 +245,11 @@
protected abstract String getDeclaringClass(E element);
/**
- * Init common resource fiels that don't depend on the AnnotatedElement
+ * Create a
* @param annotation
* @param ref
*/
- protected ResourceReferenceMetaData createResource(Resource annotation, E element)
+ protected ResourceReferenceMetaData createResourceRef(Resource annotation, E element)
{
ResourceReferenceMetaData ref = new ResourceReferenceMetaData();
String name = annotation.name();
@@ -89,24 +263,150 @@
ref.setResAuth(resAuthType);
if(annotation.mappedName().length() > 0)
ref.setMappedName(annotation.mappedName());
- if(annotation.description().length() > 0)
+ Descriptions descriptions = getDescription(annotation.description());
+ if(descriptions != null)
{
- DescriptionImpl description = new DescriptionImpl();
- description.setDescription(annotation.description());
- DescriptionsImpl descriptions = new DescriptionsImpl();
- descriptions.add(description);
ref.setDescriptions(descriptions);
}
if(annotation.type() != Object.class)
ref.setType(annotation.type().getName());
else
ref.setType(getType(element));
- ResourceInjectionTargetMetaData target = new ResourceInjectionTargetMetaData();
- target.setInjectionTargetClass(getDeclaringClass(element));
- target.setInjectionTargetName(name);
- Set<ResourceInjectionTargetMetaData> injectionTargets = Collections.singleton(target);
- ref.setInjectionTargets(injectionTargets);
+ Set<ResourceInjectionTargetMetaData> injectionTargets = getInjectionTargets(name, element);
+ if(injectionTargets != null)
+ ref.setInjectionTargets(injectionTargets);
+
return ref;
}
+
+ protected EnvironmentEntryMetaData createEntry(Resource annotation, E element)
+ {
+ EnvironmentEntryMetaData entry = new EnvironmentEntryMetaData();
+ String name = annotation.name();
+ if(name.length() == 0)
+ name = getName(element);
+ entry.setEnvEntryName(name);
+ Descriptions descriptions = getDescription(annotation.description());
+ if(descriptions != null)
+ entry.setDescriptions(descriptions);
+ if(annotation.type() != Object.class)
+ entry.setType(annotation.type().getName());
+ else
+ entry.setType(getType(element));
+ if(annotation.mappedName().length() > 0)
+ entry.setValue(annotation.mappedName());
+ Set<ResourceInjectionTargetMetaData> injectionTargets = getInjectionTargets(name, element);
+ if(injectionTargets != null)
+ entry.setInjectionTargets(injectionTargets);
+
+ return entry;
+ }
+
+ protected ServiceReferenceMetaData createServiceRef(Resource annotation, E element)
+ {
+ ServiceReferenceMetaData ref = new ServiceReferenceMetaData();
+ String name = annotation.name();
+ if(name.length() == 0)
+ name = getName(element);
+ ref.setServiceRefName(name);
+ if(annotation.mappedName().length() > 0)
+ ref.setMappedName(annotation.mappedName());
+ ref.setAnnotatedElement(element);
+ DescriptionGroupMetaData dg = getDescriptionGroup(annotation.description());
+ if(dg != null)
+ ref.setDescriptionGroup(dg);
+ if(annotation.type() != Object.class)
+ ref.setServiceRefType(annotation.type().getName());
+ else
+ ref.setServiceRefType(getType(element));
+ Set<ResourceInjectionTargetMetaData> injectionTargets = getInjectionTargets(name, element);
+ if(injectionTargets != null)
+ ref.setInjectionTargets(injectionTargets);
+
+ return ref;
+ }
+
+ protected MessageDestinationReferenceMetaData createMessageRef(Resource annotation, E element)
+ {
+ MessageDestinationReferenceMetaData ref = new MessageDestinationReferenceMetaData();
+ String name = annotation.name();
+ if(name.length() == 0)
+ name = getName(element);
+ ref.setMessageDestinationRefName(name);
+ if(annotation.mappedName().length() > 0)
+ ref.setMappedName(annotation.mappedName());
+ if(annotation.type() != Object.class)
+ ref.setType(annotation.type().getName());
+ else
+ ref.setType(getType(element));
+ Descriptions descriptions = getDescription(annotation.description());
+ if(descriptions != null)
+ ref.setDescriptions(descriptions);
+ Set<ResourceInjectionTargetMetaData> injectionTargets = getInjectionTargets(name, element);
+ if(injectionTargets != null)
+ ref.setInjectionTargets(injectionTargets);
+
+ return ref;
+ }
+
+ protected ResourceEnvironmentReferenceMetaData createResourceEnvRef(Resource annotation, E element)
+ {
+ ResourceEnvironmentReferenceMetaData ref = new ResourceEnvironmentReferenceMetaData();
+ String name = annotation.name();
+ if(name.length() == 0)
+ name = getName(element);
+ ref.setResourceEnvRefName(name);
+ if(annotation.mappedName().length() > 0)
+ ref.setMappedName(annotation.mappedName());
+ if(annotation.type() != Object.class)
+ ref.setType(annotation.type().getName());
+ else
+ ref.setType(getType(element));
+ Descriptions descriptions = getDescription(annotation.description());
+ if(descriptions != null)
+ ref.setDescriptions(descriptions);
+ Set<ResourceInjectionTargetMetaData> injectionTargets = getInjectionTargets(name, element);
+ if(injectionTargets != null)
+ ref.setInjectionTargets(injectionTargets);
+
+ return ref;
+ }
+
+ protected Descriptions getDescription(String description)
+ {
+ DescriptionsImpl descriptions = null;
+ if(description.length() > 0)
+ {
+ DescriptionImpl di = new DescriptionImpl();
+ di.setDescription(description);
+ descriptions = new DescriptionsImpl();
+ descriptions.add(di);
+ }
+ return descriptions;
+ }
+ protected DescriptionGroupMetaData getDescriptionGroup(String description)
+ {
+ DescriptionGroupMetaData dg = null;
+ if(description.length() > 0)
+ {
+ dg = new DescriptionGroupMetaData();
+ Descriptions descriptions = getDescription(description);
+ dg.setDescriptions(descriptions);
+ }
+ return dg;
+ }
+ protected Set<ResourceInjectionTargetMetaData> getInjectionTargets(String name, E element)
+ {
+ Set<ResourceInjectionTargetMetaData> injectionTargets = null;
+ if((element instanceof Class) == false)
+ {
+ // Create an injection target for non-class elements
+ ResourceInjectionTargetMetaData target = new ResourceInjectionTargetMetaData();
+ target.setInjectionTargetClass(getDeclaringClass(element));
+ target.setInjectionTargetName(name);
+ injectionTargets = Collections.singleton(target);
+ }
+ return injectionTargets;
+ }
}
Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ResourceClassProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ResourceClassProcessor.java (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ResourceClassProcessor.java 2007-11-09 15:43:20 UTC (rev 66917)
@@ -0,0 +1,72 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt 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.reflect.AnnotatedElement;
+
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.javaee.spec.EnvironmentRefsGroupMetaData;
+
+/**
+ * If the annotation is applied to a class, the annotation declares a resource
+ * that the application will look up at runtime. Even though this annotation is
+ * not marked Inherited, if used all superclasses MUST be examined to discover
+ * all uses of this annotation. All such annotation instances specify resources
+ * that are needed by the application. Note that this annotation may appear on
+ * private fields and methods of the superclasses. Injection of the declared
+ * resources needs to happen in these cases as well, even if a method with such
+ * an annotation is overridden by a subclass.
+ *
+ * @author Scott.Stark at jboss.org
+ * @version $Revision$
+ */
+public class ResourceClassProcessor
+ extends AbstractResourceProcessor<Class>
+ implements Processor<EnvironmentRefsGroupMetaData, Class>
+{
+
+ /**
+ * @param finder
+ */
+ public ResourceClassProcessor(AnnotationFinder<AnnotatedElement> finder)
+ {
+ super(finder);
+ }
+
+ @Override
+ protected String getName(Class element)
+ {
+ String name = element.getSimpleName();
+ return name;
+ }
+ @Override
+ protected String getType(Class element)
+ {
+ return element.getName();
+ }
+ @Override
+ protected String getDeclaringClass(Class element)
+ {
+ return element.getName();
+ }
+
+}
Property changes on: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ResourceClassProcessor.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ native
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ResourceFieldProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ResourceFieldProcessor.java 2007-11-09 15:42:17 UTC (rev 66916)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ResourceFieldProcessor.java 2007-11-09 15:43:20 UTC (rev 66917)
@@ -25,15 +25,15 @@
import java.lang.reflect.Field;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
-import org.jboss.metadata.javaee.spec.ResourceReferencesMetaData;
+import org.jboss.metadata.javaee.spec.EnvironmentRefsGroupMetaData;
/**
* @author Scott.Stark at jboss.org
* @version $Revision$
*/
public class ResourceFieldProcessor
- extends AbstractResourceProcessor<Field, ResourceReferencesMetaData>
- implements Processor<ResourceReferencesMetaData, Field>
+ extends AbstractResourceProcessor<Field>
+ implements Processor<EnvironmentRefsGroupMetaData, Field>
{
/**
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ResourceMethodProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ResourceMethodProcessor.java 2007-11-09 15:42:17 UTC (rev 66916)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ResourceMethodProcessor.java 2007-11-09 15:43:20 UTC (rev 66917)
@@ -25,15 +25,15 @@
import java.lang.reflect.Method;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
-import org.jboss.metadata.javaee.spec.ResourceReferencesMetaData;
+import org.jboss.metadata.javaee.spec.EnvironmentRefsGroupMetaData;
/**
* @author Scott.Stark at jboss.org
* @version $Revision$
*/
public class ResourceMethodProcessor
- extends AbstractResourceProcessor<Method, ResourceReferencesMetaData>
- implements Processor<ResourceReferencesMetaData, Method>
+ extends AbstractResourceProcessor<Method>
+ implements Processor<EnvironmentRefsGroupMetaData, Method>
{
/**
Added: 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 (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ResourcesClassProcessor.java 2007-11-09 15:43:20 UTC (rev 66917)
@@ -0,0 +1,89 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt 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.reflect.AnnotatedElement;
+
+import javax.annotation.Resource;
+import javax.annotation.Resources;
+
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.javaee.spec.EnvironmentRefsGroupMetaData;
+
+/**
+ * If the annotation is applied to a class, the annotation declares a resource
+ * that the application will look up at runtime. Even though this annotation is
+ * not marked Inherited, if used all superclasses MUST be examined to discover
+ * all uses of this annotation. All such annotation instances specify resources
+ * that are needed by the application. Note that this annotation may appear on
+ * private fields and methods of the superclasses. Injection of the declared
+ * resources needs to happen in these cases as well, even if a method with such
+ * an annotation is overridden by a subclass.
+ *
+ * @author Scott.Stark at jboss.org
+ * @version $Revision$
+ */
+public class ResourcesClassProcessor
+ extends ResourceClassProcessor
+ implements Processor<EnvironmentRefsGroupMetaData, Class>
+{
+
+ /**
+ * @param finder
+ */
+ public ResourcesClassProcessor(AnnotationFinder<AnnotatedElement> finder)
+ {
+ super(finder);
+ }
+
+ public void process(EnvironmentRefsGroupMetaData metaData, Class type)
+ {
+ Resources annotation = finder.getAnnotation(type, Resources.class);
+ if(annotation == null)
+ return;
+
+ Resource[] resources = annotation.value();
+ if(resources != null)
+ {
+ for(Resource res : resources)
+ super.process(metaData, type, res);
+ }
+ }
+
+ @Override
+ protected String getName(Class element)
+ {
+ String name = element.getSimpleName();
+ return name;
+ }
+ @Override
+ protected String getType(Class element)
+ {
+ return element.getName();
+ }
+ @Override
+ protected String getDeclaringClass(Class element)
+ {
+ return element.getName();
+ }
+
+}
Property changes on: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ResourcesClassProcessor.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ native
More information about the jboss-cvs-commits
mailing list