You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2011/09/14 22:36:14 UTC

svn commit: r1170839 - in /openejb/trunk/openejb3/container: openejb-core/src/main/java/org/apache/openejb/config/ openejb-jee/src/main/java/org/apache/openejb/jee/

Author: dblevins
Date: Wed Sep 14 20:36:13 2011
New Revision: 1170839

URL: http://svn.apache.org/viewvc?rev=1170839&view=rev
Log:
OPENEJB-1664: Merge EJB and WebApp JNDI namespaces for EJBs in .WARs compliance
OPENEJB-1663: Implement equals/hashcode on InjectionTarget and convert internal collections to java.util.Set

Added:
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/MergeWebappJndiContext.java
Modified:
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/Module.java
    openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EjbLocalRef.java
    openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EjbRef.java
    openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EnvEntry.java
    openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Injectable.java
    openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/InjectionTarget.java
    openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/MessageDestinationRef.java
    openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/PersistenceContextRef.java
    openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/PersistenceUnitRef.java
    openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ResourceEnvRef.java
    openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ResourceRef.java
    openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ServiceRef.java

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?rev=1170839&r1=1170838&r2=1170839&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java Wed Sep 14 20:36:13 2011
@@ -1832,33 +1832,17 @@ public class AnnotationDeployer implemen
             IAnnotationFinder finder = webModule.getFinder();
 
             if (finder != null) {
-                String[] webComponentAnnotations = {
-                        "javax.faces.bean.ManagedBean",
-                        "javax.servlet.annotation.WebServlet",
-                        "javax.servlet.annotation.WebServletContextListener",
-                        "javax.servlet.annotation.WebFilter",
-                };
-
-                List<Class<? extends Annotation>> annotations = new ArrayList<Class<? extends Annotation>>();
-                for (String componentAnnotationName : webComponentAnnotations) {
+                // Add all the classes of the previous finder
+                // TODO this part can be optimized
+                final List<String> classNames = finder.getAnnotatedClassNames();
+                for (String className : classNames) {
                     try {
-                        Class<?> clazz = classLoader.loadClass(componentAnnotationName);
-                        annotations.add(clazz.asSubclass(Annotation.class));
+                        Class clazz = classLoader.loadClass(className);
+                        classes.add(clazz);
                     } catch (ClassNotFoundException e) {
-                        logger.debug("Support not enabled: " + componentAnnotationName);
+                        logger.debug("Unable to load class for scanning: " + className);
                     }
                 }
-
-
-                for (Class<? extends Annotation> annotation : annotations) {
-                    logger.debug("Scanning for @" + annotation.getName());
-                    List<Class<?>> list = finder.findAnnotatedClasses(annotation);
-                    if (logger.isDebugEnabled()) for (Class clazz : list) {
-                        logger.debug("Found " + clazz.getName());
-                    }
-
-                    classes.addAll(list);
-                }
             }
 
             AnnotationFinder annotationFinder = createFinder(classes.toArray(new Class<?>[classes.size()]));
@@ -3151,7 +3135,7 @@ public class AnnotationDeployer implemen
             return list.size() == 0;
         }
 
-        public void buildAnnotatedRefs(JndiConsumer consumer, AnnotationFinder annotationFinder, ClassLoader classLoader) throws OpenEJBException {
+        public void buildAnnotatedRefs(JndiConsumer consumer, IAnnotationFinder annotationFinder, ClassLoader classLoader) throws OpenEJBException {
             //
             // @EJB
             //
@@ -3676,10 +3660,14 @@ public class AnnotationDeployer implemen
                         consumer.getEnvEntry().add(envEntry);
                         reference = envEntry;
                     } else {
-                        /*
-                         * Can't add env-entry since @Resource.lookup is not set and it is NOT in a shareable JNDI name space
-                         */
-                        return;
+                        EnvEntry envEntry = new EnvEntry();
+                        envEntry.setName(refName);
+                        consumer.getEnvEntry().add(envEntry);
+                        reference = envEntry;
+//                        /*
+//                         * Can't add env-entry since @Resource.lookup is not set and it is NOT in a shareable JNDI name space
+//                         */
+//                        return;
                     }
                 } else {
                     /*

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java?rev=1170839&r1=1170838&r2=1170839&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java Wed Sep 14 20:36:13 2011
@@ -336,7 +336,6 @@ class AppInfoBuilder {
             }
 
             appInfo.webApps.add(webAppInfo);
-            appInfo.webApps.add(webAppInfo);
         }
     }
 

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java?rev=1170839&r1=1170838&r2=1170839&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java Wed Sep 14 20:36:13 2011
@@ -1014,7 +1014,7 @@ public class AutoConfig implements Dynam
             return ref.getType();
         }
         if (classLoader != null) {
-            List<InjectionTarget> injections = ref.getInjectionTarget();
+            Set<InjectionTarget> injections = ref.getInjectionTarget();
             for (InjectionTarget injection : injections) {
                 try {
                     Class target = classLoader.loadClass(injection.getInjectionTargetClass().trim());

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java?rev=1170839&r1=1170838&r2=1170839&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java Wed Sep 14 20:36:13 2011
@@ -198,10 +198,9 @@ public class ConfigurationFactory implem
         chain.add(new ApplyOpenejbJar());
         chain.add(new MappedNameBuilder());
         chain.add(new ActivationConfigPropertyOverride());
-
-        // TODO: How do we want this plugged in?
         chain.add(new OutputGeneratedDescriptors());
 
+        chain.add(new MergeWebappJndiContext());
         this.deployer = chain;
     }
 

Added: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/MergeWebappJndiContext.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/MergeWebappJndiContext.java?rev=1170839&view=auto
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/MergeWebappJndiContext.java (added)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/MergeWebappJndiContext.java Wed Sep 14 20:36:13 2011
@@ -0,0 +1,139 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.openejb.config;
+
+import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.EnterpriseBean;
+import org.apache.openejb.jee.EnvEntry;
+import org.apache.openejb.jee.JndiConsumer;
+import org.apache.openejb.jee.JndiReference;
+import org.apache.openejb.jee.ResourceEnvRef;
+
+import javax.ejb.EJBContext;
+import javax.ejb.MessageDrivenContext;
+import javax.ejb.SessionContext;
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class MergeWebappJndiContext implements DynamicDeployer {
+
+    @Override
+    public AppModule deploy(AppModule appModule) throws OpenEJBException {
+
+        for (WebModule webModule : appModule.getWebModules()) {
+            if (webModule.getFinder() == null) continue;
+
+            for (EjbModule ejbModule : appModule.getEjbModules()) {
+                // If they are the same module, they'll have the same finder
+                if (ejbModule.getFinder() != webModule.getFinder()) continue;
+
+                merge(ejbModule, webModule);
+            }
+        }
+
+        return appModule;
+    }
+
+    private void merge(EjbModule ejbModule, WebModule webModule) {
+        final JndiConsumer webApp = webModule.getWebApp();
+
+        removePrivateReferences(webApp);
+
+        final EjbJar ejbJar = ejbModule.getEjbJar();
+
+        for (EnterpriseBean bean : ejbJar.getEnterpriseBeans()) {
+            merge(bean.getEnvEntryMap(), webApp.getEnvEntryMap());
+            merge(bean.getEjbRefMap(), webApp.getEjbRefMap());
+            merge(bean.getEjbLocalRefMap(), webApp.getEjbLocalRefMap());
+            merge(bean.getServiceRefMap(), webApp.getServiceRefMap());
+            merge(bean.getResourceRefMap(), webApp.getResourceRefMap());
+            merge(bean.getResourceEnvRefMap(), webApp.getResourceEnvRefMap());
+            merge(bean.getMessageDestinationRefMap(), webApp.getMessageDestinationRefMap());
+            merge(bean.getPersistenceContextRefMap(), webApp.getPersistenceContextRefMap());
+            merge(bean.getPersistenceUnitRefMap(), webApp.getPersistenceUnitRefMap());
+        }
+
+        removePrivateReferences(webApp);
+    }
+
+    /**
+     * Bidirectional a-b merge
+     *
+     * @param a
+     * @param b
+     * @param <R>
+     */
+    private <R extends JndiReference> void merge(Map<String, R> a, Map<String, R> b) {
+        copy(a, b);
+        copy(b, a);
+    }
+
+    private <R extends JndiReference> void copy(Map<String, R> from, Map<String, R> to) {
+        for (R a : from.values()) {
+            final R b = to.get(a.getKey());
+
+            // New entry
+            if (b == null) {
+                to.put(a.getKey(), a);
+                continue;
+            }
+
+            // Update existing entry
+
+            // merge injection points
+            b.getInjectionTarget().addAll(a.getInjectionTarget());
+
+            // merge env-entry values
+            if (b instanceof EnvEntry && a instanceof EnvEntry) {
+                final EnvEntry eb = (EnvEntry) b;
+                final EnvEntry ea = (EnvEntry) a;
+
+                if (eb.getEnvEntryValue() == null) {
+                    eb.setEnvEntryValue(ea.getEnvEntryValue());
+                }
+            }
+        }
+    }
+
+    private void removePrivateReferences(JndiConsumer webApp) {
+        Class[] types = {EJBContext.class, SessionContext.class, MessageDrivenContext.class};
+        final Iterator<ResourceEnvRef> refs = webApp.getResourceEnvRef().iterator();
+        while (refs.hasNext()) {
+            final ResourceEnvRef ref = refs.next();
+            if (isInvalid(types, ref)) refs.remove();
+        }
+    }
+
+    private boolean isInvalid(Class[] types, ResourceEnvRef ref) {
+        boolean invalid = false;
+        for (Class type : types) {
+            if (type.getName().equals(ref.getType())) {
+                invalid= true;
+                break;
+            }
+        }
+        return invalid;
+    }
+
+    private void yank(ResourceEnvRef ref, Class<EJBContext> ejbContextClass, Class<SessionContext> sessionContextClass, Class<MessageDrivenContext> messageDrivenContextClass) {
+    }
+
+}

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/Module.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/Module.java?rev=1170839&r1=1170838&r2=1170839&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/Module.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/Module.java Wed Sep 14 20:36:13 2011
@@ -79,4 +79,8 @@ public class Module {
     public void setAppModule(AppModule appModule) {
         this.appModule = appModule;
     }
+
+    public AppModule getAppModule() {
+        return appModule;
+    }
 }

Modified: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EjbLocalRef.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EjbLocalRef.java?rev=1170839&r1=1170838&r2=1170839&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EjbLocalRef.java (original)
+++ openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EjbLocalRef.java Wed Sep 14 20:36:13 2011
@@ -28,7 +28,9 @@ import javax.xml.bind.annotation.XmlType
 import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 /**
  * javaee6.xsd
@@ -89,7 +91,7 @@ public class EjbLocalRef implements EjbR
     @XmlElement(name = "lookup-name")
     protected String lookupName;
     @XmlElement(name = "injection-target", required = true)
-    protected List<InjectionTarget> injectionTarget;
+    protected Set<InjectionTarget> injectionTarget;
     @XmlAttribute
     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
     @XmlID
@@ -253,9 +255,9 @@ public class EjbLocalRef implements EjbR
         this.lookupName = lookupName;
     }
 
-    public List<InjectionTarget> getInjectionTarget() {
+    public Set<InjectionTarget> getInjectionTarget() {
         if (injectionTarget == null) {
-            injectionTarget = new ArrayList<InjectionTarget>();
+            injectionTarget = new HashSet<InjectionTarget>();
         }
         return this.injectionTarget;
     }

Modified: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EjbRef.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EjbRef.java?rev=1170839&r1=1170838&r2=1170839&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EjbRef.java (original)
+++ openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EjbRef.java Wed Sep 14 20:36:13 2011
@@ -28,7 +28,9 @@ import javax.xml.bind.annotation.XmlTran
 import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 
 /**
@@ -89,7 +91,7 @@ public class EjbRef implements EjbRefere
     @XmlElement(name = "lookup-name")
     protected String lookupName;
     @XmlElement(name = "injection-target", required = true)
-    protected List<InjectionTarget> injectionTarget;
+    protected Set<InjectionTarget> injectionTarget;
     @XmlAttribute
     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
     @XmlID
@@ -200,9 +202,9 @@ public class EjbRef implements EjbRefere
         this.lookupName = lookupName;
     }
 
-    public List<InjectionTarget> getInjectionTarget() {
+    public Set<InjectionTarget> getInjectionTarget() {
         if (injectionTarget == null) {
-            injectionTarget = new ArrayList<InjectionTarget>();
+            injectionTarget = new HashSet<InjectionTarget>();
         }
         return this.injectionTarget;
     }

Modified: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EnvEntry.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EnvEntry.java?rev=1170839&r1=1170838&r2=1170839&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EnvEntry.java (original)
+++ openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EnvEntry.java Wed Sep 14 20:36:13 2011
@@ -28,7 +28,9 @@ import javax.xml.bind.annotation.XmlTran
 import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 /**
  * javaee6.xsd
@@ -91,7 +93,7 @@ public class EnvEntry implements JndiRef
     @XmlElement(name = "lookup-name")
     protected String lookupName;
     @XmlElement(name = "injection-target", required = true)
-    protected List<InjectionTarget> injectionTarget;
+    protected Set<InjectionTarget> injectionTarget;
     @XmlAttribute
     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
     @XmlID
@@ -190,9 +192,9 @@ public class EnvEntry implements JndiRef
         this.lookupName = lookupName;
     }
 
-    public List<InjectionTarget> getInjectionTarget() {
+    public Set<InjectionTarget> getInjectionTarget() {
         if (injectionTarget == null) {
-            injectionTarget = new ArrayList<InjectionTarget>();
+            injectionTarget = new HashSet<InjectionTarget>();
         }
         return this.injectionTarget;
     }

Modified: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Injectable.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Injectable.java?rev=1170839&r1=1170838&r2=1170839&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Injectable.java (original)
+++ openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Injectable.java Wed Sep 14 20:36:13 2011
@@ -17,11 +17,12 @@
 package org.apache.openejb.jee;
 
 import java.util.List;
+import java.util.Set;
 
 /**
  * @version $Rev$ $Date$
  */
 public interface Injectable {
-    public List<InjectionTarget> getInjectionTarget();
+    public Set<InjectionTarget> getInjectionTarget();
 
 }

Modified: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/InjectionTarget.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/InjectionTarget.java?rev=1170839&r1=1170838&r2=1170839&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/InjectionTarget.java (original)
+++ openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/InjectionTarget.java Wed Sep 14 20:36:13 2011
@@ -85,4 +85,23 @@ public class InjectionTarget {
         this.injectionTargetName = value;
     }
 
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        InjectionTarget that = (InjectionTarget) o;
+
+        if (injectionTargetClass != null ? !injectionTargetClass.equals(that.injectionTargetClass) : that.injectionTargetClass != null) return false;
+        if (injectionTargetName != null ? !injectionTargetName.equals(that.injectionTargetName) : that.injectionTargetName != null) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = injectionTargetClass != null ? injectionTargetClass.hashCode() : 0;
+        result = 31 * result + (injectionTargetName != null ? injectionTargetName.hashCode() : 0);
+        return result;
+    }
 }

Modified: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/MessageDestinationRef.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/MessageDestinationRef.java?rev=1170839&r1=1170838&r2=1170839&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/MessageDestinationRef.java (original)
+++ openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/MessageDestinationRef.java Wed Sep 14 20:36:13 2011
@@ -28,7 +28,9 @@ import javax.xml.bind.annotation.XmlTran
 import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 
 /**
@@ -86,7 +88,7 @@ public class MessageDestinationRef imple
     @XmlElement(name = "lookup-name")
     protected String lookupName;
     @XmlElement(name = "injection-target", required = true)
-    protected List<InjectionTarget> injectionTarget;
+    protected Set<InjectionTarget> injectionTarget;
     @XmlAttribute
     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
     @XmlID
@@ -194,9 +196,9 @@ public class MessageDestinationRef imple
         this.lookupName = lookupName;
     }
 
-    public List<InjectionTarget> getInjectionTarget() {
+    public Set<InjectionTarget> getInjectionTarget() {
         if (injectionTarget == null) {
-            injectionTarget = new ArrayList<InjectionTarget>();
+            injectionTarget = new HashSet<InjectionTarget>();
         }
         return this.injectionTarget;
     }

Modified: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/PersistenceContextRef.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/PersistenceContextRef.java?rev=1170839&r1=1170838&r2=1170839&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/PersistenceContextRef.java (original)
+++ openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/PersistenceContextRef.java Wed Sep 14 20:36:13 2011
@@ -28,7 +28,9 @@ import javax.xml.bind.annotation.XmlType
 import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 
 /**
@@ -88,7 +90,7 @@ public class PersistenceContextRef imple
     @XmlElement(name = "lookup-name")
     protected String lookupName;
     @XmlElement(name = "injection-target", required = true)
-    protected List<InjectionTarget> injectionTarget;
+    protected Set<InjectionTarget> injectionTarget;
     @XmlAttribute
     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
     @XmlID
@@ -190,9 +192,9 @@ public class PersistenceContextRef imple
         this.lookupName = lookupName;
     }
 
-    public List<InjectionTarget> getInjectionTarget() {
+    public Set<InjectionTarget> getInjectionTarget() {
         if (injectionTarget == null) {
-            injectionTarget = new ArrayList<InjectionTarget>();
+            injectionTarget = new HashSet<InjectionTarget>();
         }
         return this.injectionTarget;
     }

Modified: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/PersistenceUnitRef.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/PersistenceUnitRef.java?rev=1170839&r1=1170838&r2=1170839&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/PersistenceUnitRef.java (original)
+++ openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/PersistenceUnitRef.java Wed Sep 14 20:36:13 2011
@@ -28,7 +28,9 @@ import javax.xml.bind.annotation.XmlType
 import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 
 /**
@@ -80,7 +82,7 @@ public class PersistenceUnitRef implemen
     @XmlElement(name = "lookup-name")
     protected String lookupName;
     @XmlElement(name = "injection-target", required = true)
-    protected List<InjectionTarget> injectionTarget;
+    protected Set<InjectionTarget> injectionTarget;
     @XmlAttribute
     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
     @XmlID
@@ -161,9 +163,9 @@ public class PersistenceUnitRef implemen
         this.lookupName = lookupName;
     }
 
-    public List<InjectionTarget> getInjectionTarget() {
+    public Set<InjectionTarget> getInjectionTarget() {
         if (injectionTarget == null) {
-            injectionTarget = new ArrayList<InjectionTarget>();
+            injectionTarget = new HashSet<InjectionTarget>();
         }
         return this.injectionTarget;
     }

Modified: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ResourceEnvRef.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ResourceEnvRef.java?rev=1170839&r1=1170838&r2=1170839&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ResourceEnvRef.java (original)
+++ openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ResourceEnvRef.java Wed Sep 14 20:36:13 2011
@@ -28,7 +28,9 @@ import javax.xml.bind.annotation.XmlTran
 import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 
 /**
@@ -78,7 +80,7 @@ public class ResourceEnvRef implements J
     @XmlElement(name = "lookup-name")
     protected String lookupName;
     @XmlElement(name = "injection-target", required = true)
-    protected List<InjectionTarget> injectionTarget;
+    protected Set<InjectionTarget> injectionTarget;
     @XmlAttribute
     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
     @XmlID
@@ -165,9 +167,9 @@ public class ResourceEnvRef implements J
         this.lookupName = lookupName;
     }
 
-    public List<InjectionTarget> getInjectionTarget() {
+    public Set<InjectionTarget> getInjectionTarget() {
         if (injectionTarget == null) {
-            injectionTarget = new ArrayList<InjectionTarget>();
+            injectionTarget = new HashSet<InjectionTarget>();
         }
         return this.injectionTarget;
     }

Modified: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ResourceRef.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ResourceRef.java?rev=1170839&r1=1170838&r2=1170839&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ResourceRef.java (original)
+++ openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ResourceRef.java Wed Sep 14 20:36:13 2011
@@ -28,7 +28,9 @@ import javax.xml.bind.annotation.XmlTran
 import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 
 /**
@@ -86,7 +88,7 @@ public class ResourceRef implements Jndi
     @XmlElement(name = "lookup-name")
     protected String lookupName;
     @XmlElement(name = "injection-target", required = true)
-    protected List<InjectionTarget> injectionTarget;
+    protected Set<InjectionTarget> injectionTarget;
     @XmlAttribute
     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
     @XmlID
@@ -193,9 +195,9 @@ public class ResourceRef implements Jndi
         this.lookupName = lookupName;
     }
 
-    public List<InjectionTarget> getInjectionTarget() {
+    public Set<InjectionTarget> getInjectionTarget() {
         if (injectionTarget == null) {
-            injectionTarget = new ArrayList<InjectionTarget>();
+            injectionTarget = new HashSet<InjectionTarget>();
         }
         return this.injectionTarget;
     }

Modified: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ServiceRef.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ServiceRef.java?rev=1170839&r1=1170838&r2=1170839&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ServiceRef.java (original)
+++ openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ServiceRef.java Wed Sep 14 20:36:13 2011
@@ -30,8 +30,10 @@ import javax.xml.bind.annotation.adapter
 import javax.xml.namespace.QName;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 
 /**
@@ -117,7 +119,7 @@ public class ServiceRef implements JndiR
     @XmlElement(name = "lookup-name")
     protected String lookupName;
     @XmlElement(name = "injection-target", required = true)
-    protected List<InjectionTarget> injectionTarget;
+    protected Set<InjectionTarget> injectionTarget;
     @XmlAttribute
     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
     @XmlID
@@ -293,9 +295,9 @@ public class ServiceRef implements JndiR
         this.lookupName = lookupName;
     }
 
-    public List<InjectionTarget> getInjectionTarget() {
+    public Set<InjectionTarget> getInjectionTarget() {
         if (injectionTarget == null) {
-            injectionTarget = new ArrayList<InjectionTarget>();
+            injectionTarget = new HashSet<InjectionTarget>();
         }
         return this.injectionTarget;
     }