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);
+ }
+ }
}