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();
 


Reply via email to