Author: rmannibucau
Date: Sun Jun 15 17:40:32 2014
New Revision: 1602743
URL: http://svn.apache.org/r1602743
Log:
TOMEE-1250 allowing to use @xxx to reference a resource as $ allows to
reference another service in Service definition
Added:
tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/util/
tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/util/ServiceInfosTest.java
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/util/ServiceInfos.java
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/util/ServiceInfos.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/util/ServiceInfos.java?rev=1602743&r1=1602742&r2=1602743&view=diff
==
---
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/util/ServiceInfos.java
(original)
+++
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/util/ServiceInfos.java
Sun Jun 15 17:40:32 2014
@@ -17,16 +17,22 @@
package org.apache.openejb.assembler.classic.util;
+import org.apache.openejb.JndiConstants;
import org.apache.openejb.OpenEJBException;
import org.apache.openejb.OpenEJBRuntimeException;
import org.apache.openejb.assembler.classic.Assembler;
import org.apache.openejb.assembler.classic.OpenEjbConfiguration;
import org.apache.openejb.assembler.classic.ServiceInfo;
import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.spi.ContainerSystem;
+import org.apache.openejb.util.LogCategory;
+import org.apache.openejb.util.Logger;
import org.apache.xbean.recipe.ObjectRecipe;
import org.apache.xbean.recipe.Option;
import org.apache.xbean.recipe.UnsetPropertiesRecipe;
+import javax.naming.Context;
+import javax.naming.NamingException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -140,11 +146,29 @@ public final class ServiceInfos {
serviceRecipe.setProperty("prop", info.properties);
} else {
for (final Map.Entry entry :
info.properties.entrySet()) { // manage links
+final String key = entry.getKey().toString();
final Object value = entry.getValue();
-if (value instanceof String &&
value.toString().startsWith("$")) {
-serviceRecipe.setProperty(entry.getKey().toString(),
resolve(services, value.toString().substring(1)));
+if (value instanceof String) {
+final String valueStr = value.toString();
+if (valueStr.startsWith("$")){
+serviceRecipe.setProperty(key, resolve(services,
valueStr.substring(1)));
+} else if (valueStr.startsWith("@")){
+final Context jndiContext =
SystemInstance.get().getComponent(ContainerSystem.class).getJNDIContext();
+try {
+serviceRecipe.setProperty(key,
jndiContext.lookup(JndiConstants.OPENEJB_RESOURCE_JNDI_PREFIX +
valueStr.substring(1)));
+} catch (final NamingException e) {
+try {
+serviceRecipe.setProperty(key,
jndiContext.lookup(valueStr.substring(1)));
+} catch (final NamingException e1) {
+Logger.getInstance(LogCategory.OPENEJB,
ServiceInfos.class).warning("Value " + valueStr + " starting with @ but doesn't
point to an existing resource, using raw value");
+serviceRecipe.setProperty(key, value);
+}
+}
+} else {
+serviceRecipe.setProperty(key, value);
+}
} else {
-serviceRecipe.setProperty(entry.getKey().toString(),
entry.getValue());
+serviceRecipe.setProperty(key, entry.getValue());
}
}
}
Added:
tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/util/ServiceInfosTest.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/util/ServiceInfosTest.java?rev=1602743&view=auto
==
---
tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/util/ServiceInfosTest.java
(added)
+++
tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/util/ServiceInfosTest.java
Sun Jun 15 17:40:32 2014
@@ -0,0 +1,67 @@
+/*
+ * License