You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by jr...@apache.org on 2013/03/29 16:57:37 UTC
svn commit: r1462512 - in /openjpa/branches/1.1.x:
openjpa-kernel/src/main/java/org/apache/openjpa/kernel/
openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/
openjpa-lib/src/main/resources/org/apache/openjpa/lib/conf/
Author: jrbauer
Date: Fri Mar 29 15:57:37 2013
New Revision: 1462512
URL: http://svn.apache.org/r1462512
Log:
Disable logging during brokerfactory de-serialization. Added type checking of plugin values.
Modified:
openjpa/branches/1.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java
openjpa/branches/1.1.x/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/PluginValue.java
openjpa/branches/1.1.x/openjpa-lib/src/main/resources/org/apache/openjpa/lib/conf/localizer.properties
Modified: openjpa/branches/1.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java?rev=1462512&r1=1462511&r2=1462512&view=diff
==============================================================================
--- openjpa/branches/1.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java (original)
+++ openjpa/branches/1.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java Fri Mar 29 15:57:37 2013
@@ -467,7 +467,13 @@ public abstract class AbstractBrokerFact
_transactional = new ConcurrentHashMap();
_brokers = newBrokerSet();
+ // turn off logging while de-serializing BrokerFactory
+ String saveLogConfig = _conf.getLog();
+ _conf.setLog("none");
makeReadOnly();
+ // re-enable any logging which was in effect
+ _conf.setLog(saveLogConfig);
+
return this;
}
Modified: openjpa/branches/1.1.x/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/PluginValue.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.1.x/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/PluginValue.java?rev=1462512&r1=1462511&r2=1462512&view=diff
==============================================================================
--- openjpa/branches/1.1.x/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/PluginValue.java (original)
+++ openjpa/branches/1.1.x/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/PluginValue.java Fri Mar 29 15:57:37 2013
@@ -19,7 +19,9 @@
package org.apache.openjpa.lib.conf;
import org.apache.commons.lang.StringUtils;
+import org.apache.openjpa.lib.log.Log;
import org.apache.openjpa.lib.util.Localizer;
+import org.apache.openjpa.lib.util.ParseException;
/**
* A plugin {@link Value} consisting of plugin name and properties.
@@ -100,6 +102,20 @@ public class PluginValue extends ObjectV
*/
public Object instantiate(Class type, Configuration conf, boolean fatal) {
Object obj = newInstance(_name, type, conf, fatal);
+
+ // ensure plugin value is compatible with plugin type
+ if (obj != null && !type.isAssignableFrom(obj.getClass())) {
+ Log log = (conf == null) ? null : conf.getConfigurationLog();
+ String msg = getIncompatiblePluginMessage(obj, type);
+ if (log != null && log.isErrorEnabled()) {
+ log.error(msg);
+ }
+ if (fatal) {
+ throw new ParseException(msg);
+ }
+ return null;
+ }
+
Configurations.configureInstance(obj, conf, _props,
(fatal) ? getProperty() : null);
if (_singleton)
@@ -107,6 +123,14 @@ public class PluginValue extends ObjectV
return obj;
}
+ private String getIncompatiblePluginMessage(Object obj, Class<?> type) {
+ return _loc.get("incompatible-plugin",
+ new Object[]{ _name,
+ obj == null ? null : obj.getClass().getName(),
+ type == null ? null : type.getName()
+ }).toString();
+ }
+
public void set(Object obj, boolean derived) {
if (!_singleton)
throw new IllegalStateException(_loc.get("not-singleton",
Modified: openjpa/branches/1.1.x/openjpa-lib/src/main/resources/org/apache/openjpa/lib/conf/localizer.properties
URL: http://svn.apache.org/viewvc/openjpa/branches/1.1.x/openjpa-lib/src/main/resources/org/apache/openjpa/lib/conf/localizer.properties?rev=1462512&r1=1462511&r2=1462512&view=diff
==============================================================================
--- openjpa/branches/1.1.x/openjpa-lib/src/main/resources/org/apache/openjpa/lib/conf/localizer.properties (original)
+++ openjpa/branches/1.1.x/openjpa-lib/src/main/resources/org/apache/openjpa/lib/conf/localizer.properties Fri Mar 29 15:57:37 2013
@@ -114,3 +114,6 @@ Id-expert: true
veto-change: Can not modify "{0}" because the property is not dynamic and the \
current configuration is read-only.
+incompatible-plugin: The plugin "{0}" of value type "{1}" is not compatible with \
+ the expected plugin type "{2}". Update the configuration property with a value that \
+ is compatible with the plugin.