Author: xuhaihong
Date: Tue Jun 28 02:27:45 2011
New Revision: 1140403
URL: http://svn.apache.org/viewvc?rev=1140403&view=rev
Log:
OPENEJB-1615 Support use the @Resource(name="java:global/env/abc") for
environment entry injection
a. Support the use in DD
b. Avoid create an extra JNDI entry in the last change
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
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/JndiEncInfoBuilder.java
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java?rev=1140403&r1=1140402&r2=1140403&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
Tue Jun 28 02:27:45 2011
@@ -206,6 +206,11 @@ public class JndiEncBuilder {
continue;
}
+ //It is possible that the value and location are both null, as it
is allowed to use @Resource(name="java:global/env/abc") with no value is
specified in DD
+ if(entry.value == null) {
+ continue;
+ }
+
try {
Class type = Classes.deprimitivize(getType(entry.type, entry));
Object obj = null;
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=1140403&r1=1140402&r2=1140403&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
Tue Jun 28 02:27:45 2011
@@ -3358,9 +3358,7 @@ public class AnnotationDeployer implemen
reference = envEntry;
} else if(isShareableJNDINamespace(refName)){
EnvEntry envEntry = new EnvEntry();
- envEntry.setName(member.getDeclaringClass().getName()
+ "/" + member.getName());
- envEntry.setLookupName(refName);
-
+ envEntry.setName(refName);
consumer.getEnvEntry().add(envEntry);
reference = envEntry;
} else {
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java?rev=1140403&r1=1140402&r2=1140403&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java
Tue Jun 28 02:27:45 2011
@@ -16,7 +16,6 @@
*/
package org.apache.openejb.config;
-import static java.lang.String.format;
import static org.apache.openejb.assembler.classic.EjbResolver.Scope.EJBJAR;
import static org.apache.openejb.assembler.classic.EjbResolver.Scope.EAR;
import org.apache.openejb.OpenEJBException;
@@ -325,10 +324,11 @@ public class JndiEncInfoBuilder {
private void buildEnvEntryInfos(JndiConsumer item, JndiEncInfo
moduleJndiEnc, JndiEncInfo compJndiEnc) {
for (EnvEntry env : item.getEnvEntry()) {
// ignore env entries without a value and lookup name
- if (env.getEnvEntryValue() == null && env.getLookupName() == null)
{
+ //If the the reference name of the environment entry is belong to
those shareable JNDI name space, it somewhat is a valid one
+ if (env.getEnvEntryValue() == null && env.getLookupName() == null
&& !isShareableJNDINamespace(env.getEnvEntryName())) {
continue;
}
-
+
EnvEntryInfo info = new EnvEntryInfo();
info.referenceName = env.getEnvEntryName();
@@ -340,6 +340,10 @@ public class JndiEncInfoBuilder {
}
}
+ private boolean isShareableJNDINamespace(String jndiName) {
+ return jndiName.startsWith("java:global/") ||
jndiName.startsWith("java:app/") || jndiName.startsWith("java:module/");
+ }
+
public ReferenceLocationInfo buildLocationInfo(JndiReference reference) {
String lookupName = reference.getLookupName();
if (lookupName != null) {