You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by pc...@apache.org on 2006/11/15 05:20:30 UTC
svn commit: r475115 - in /incubator/openjpa/trunk:
openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/conf/
openjpa-kernel/src/main/java/org/apache/openjpa/conf/
openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/
openjpa-lib/src/main/resources/org/...
Author: pcl
Date: Tue Nov 14 20:20:30 2006
New Revision: 475115
URL: http://svn.apache.org/viewvc?view=rev&rev=475115
Log:
invoke the close() callback at the beginning of ConfigurationImpl.close(); change other ConfigurationImpl subtypes to use preClose() instead of now-final close(); add test case for close callbacks.
Modified:
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/conf/JDBCConfigurationImpl.java
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java
incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java
incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ProductDerivations.java
incubator/openjpa/trunk/openjpa-lib/src/main/resources/org/apache/openjpa/lib/conf/localizer.properties
incubator/openjpa/trunk/openjpa-lib/src/test/java/org/apache/openjpa/lib/conf/test/ConfigurationTestProductDerivation.java
incubator/openjpa/trunk/openjpa-lib/src/test/java/org/apache/openjpa/lib/conf/test/TestConfigurationImpl.java
Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/conf/JDBCConfigurationImpl.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/conf/JDBCConfigurationImpl.java?view=diff&rev=475115&r1=475114&r2=475115
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/conf/JDBCConfigurationImpl.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/conf/JDBCConfigurationImpl.java Tue Nov 14 20:20:30 2006
@@ -853,7 +853,7 @@
/**
* Free the data sources.
*/
- public void close() {
+ protected void preClose() {
if (dataSource != null) {
getDBDictionaryInstance().closeDataSource(dataSource);
connectionFactory.set(null, true); // so super doesn't close it
@@ -862,7 +862,7 @@
getDBDictionaryInstance().closeDataSource(dataSource);
connectionFactory2.set(null, true); // so super doesn't close it
}
- super.close();
+ super.preClose();
}
protected boolean isInvalidProperty(String propName) {
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java?view=diff&rev=475115&r1=475114&r2=475115
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java Tue Nov 14 20:20:30 2006
@@ -1411,10 +1411,10 @@
getRemoteCommitEventManager();
}
- public void close() {
+ protected void preClose() {
ImplHelper.close(metaRepository);
ImplHelper.close(remoteEventManager);
- super.close();
+ super.preClose();
}
public Log getConfigurationLog() {
Modified: incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java?view=diff&rev=475115&r1=475114&r2=475115
==============================================================================
--- incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java (original)
+++ incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java Tue Nov 14 20:20:30 2006
@@ -329,7 +329,11 @@
/**
* Closes all closeable values and plugins.
*/
- public void close() {
+ public final void close() {
+ ProductDerivations.beforeClose(this);
+
+ preClose();
+
ObjectValue val;
for (int i = 0; i < _vals.size(); i++) {
if (_vals.get(i) instanceof Closeable) {
@@ -349,6 +353,16 @@
}
}
}
+ }
+
+ /**
+ * Invoked by final method {@link #close} after invoking the
+ * {@link ProductDerivation#beforeConfigurationClose} callbacks
+ * but before performing internal close operations.
+ *
+ * @since 0.9.7
+ */
+ protected void preClose() {
}
///////////////////////////
Modified: incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ProductDerivations.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ProductDerivations.java?view=diff&rev=475115&r1=475114&r2=475115
==============================================================================
--- incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ProductDerivations.java (original)
+++ incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ProductDerivations.java Tue Nov 14 20:20:30 2006
@@ -151,6 +151,22 @@
}
/**
+ * Called as the first step of a Configuration's close() method.
+ * Exceptions are swallowed.
+ *
+ * @since 0.9.7
+ */
+ public static void beforeClose(Configuration conf) {
+ for (int i = 0; i < _derivations.length; i++) {
+ try {
+ _derivations[i].beforeConfigurationClose(conf);
+ } catch (Exception e) {
+ conf.getConfigurationLog().warn(_loc.get("before-close-ex"), e);
+ }
+ }
+ }
+
+ /**
* Load the given given resource, or return false if it is not a resource
* this provider understands. The given class loader may be null.
*
Modified: incubator/openjpa/trunk/openjpa-lib/src/main/resources/org/apache/openjpa/lib/conf/localizer.properties
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-lib/src/main/resources/org/apache/openjpa/lib/conf/localizer.properties?view=diff&rev=475115&r1=475114&r2=475115
==============================================================================
--- incubator/openjpa/trunk/openjpa-lib/src/main/resources/org/apache/openjpa/lib/conf/localizer.properties (original)
+++ incubator/openjpa/trunk/openjpa-lib/src/main/resources/org/apache/openjpa/lib/conf/localizer.properties Tue Nov 14 20:20:30 2006
@@ -84,6 +84,8 @@
is an overly-restrictive security manager.\n{1}
bad-product-derivations: Some product derivations are being skipped. For \
information about product derivation status, run:\njava {0}
+before-close-ex: An exception occurred during ProductDerivations.beforeClose().\
+ This exception will be ignored, and is logged along with this message.
Log-name: Log factory
Log-desc: LogFactory and configuration
Modified: incubator/openjpa/trunk/openjpa-lib/src/test/java/org/apache/openjpa/lib/conf/test/ConfigurationTestProductDerivation.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-lib/src/test/java/org/apache/openjpa/lib/conf/test/ConfigurationTestProductDerivation.java?view=diff&rev=475115&r1=475114&r2=475115
==============================================================================
--- incubator/openjpa/trunk/openjpa-lib/src/test/java/org/apache/openjpa/lib/conf/test/ConfigurationTestProductDerivation.java (original)
+++ incubator/openjpa/trunk/openjpa-lib/src/test/java/org/apache/openjpa/lib/conf/test/ConfigurationTestProductDerivation.java Tue Nov 14 20:20:30 2006
@@ -22,6 +22,7 @@
import java.util.Properties;
import org.apache.openjpa.lib.conf.AbstractProductDerivation;
+import org.apache.openjpa.lib.conf.Configuration;
import org.apache.openjpa.lib.conf.ConfigurationProvider;
import org.apache.openjpa.lib.conf.MapConfigurationProvider;
import org.apache.openjpa.lib.conf.ProductDerivation;
@@ -37,8 +38,14 @@
public class ConfigurationTestProductDerivation
extends AbstractProductDerivation {
+ public static boolean closed = false;
+
public int getType() {
return ProductDerivation.TYPE_PRODUCT;
+ }
+
+ public void beforeConfigurationClose(Configuration conf) {
+ closed = true;
}
public ConfigurationProvider loadGlobals(ClassLoader loader)
Modified: incubator/openjpa/trunk/openjpa-lib/src/test/java/org/apache/openjpa/lib/conf/test/TestConfigurationImpl.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-lib/src/test/java/org/apache/openjpa/lib/conf/test/TestConfigurationImpl.java?view=diff&rev=475115&r1=475114&r2=475115
==============================================================================
--- incubator/openjpa/trunk/openjpa-lib/src/test/java/org/apache/openjpa/lib/conf/test/TestConfigurationImpl.java (original)
+++ incubator/openjpa/trunk/openjpa-lib/src/test/java/org/apache/openjpa/lib/conf/test/TestConfigurationImpl.java Tue Nov 14 20:20:30 2006
@@ -234,6 +234,13 @@
assertEquals("java.lang.StringBuffer", copy2.getPluginKey());
assertEquals("", copy2.getPluginKeyInstance().toString());
}
+
+ public void testProductDerivationCloseCallback() {
+ // toggle the static. This will be reset by the close invocation.
+ ConfigurationTestProductDerivation.closed = false;
+ _conf.close();
+ assertTrue(ConfigurationTestProductDerivation.closed);
+ }
public static void main(String[] args) {
main();