Author: rmannibucau
Date: Fri Mar 21 17:57:16 2014
New Revision: 1579996
URL: http://svn.apache.org/r1579996
Log:
TOMEE-1145 using provisioningutil to resolve classpath element of resources
even when using properties + fixing tests
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/PropertyPlaceHolderHelper.java
tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/config/ServiceClasspathTest.java
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1579996&r1=1579995&r2=1579996&view=diff
==============================================================================
---
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
(original)
+++
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
Fri Mar 21 17:57:16 2014
@@ -121,6 +121,7 @@ import org.apache.openejb.util.Reference
import org.apache.openejb.util.SafeToolkit;
import org.apache.openejb.util.SuperProperties;
import org.apache.openejb.util.URLs;
+import org.apache.openejb.util.classloader.URLClassLoaderFirst;
import org.apache.openejb.util.proxy.ProxyFactory;
import org.apache.openejb.util.proxy.ProxyManager;
import org.apache.webbeans.config.WebBeansContext;
@@ -181,7 +182,6 @@ import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.net.MalformedURLException;
import java.net.URL;
-import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -2146,8 +2146,7 @@ public class Assembler extends Assembler
for (int i = 0; i < serviceInfo.classpath.length; i++) {
urls[i] = serviceInfo.classpath[i].toURL();
}
- loader = new URLClassLoader(urls, loader);
- System.out.println("Creating DriverClassLoader " + loader);
+ loader = new URLClassLoaderFirst(urls, loader);
}
} catch (MalformedURLException e) {
throw new OpenEJBException("Unable to create a classloader for " +
serviceInfo.id, e);
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java?rev=1579996&r1=1579995&r2=1579996&view=diff
==============================================================================
---
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
(original)
+++
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
Fri Mar 21 17:57:16 2014
@@ -763,7 +763,7 @@ public class ConfigurationFactory implem
final String[] paths = cp.split(File.pathSeparator);
final List<URL> urls = new ArrayList<URL>();
for (final String path : paths) {
- urls.add(new File(path).toURI().normalize().toURL());
+ urls.add(new
File(PropertyPlaceHolderHelper.value(ProvisioningUtil.realLocation(path))).toURI().normalize().toURL());
}
deployments.setClasspath(new
URLClassLoaderFirst(urls.toArray(new URL[urls.size()]),
ParentClassLoaderFinder.Helper.get()));
}
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/PropertyPlaceHolderHelper.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/PropertyPlaceHolderHelper.java?rev=1579996&r1=1579995&r2=1579996&view=diff
==============================================================================
---
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/PropertyPlaceHolderHelper.java
(original)
+++
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/PropertyPlaceHolderHelper.java
Fri Mar 21 17:57:16 2014
@@ -28,18 +28,23 @@ public final class PropertyPlaceHolderHe
private static final String SUFFIX = "}";
private static final Properties CACHE = new Properties();
- public static final StrSubstitutor SUBSTITUTOR = new StrSubstitutor(new
PropertiesLookup());
+ private static final PropertiesLookup RESOLVER = new PropertiesLookup();
+ public static final StrSubstitutor SUBSTITUTOR = new
StrSubstitutor(RESOLVER);
private PropertyPlaceHolderHelper() {
// no-op
}
+ public static void reset() {
+ CACHE.clear();
+ RESOLVER.reload();
+ }
+
public static String simpleValue(final String raw) {
if (raw == null || !raw.contains(PREFIX) || !raw.contains(SUFFIX)) {
return raw;
}
-
String value = SUBSTITUTOR.replace(raw);
if (!value.equals(raw) && value.startsWith("java:")) {
value = value.substring(5);
@@ -86,11 +91,11 @@ public final class PropertyPlaceHolderHe
}
private static class PropertiesLookup extends StrLookup<Object> {
- private static final Properties PROPERTIES =
SystemInstance.get().getProperties();
+ private static Properties PROPERTIES =
SystemInstance.get().getProperties();
private static final Map<String, String> ENV = System.getenv();
@Override
- public String lookup(final String key) {
+ public synchronized String lookup(final String key) {
String value = PROPERTIES.getProperty(key);
if (value != null) {
return value;
@@ -103,5 +108,9 @@ public final class PropertyPlaceHolderHe
return key;
}
+
+ public synchronized void reload() {
+ PROPERTIES = SystemInstance.get().getProperties();
+ }
}
}
Modified:
tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/config/ServiceClasspathTest.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/config/ServiceClasspathTest.java?rev=1579996&r1=1579995&r2=1579996&view=diff
==============================================================================
---
tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/config/ServiceClasspathTest.java
(original)
+++
tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/config/ServiceClasspathTest.java
Fri Mar 21 17:57:16 2014
@@ -27,10 +27,13 @@ import org.apache.openejb.loader.Files;
import org.apache.openejb.loader.IO;
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.util.Join;
+import org.apache.openejb.util.PropertyPlaceHolderHelper;
import org.apache.xbean.asm4.ClassWriter;
import org.apache.xbean.asm4.MethodVisitor;
import org.apache.xbean.asm4.Opcodes;
+import org.junit.After;
import org.junit.Assert;
+import org.junit.Before;
import org.junit.Test;
import javax.naming.InitialContext;
@@ -43,7 +46,6 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.net.URL;
-import java.net.URLClassLoader;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@@ -60,6 +62,12 @@ import static org.apache.xbean.asm4.Opco
* @version $Rev$ $Date$
*/
public class ServiceClasspathTest extends Assert {
+ @After
+ @Before
+ public void reset() {
+ SystemInstance.reset();
+ PropertyPlaceHolderHelper.reset();
+ }
@Test
@@ -148,7 +156,9 @@ public class ServiceClasspathTest extend
final PrintStream out = new PrintStream(IO.write(xml));
out.println("<openejb>\n" +
- " <Resource id=\"Orange\" type=\"org.superbiz.foo.Orange\"
class-name=\"org.superbiz.foo.Orange\" classpath=\"${openejb.home}/" +
jar.getName() + "\">\n" +
+ " <Resource id=\"Orange\" type=\"org.superbiz.foo.Orange\"" +
+ " class-name=\"org.superbiz.foo.Orange\"" +
+ " classpath=\"${openejb.home}/" + jar.getName() +
"\">\n" +
" red = FF\n" +
" green = 99\n" +
" blue = 00\n" +
@@ -162,6 +172,7 @@ public class ServiceClasspathTest extend
final Properties properties = new Properties();
properties.setProperty("openejb.home",
jar.getParentFile().getAbsolutePath());
SystemInstance.init(properties);
+ PropertyPlaceHolderHelper.reset();
final ConfigurationFactory config = new ConfigurationFactory();
final Assembler assembler = new Assembler();