Author: rmannibucau
Date: Sat Jul 21 22:01:10 2012
New Revision: 1364179

URL: http://svn.apache.org/viewvc?rev=1364179&view=rev
Log:
don't override definition if already processed

Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/PropertyPlaceHolderHelper.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1364179&r1=1364178&r2=1364179&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
 Sat Jul 21 22:01:10 2012
@@ -143,6 +143,7 @@ import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.Messages;
 import org.apache.openejb.util.OpenEJBErrorHandler;
 import org.apache.openejb.util.PropertiesHelper;
+import org.apache.openejb.util.PropertyPlaceHolderHelper;
 import org.apache.openejb.util.References;
 import org.apache.openejb.util.SafeToolkit;
 import org.apache.openejb.util.proxy.ProxyFactory;
@@ -1575,13 +1576,14 @@ public class Assembler extends Assembler
         serviceRecipe.setProperty("transactionManager", transactionManager);
         serviceRecipe.setProperty("ServiceId", serviceInfo.id);
         serviceRecipe.setProperty("properties", new UnsetPropertiesRecipe());
-        serviceRecipe.setProperty("Definition", 
PropertiesHelper.propertiesToString(serviceInfo.properties));
+        if (!serviceRecipe.getProperties().containsKey("Definition")) {
+            serviceRecipe.setProperty("Definition", 
PropertiesHelper.propertiesToString(PropertyPlaceHolderHelper.holds(serviceInfo.properties)));
+        }
 
         replaceResourceAdapterProperty(serviceRecipe);
 
         Object service = serviceRecipe.create();
 
-
         // Java Connector spec ResourceAdapters and ManagedConnectionFactories 
need special activation
         if (service instanceof ResourceAdapter) {
             ResourceAdapter resourceAdapter = (ResourceAdapter) service;

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java?rev=1364179&r1=1364178&r2=1364179&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
 Sat Jul 21 22:01:10 2012
@@ -46,9 +46,9 @@ public class DataSourceFactory {
 
         final DataSource ds;
 
-        if (DataSource.class.isAssignableFrom(impl) && 
!SystemInstance.get().getOptions().get("org.apache.openejb.resource.jdbc.hot.deploy",
 false)) {
+        final Properties properties = asProperties(definition);
 
-            final Properties properties = asProperties(definition);
+        if (createDataSourceFromClass(impl)) { // opposed to "by driver"
 
             final ObjectRecipe recipe = new ObjectRecipe(impl);
             recipe.allow(Option.CASE_INSENSITIVE_PROPERTIES);
@@ -68,12 +68,16 @@ public class DataSourceFactory {
                 }
             }
         } else {
-            ds = create(name, managed, impl.getName());
+            ds = create(name, managed, impl.getName(), properties);
         }
 
         return ds;
     }
 
+    private static boolean createDataSourceFromClass(final Class<?> impl) {
+        return DataSource.class.isAssignableFrom(impl) && 
!SystemInstance.get().getOptions().get("org.apache.openejb.resource.jdbc.hot.deploy",
 false);
+    }
+
     private static boolean useDbcp(final Properties properties) {
         return "true".equalsIgnoreCase(properties.getProperty(POOL_PROPERTY, 
"true"));
     }
@@ -88,7 +92,7 @@ public class DataSourceFactory {
         properties.remove("LoginTimeout");
     }
 
-    public static DataSource create(String name, boolean managed, String 
driver) {
+    public static DataSource create(String name, boolean managed, String 
driver, Properties properties) {
         org.apache.commons.dbcp.BasicDataSource ds;
         if (managed) {
             XAResourceWrapper xaResourceWrapper = 
SystemInstance.get().getComponent(XAResourceWrapper.class);
@@ -100,8 +104,10 @@ public class DataSourceFactory {
         } else {
             ds = new BasicDataSource(name);
         }
+
         // force the driver class to be set
         ds.setDriverClassName(driver);
+
         return ds;
     }
 

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/PropertyPlaceHolderHelper.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/PropertyPlaceHolderHelper.java?rev=1364179&r1=1364178&r2=1364179&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/PropertyPlaceHolderHelper.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/PropertyPlaceHolderHelper.java
 Sat Jul 21 22:01:10 2012
@@ -46,6 +46,8 @@ public final class PropertyPlaceHolderHe
             final Object rawValue = entry.getValue();
             if (rawValue instanceof String) {
                 updated.put(entry.getKey(), value(rawValue.toString()));
+            } else {
+                updated.put(entry.getKey(), rawValue);
             }
         }
         return updated;


Reply via email to