Author: rmannibucau
Date: Wed Aug  1 13:50:17 2012
New Revision: 1367995

URL: http://svn.apache.org/viewvc?rev=1367995&view=rev
Log:
keeping unsed values only for relevant data

Modified:
    
openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    
openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
    
openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/DataSourceCreator.java
    
openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/DefaultDataSourceCreator.java
    
openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/PoolDataSourceCreator.java

Modified: 
openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: 
http://svn.apache.org/viewvc/openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1367995&r1=1367994&r2=1367995&view=diff
==============================================================================
--- 
openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
 (original)
+++ 
openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
 Wed Aug  1 13:50:17 2012
@@ -132,7 +132,6 @@ import org.apache.openejb.persistence.Jt
 import org.apache.openejb.persistence.PersistenceClassLoaderHandler;
 import org.apache.openejb.resource.GeronimoConnectionManagerFactory;
 import org.apache.openejb.resource.jdbc.DataSourceFactory;
-import org.apache.openejb.resource.jdbc.pool.DataSourceCreator;
 import org.apache.openejb.spi.ApplicationServer;
 import org.apache.openejb.spi.ContainerSystem;
 import org.apache.openejb.spi.SecurityService;
@@ -1678,19 +1677,19 @@ public class Assembler extends Assembler
 
             // service becomes a ConnectorReference which merges connection 
manager and mcf
             service = new ConnectorReference(connectionManager, 
managedConnectionFactory);
-        } else {
-            if (service instanceof DataSource) {
-                ClassLoader classLoader = 
Thread.currentThread().getContextClassLoader();
-                if (classLoader == null) {
-                    classLoader = getClass().getClassLoader();
-                }
+        } else if (service instanceof DataSource) {
+            ClassLoader classLoader = 
Thread.currentThread().getContextClassLoader();
+            if (classLoader == null) {
+                classLoader = getClass().getClassLoader();
+            }
 
-                final ImportSql importer = new ImportSql(classLoader, 
serviceInfo.id, (DataSource) service);
-                if (importer.hasSomethingToImport()) {
-                    importer.doImport();
-                }
+            final ImportSql importer = new ImportSql(classLoader, 
serviceInfo.id, (DataSource) service);
+            if (importer.hasSomethingToImport()) {
+                importer.doImport();
             }
 
+            logUnusedProperties(DataSourceFactory.forgetRecipe(service, 
serviceRecipe), serviceInfo);
+        } else {
             logUnusedProperties(serviceRecipe, serviceInfo);
         }
 

Modified: 
openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
URL: 
http://svn.apache.org/viewvc/openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java?rev=1367995&r1=1367994&r2=1367995&view=diff
==============================================================================
--- 
openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
 (original)
+++ 
openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
 Wed Aug  1 13:50:17 2012
@@ -51,6 +51,12 @@ public class DataSourceFactory {
 
     public static DataSource create(final String name, final boolean managed, 
final Class impl, final String definition) throws IllegalAccessException, 
InstantiationException, IOException {
         final Properties properties = asProperties(definition);
+
+        // these can be added and are managed by OpenEJB and not the 
DataSource itself
+        properties.remove("Definition");
+        properties.remove("JtaManaged");
+        properties.remove("ServiceId");
+
         final DataSourceCreator creator = 
creator(properties.remove(DATA_SOURCE_CREATOR_PROP));
 
 
@@ -133,6 +139,19 @@ public class DataSourceFactory {
         return object instanceof DataSource && 
creatorByDataSource.containsKey(object);
     }
 
+    // TODO: should we get a get and a clear method instead of a single one?
+    public static ObjectRecipe forgetRecipe(final Object object, final 
ObjectRecipe defaultValue) {
+        final DataSourceCreator creator = creatorByDataSource.get(object);
+        ObjectRecipe recipe = null;
+        if (creator != null) {
+            recipe = creator.clearRecipe(object);
+        }
+        if (recipe == null) {
+            return defaultValue;
+        }
+        return recipe;
+    }
+
     public static void destroy(final Object o) throws Throwable {
         creatorByDataSource.remove(o).destroy(o);
     }

Modified: 
openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/DataSourceCreator.java
URL: 
http://svn.apache.org/viewvc/openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/DataSourceCreator.java?rev=1367995&r1=1367994&r2=1367995&view=diff
==============================================================================
--- 
openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/DataSourceCreator.java
 (original)
+++ 
openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/DataSourceCreator.java
 Wed Aug  1 13:50:17 2012
@@ -1,6 +1,7 @@
 package org.apache.openejb.resource.jdbc.pool;
 
 import org.apache.openejb.resource.XAResourceWrapper;
+import org.apache.xbean.recipe.ObjectRecipe;
 
 import javax.sql.DataSource;
 import java.util.Properties;
@@ -19,4 +20,5 @@ public interface DataSourceCreator {
     DataSource pool(String name, String driver, Properties properties);
 
     void destroy(Object object) throws Throwable;
+    ObjectRecipe clearRecipe(Object object);
 }

Modified: 
openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/DefaultDataSourceCreator.java
URL: 
http://svn.apache.org/viewvc/openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/DefaultDataSourceCreator.java?rev=1367995&r1=1367994&r2=1367995&view=diff
==============================================================================
--- 
openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/DefaultDataSourceCreator.java
 (original)
+++ 
openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/DefaultDataSourceCreator.java
 Wed Aug  1 13:50:17 2012
@@ -6,6 +6,7 @@ import org.apache.openejb.resource.jdbc.
 import org.apache.openejb.resource.jdbc.dbcp.DbcpDataSource;
 import org.apache.openejb.resource.jdbc.dbcp.DbcpManagedDataSource;
 import org.apache.openejb.resource.jdbc.dbcp.ManagedDataSourceWithRecovery;
+import org.apache.xbean.recipe.ObjectRecipe;
 
 import javax.sql.DataSource;
 import java.util.Properties;
@@ -51,4 +52,9 @@ public class DefaultDataSourceCreator im
     public void destroy(final Object object) throws Throwable {
         ((org.apache.commons.dbcp.BasicDataSource) object).close();
     }
+
+    @Override
+    public ObjectRecipe clearRecipe(final Object object) {
+        return null; // no recipe here
+    }
 }

Modified: 
openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/PoolDataSourceCreator.java
URL: 
http://svn.apache.org/viewvc/openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/PoolDataSourceCreator.java?rev=1367995&r1=1367994&r2=1367995&view=diff
==============================================================================
--- 
openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/PoolDataSourceCreator.java
 (original)
+++ 
openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/PoolDataSourceCreator.java
 Wed Aug  1 13:50:17 2012
@@ -12,9 +12,13 @@ import org.apache.xbean.recipe.Option;
 import javax.sql.DataSource;
 import javax.sql.XADataSource;
 import javax.transaction.TransactionManager;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Properties;
 
 public abstract class PoolDataSourceCreator implements DataSourceCreator {
+    private final Map<Object, ObjectRecipe> recipes = new HashMap<Object, 
ObjectRecipe>();
+
     @Override
     public DataSource managed(final String name, final DataSource ds) {
         final TransactionManager transactionManager = 
OpenEJB.getTransactionManager();
@@ -59,18 +63,31 @@ public abstract class PoolDataSourceCrea
         final ObjectRecipe serviceRecipe = new ObjectRecipe(clazz);
         recipeOptions(serviceRecipe);
         serviceRecipe.setAllProperties(properties);
-        return (T) serviceRecipe.create();
+        final T value = (T) serviceRecipe.create();
+        recipes.put(value, serviceRecipe);
+        return value;
     }
 
     protected <T> T build(final Class<T> clazz, final Object instance, final 
Properties properties) {
         final ObjectRecipe recipe = PassthroughFactory.recipe(instance);
         recipeOptions(recipe);
         recipe.setAllProperties(properties);
-        return (T) recipe.create();
+        final T value = (T) recipe.create();
+        recipes.put(value, recipe);
+        return value;
     }
 
     private void recipeOptions(final ObjectRecipe recipe) {
         recipe.allow(Option.CASE_INSENSITIVE_PROPERTIES);
         recipe.allow(Option.IGNORE_MISSING_PROPERTIES);
     }
+
+    @Override
+    public ObjectRecipe clearRecipe(final Object object) {
+        if (object instanceof ManagedDataSource) {
+            return recipes.remove(((ManagedDataSource) object).getDelegate());
+        } else {
+            return recipes.remove(object);
+        }
+    }
 }


Reply via email to