Author: dblevins
Date: Mon Sep 24 19:12:12 2007
New Revision: 579035
URL: http://svn.apache.org/viewvc?rev=579035&view=rev
Log:
Fixed issue with not being able to specify xml overrides for @EJB annotation
usage
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.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=579035&r1=579034&r2=579035&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
Mon Sep 24 19:12:12 2007
@@ -1484,6 +1484,28 @@
}
ejbRef.setMappedName(mappedName);
+
+ Map<String, EjbRef> remoteRefs =
mapReferences(consumer.getEjbRef());
+ if (remoteRefs.containsKey(ejbRef.getName())){
+ EjbRef ref = remoteRefs.get(ejbRef.getName());
+ if (ref.getRemote() == null) ref.setRemote(ejbRef.getRemote());
+ if (ref.getHome() == null) ref.setHome(ejbRef.getHome());
+ if (ref.getMappedName() == null)
ref.setMappedName(ejbRef.getMappedName());
+ ref.getInjectionTarget().addAll(ejbRef.getInjectionTarget());
+ return;
+ }
+
+ Map<String, EjbLocalRef> localRefs =
mapReferences(consumer.getEjbLocalRef());
+ if (localRefs.containsKey(ejbRef.getName())){
+ EjbLocalRef ejbLocalRef = new EjbLocalRef(ejbRef);
+ EjbLocalRef ref = localRefs.get(ejbLocalRef.getName());
+ if (ref.getLocal() == null)
ref.setLocal(ejbLocalRef.getLocal());
+ if (ref.getLocalHome() == null)
ref.setLocalHome(ejbLocalRef.getLocalHome());
+ if (ref.getMappedName() == null)
ref.setMappedName(ejbLocalRef.getMappedName());
+
ref.getInjectionTarget().addAll(ejbLocalRef.getInjectionTarget());
+ return;
+ }
+
switch (ejbRef.getRefType()) {
case UNKNOWN:
case REMOTE:
@@ -1493,6 +1515,14 @@
consumer.getEjbLocalRef().add(new EjbLocalRef(ejbRef));
break;
}
+ }
+
+ private static <T extends JndiReference> Map<String, T>
mapReferences(List<T> refsList) {
+ Map<String, T> refs = new HashMap<String, T>(refsList.size());
+ for (T ref : refsList) {
+ refs.put(ref.getName(), ref);
+ }
+ return refs;
}
private List<Class<?>> copy(List<Class<?>> classes) {