[jboss-cvs] JBossAS SVN: r76756 - in projects/metadata/trunk/src: main/java/org/jboss/metadata/annotation/creator/ws and 3 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Aug 7 06:17:14 EDT 2008
Author: emuckenhuber
Date: 2008-08-07 06:17:14 -0400 (Thu, 07 Aug 2008)
New Revision: 76756
Added:
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractInjectionTargetProcessor.java
projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/injection/
projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/injection/RequestAttributeListener.java
projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/injection/ServletFilter.java
projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/injection/StatefulIF.java
projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/injection/StatefulLocalIF.java
projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/injection/TestServlet.java
projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/injection/unit/
projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/injection/unit/WebInjectionTargetUnitTestCase.java
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/AbstractPersistenceContextProcessor.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/AbstractResourceProcessor.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/AbstractWebServiceRefProcessor.java
Log:
[JBMETA-88] merge injection targets
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-08-07 09:51:41 UTC (rev 76755)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractEJBProcessor.java 2008-08-07 10:17:14 UTC (rev 76756)
@@ -40,7 +40,7 @@
* @version $Revision$
*/
public abstract class AbstractEJBProcessor<E extends AnnotatedElement>
- extends AbstractFinderUser
+ extends AbstractInjectionTargetProcessor<E>
{
/**
* @param finder
@@ -62,7 +62,7 @@
protected void process(AnnotatedEJBReferencesMetaData refs, E element, EJB annotation)
{
AnnotatedEJBReferenceMetaData ref = createEJB(annotation, element);
- refs.add(ref);
+ addReference(refs, ref);
}
/**
Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractInjectionTargetProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractInjectionTargetProcessor.java (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractInjectionTargetProcessor.java 2008-08-07 10:17:14 UTC (rev 76756)
@@ -0,0 +1,80 @@
+/*
+ * 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.reflect.AnnotatedElement;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.javaee.spec.ResourceInjectionMetaData;
+import org.jboss.metadata.javaee.spec.ResourceInjectionTargetMetaData;
+import org.jboss.metadata.javaee.support.AbstractMappedMetaData;
+
+/**
+ * The AbstractInjectionTargetProcessor.
+ *
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public abstract class AbstractInjectionTargetProcessor<E extends AnnotatedElement> extends AbstractFinderUser
+{
+
+ protected AbstractInjectionTargetProcessor(AnnotationFinder<AnnotatedElement> finder)
+ {
+ super(finder);
+ }
+
+ /**
+ * Add a ResourceInjectionMetaData to a AbstractMappedMetaData, where the
+ * InjectionTargets are merged if a reference already exists with the same name.
+ *
+ * @param <T extends ResourceInjectionMetaData>
+ * @param refs the mapped meta data
+ * @param ref the reference
+ */
+ protected <T extends ResourceInjectionMetaData> void addReference(AbstractMappedMetaData<T> refs, T ref)
+ {
+ T existingRef = refs.get(ref.getKey());
+ if (existingRef == null)
+ {
+ refs.add(ref);
+ }
+ else
+ {
+ Set<ResourceInjectionTargetMetaData> injectionTargets = new HashSet<ResourceInjectionTargetMetaData>();
+ if (existingRef.getInjectionTargets() != null && existingRef.getInjectionTargets().size() > 0)
+ {
+ for (ResourceInjectionTargetMetaData target : existingRef.getInjectionTargets())
+ injectionTargets.add(target);
+ }
+ if (ref.getInjectionTargets() != null && ref.getInjectionTargets().size() > 0)
+ {
+ for (ResourceInjectionTargetMetaData target : ref.getInjectionTargets())
+ injectionTargets.add(target);
+ }
+ if (injectionTargets.size() > 0)
+ existingRef.setInjectionTargets(Collections.unmodifiableSet(injectionTargets));
+ }
+ }
+}
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-08-07 09:51:41 UTC (rev 76755)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractPersistenceContextProcessor.java 2008-08-07 10:17:14 UTC (rev 76756)
@@ -44,7 +44,7 @@
* @version $Revision$
*/
public abstract class AbstractPersistenceContextProcessor<E extends AnnotatedElement>
- extends AbstractFinderUser
+ extends AbstractInjectionTargetProcessor<E>
{
/**
* @param finder
@@ -66,7 +66,7 @@
protected void process(PersistenceContextReferencesMetaData refs, E element, PersistenceContext annotation)
{
PersistenceContextReferenceMetaData ref = createPC(element, annotation);
- refs.add(ref);
+ addReference(refs, ref);
}
protected PersistenceContextReferenceMetaData createPC(E element, PersistenceContext annotation)
Modified: 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 2008-08-07 09:51:41 UTC (rev 76755)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractProcessor.java 2008-08-07 10:17:14 UTC (rev 76756)
@@ -42,6 +42,7 @@
/**
* A abstract base processor.
*
+ * @author Scott.Stark at jboss.org
* @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
* @version $Revision$
*/
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-08-07 09:51:41 UTC (rev 76755)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractResourceProcessor.java 2008-08-07 10:17:14 UTC (rev 76756)
@@ -87,7 +87,7 @@
* @version $Revision$
*/
public abstract class AbstractResourceProcessor<E extends AnnotatedElement>
- extends AbstractFinderUser
+ extends AbstractInjectionTargetProcessor<E>
{
private static Logger log = Logger.getLogger(AbstractResourceProcessor.class);
private static final Set<String> envEntryTypes = new HashSet<String>();
@@ -176,7 +176,7 @@
refs.setEnvironmentEntries(env);
}
EnvironmentEntryMetaData entry = createEntry(annotation, element);
- env.add(entry);
+ addReference(env, entry);
if(trace)
log.trace("created env-entry: "+entry);
}
@@ -189,7 +189,7 @@
refs.setServiceReferences(srefs);
}
ServiceReferenceMetaData ref = createServiceRef(annotation, element);
- srefs.add(ref);
+ addReference(srefs, ref);
if(trace)
log.trace("created service-ref: "+ref);
}
@@ -202,7 +202,7 @@
refs.setResourceReferences(resRefs);
}
ResourceReferenceMetaData ref = createResourceRef(annotation, element);
- resRefs.add(ref);
+ addReference(resRefs, ref);
if(trace)
log.trace("created resource-ref: "+ref);
}
@@ -215,7 +215,7 @@
refs.setMessageDestinationReferences(mrefs);
}
MessageDestinationReferenceMetaData ref = createMessageRef(annotation, element);
- mrefs.add(ref);
+ addReference(mrefs, ref);
if(trace)
log.trace("created message-destination-ref: "+ref);
}
@@ -228,12 +228,12 @@
refs.setResourceEnvironmentReferences(resRefs);
}
ResourceEnvironmentReferenceMetaData ref = createResourceEnvRef(annotation, element);
- resRefs.add(ref);
+ addReference(resRefs, ref);
if(trace)
log.trace("created resource-env-ref: "+ref);
}
}
-
+
/**
* Get the resource name based on the AnnotatedElement
* @param element
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-08-07 09:51:41 UTC (rev 76755)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/AbstractWebServiceRefProcessor.java 2008-08-07 10:17:14 UTC (rev 76756)
@@ -29,7 +29,7 @@
import javax.xml.ws.WebServiceRef;
import org.jboss.logging.Logger;
-import org.jboss.metadata.annotation.creator.AbstractFinderUser;
+import org.jboss.metadata.annotation.creator.AbstractInjectionTargetProcessor;
import org.jboss.metadata.annotation.creator.ProcessorUtils;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.javaee.spec.ResourceInjectionTargetMetaData;
@@ -44,7 +44,7 @@
* @version $Revision: 67548 $
*/
public abstract class AbstractWebServiceRefProcessor<E extends AnnotatedElement>
- extends AbstractFinderUser
+ extends AbstractInjectionTargetProcessor<E>
{
/** The logger. */
private static Logger log = Logger.getLogger(AbstractWebServiceRefProcessor.class);
@@ -77,7 +77,7 @@
log.trace("process: "+annotation+", type="+type);
ServiceReferenceMetaData ref = createServiceRef(annotation, element);
- refs.add(ref);
+ addReference(refs, ref);
if(trace)
log.trace("created service-ref: "+ref);
Added: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/injection/RequestAttributeListener.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/injection/RequestAttributeListener.java (rev 0)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/injection/RequestAttributeListener.java 2008-08-07 10:17:14 UTC (rev 76756)
@@ -0,0 +1,66 @@
+/*
+ * 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.test.metadata.annotation.web.injection;
+
+import javax.annotation.Resource;
+import javax.ejb.EJB;
+import javax.jms.ConnectionFactory;
+import javax.jms.Queue;
+import javax.persistence.PersistenceContext;
+import javax.xml.ws.Service;
+import javax.xml.ws.WebServiceRef;
+
+/**
+ *
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public class RequestAttributeListener
+{
+ @EJB(beanName="StatefulTestBean", beanInterface=StatefulIF.class)
+ private StatefulIF statefulTestBean;
+
+ @EJB(beanName="StatefulTestBean", beanInterface=StatefulLocalIF.class)
+ private StatefulLocalIF statefulTestLocalBean;
+
+ @WebServiceRef
+ private StatefulIF webServiceRef;
+
+ @Resource
+ private String string;
+
+ @Resource
+ private Service webService;
+
+ @Resource
+ private ConnectionFactory connectionFactory;
+
+ @Resource
+ private Queue queue;
+
+ @Resource
+ private StatefulIF somethingElse;
+
+ @PersistenceContext
+ private StatefulIF persistenceContext;
+}
+
Added: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/injection/ServletFilter.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/injection/ServletFilter.java (rev 0)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/injection/ServletFilter.java 2008-08-07 10:17:14 UTC (rev 76756)
@@ -0,0 +1,67 @@
+/*
+ * 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.test.metadata.annotation.web.injection;
+
+import javax.annotation.Resource;
+import javax.ejb.EJB;
+import javax.jms.ConnectionFactory;
+import javax.jms.Queue;
+import javax.persistence.PersistenceContext;
+import javax.xml.ws.Service;
+import javax.xml.ws.WebServiceRef;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public class ServletFilter
+{
+
+ @EJB(beanName="StatefulTestBean", beanInterface=StatefulIF.class)
+ private StatefulIF statefulTestBean;
+
+ @EJB(beanName="StatefulTestBean", beanInterface=StatefulLocalIF.class)
+ private StatefulLocalIF statefulTestLocalBean;
+
+ @WebServiceRef
+ private StatefulIF webServiceRef;
+
+ @Resource
+ private String string;
+
+ @Resource
+ private Service webService;
+
+ @Resource
+ private ConnectionFactory connectionFactory;
+
+ @Resource
+ private Queue queue;
+
+ @Resource
+ private StatefulIF somethingElse;
+
+ @PersistenceContext
+ private StatefulIF persistenceContext;
+
+}
+
Added: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/injection/StatefulIF.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/injection/StatefulIF.java (rev 0)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/injection/StatefulIF.java 2008-08-07 10:17:14 UTC (rev 76756)
@@ -0,0 +1,32 @@
+/*
+ * 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.test.metadata.annotation.web.injection;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public interface StatefulIF
+{
+
+}
+
Added: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/injection/StatefulLocalIF.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/injection/StatefulLocalIF.java (rev 0)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/injection/StatefulLocalIF.java 2008-08-07 10:17:14 UTC (rev 76756)
@@ -0,0 +1,32 @@
+/*
+ * 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.test.metadata.annotation.web.injection;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public interface StatefulLocalIF
+{
+
+}
+
Added: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/injection/TestServlet.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/injection/TestServlet.java (rev 0)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/injection/TestServlet.java 2008-08-07 10:17:14 UTC (rev 76756)
@@ -0,0 +1,65 @@
+/*
+ * 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.test.metadata.annotation.web.injection;
+
+import javax.annotation.Resource;
+import javax.ejb.EJB;
+import javax.jms.ConnectionFactory;
+import javax.jms.Queue;
+import javax.persistence.PersistenceContext;
+import javax.xml.ws.Service;
+import javax.xml.ws.WebServiceRef;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public class TestServlet
+{
+ @EJB(beanName="StatefulTestBean", beanInterface=StatefulIF.class)
+ private StatefulIF statefulTestBean;
+
+ @EJB(beanName="StatefulTestBean", beanInterface=StatefulLocalIF.class)
+ private StatefulLocalIF statefulTestLocalBean;
+
+ @WebServiceRef
+ private StatefulIF webServiceRef;
+
+ @Resource
+ private String string;
+
+ @Resource
+ private Service webService;
+
+ @Resource
+ private ConnectionFactory connectionFactory;
+
+ @Resource
+ private Queue queue;
+
+ @Resource
+ private StatefulIF somethingElse;
+
+ @PersistenceContext
+ private StatefulIF persistenceContext;
+}
+
Added: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/injection/unit/WebInjectionTargetUnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/injection/unit/WebInjectionTargetUnitTestCase.java (rev 0)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/injection/unit/WebInjectionTargetUnitTestCase.java 2008-08-07 10:17:14 UTC (rev 76756)
@@ -0,0 +1,145 @@
+/*
+ * 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.test.metadata.annotation.web.injection.unit;
+
+import java.lang.reflect.AnnotatedElement;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.jboss.metadata.annotation.creator.web.Web25MetaDataCreator;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.annotation.finder.DefaultAnnotationFinder;
+import org.jboss.metadata.javaee.spec.AnnotatedEJBReferencesMetaData;
+import org.jboss.metadata.javaee.spec.EnvironmentEntriesMetaData;
+import org.jboss.metadata.javaee.spec.MessageDestinationReferencesMetaData;
+import org.jboss.metadata.javaee.spec.PersistenceContextReferencesMetaData;
+import org.jboss.metadata.javaee.spec.ResourceEnvironmentReferencesMetaData;
+import org.jboss.metadata.javaee.spec.ResourceInjectionMetaData;
+import org.jboss.metadata.javaee.spec.ResourceInjectionTargetMetaData;
+import org.jboss.metadata.javaee.spec.ResourceReferencesMetaData;
+import org.jboss.metadata.javaee.spec.ServiceReferencesMetaData;
+import org.jboss.metadata.javaee.support.AbstractMappedMetaData;
+import org.jboss.metadata.web.spec.WebMetaData;
+import org.jboss.test.metadata.annotation.web.injection.RequestAttributeListener;
+import org.jboss.test.metadata.annotation.web.injection.ServletFilter;
+import org.jboss.test.metadata.annotation.web.injection.TestServlet;
+import org.jboss.test.metadata.common.PackageScanner;
+import org.jboss.test.metadata.common.ScanPackage;
+
+/**
+ * Test injection targets for web components.
+ * If multiple classes have the same reference, the injection target must not be merged.
+ *
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public class WebInjectionTargetUnitTestCase extends TestCase
+{
+
+ @ScanPackage("org.jboss.test.metadata.annotation.web.injection")
+ public void testInjectionTargets()
+ {
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ Web25MetaDataCreator creator = new Web25MetaDataCreator(finder);
+ Collection<Class<?>> classes = PackageScanner.loadClasses();
+
+ WebMetaData metaData = creator.create(classes);
+
+ assertNotNull(metaData);
+ // @Ejb
+ AnnotatedEJBReferencesMetaData annotatedRefs = metaData.getAnnotatedEjbReferences();
+ assertNotNull(annotatedRefs);
+ assertEquals(2, annotatedRefs.size());
+ assertResourceInjectionMetaData(annotatedRefs);
+
+ // @Resource, @WebServiceRef
+ ServiceReferencesMetaData serviceRefs = metaData.getServiceReferences();
+ assertNotNull(serviceRefs);
+ // 3x WebServiceRef (using a different naming convetion)
+ assertEquals(4, serviceRefs.size());
+ // Only test the webService
+ assertInjectionTargets(serviceRefs.get("webService"), "webService");
+
+ // @Resource
+ EnvironmentEntriesMetaData envEntries = metaData.getEnvironmentEntries();
+ assertNotNull(envEntries);
+ assertResourceInjectionMetaData(envEntries);
+ assertEquals(1, envEntries.size());
+
+ // @Resource
+ ResourceReferencesMetaData resourceRefs = metaData.getResourceReferences();
+ assertNotNull(resourceRefs);
+ assertEquals(1, resourceRefs.size());
+ assertResourceInjectionMetaData(resourceRefs);
+
+ // @Resource
+ MessageDestinationReferencesMetaData messageRefs = metaData.getMessageDestinationReferences();
+ assertNotNull(messageRefs);
+ assertEquals(1, messageRefs.size());
+ assertResourceInjectionMetaData(messageRefs);
+
+ // @Resource
+ ResourceEnvironmentReferencesMetaData resourceEnvRefs = metaData.getResourceEnvironmentReferences();
+ assertNotNull(resourceEnvRefs);
+ assertEquals(1, resourceEnvRefs.size());
+ assertResourceInjectionMetaData(resourceEnvRefs);
+
+ // @PersistenceContext
+ PersistenceContextReferencesMetaData persistenceRefs = metaData.getPersistenceContextRefs();
+ assertNotNull(persistenceRefs);
+ assertEquals(1, persistenceRefs.size());
+ assertResourceInjectionMetaData(persistenceRefs);
+
+
+ }
+
+ private void assertResourceInjectionMetaData(AbstractMappedMetaData<? extends ResourceInjectionMetaData> md)
+ {
+ for(ResourceInjectionMetaData injectionMD : md)
+ assertInjectionTargets(injectionMD, injectionMD.getName());
+ }
+
+
+ private void assertInjectionTargets(ResourceInjectionMetaData md, String name)
+ {
+ assertNotNull(md.getInjectionTargets());
+ assertEquals(3, md.getInjectionTargets().size());
+
+ List<String> actual = new ArrayList<String>();
+ List<String> expected = new ArrayList<String>();
+ expected.add(RequestAttributeListener.class.getName());
+ expected.add(ServletFilter.class.getName());
+ expected.add(TestServlet.class.getName());
+
+ for(ResourceInjectionTargetMetaData target : md.getInjectionTargets())
+ {
+ actual.add(target.getInjectionTargetClass());
+ assertEquals(name, target.getInjectionTargetName());
+ }
+ assertEquals(actual.size(), expected.size());
+ assertTrue(actual.containsAll(expected));
+ }
+}
+
More information about the jboss-cvs-commits
mailing list