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/07/15 18:40:01 UTC
svn commit: r422262 - in /incubator/openjpa/trunk:
openjpa-kernel/src/main/java/org/apache/openjpa/conf/
openjpa-kernel/src/main/java/org/apache/openjpa/event/
openjpa-kernel/src/main/java/org/apache/openjpa/kernel/
openjpa-lib/src/main/java/org/apache...
Author: pcl
Date: Sat Jul 15 09:40:00 2006
New Revision: 422262
URL: http://svn.apache.org/viewvc?rev=422262&view=rev
Log:
moved to raw 'openjpa.*' property prefix instead of 'org.apache.openjpa.*'; implemented system to allow multiple property prefixes for configurations without relaxing any of the current validations
Modified:
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/AutoDetachValue.java
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/BrokerFactoryValue.java
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/RemoteCommitProviderValue.java
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/RemoteCommitProvider.java
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Bootstrap.java
incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configuration.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/Configurations.java
incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/MapConfigurationProvider.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/TestConfigurationImpl.java
incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/ConfigurationProviderImpl.java
incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerFactoryImpl.java
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/AutoDetachValue.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/AutoDetachValue.java?rev=422262&r1=422261&r2=422262&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/AutoDetachValue.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/AutoDetachValue.java Sat Jul 15 09:40:00 2006
@@ -44,8 +44,8 @@
private int _flags;
- public AutoDetachValue(String prop) {
- super(prop);
+ public AutoDetachValue() {
+ super("AutoDetach");
setAliases(ALIASES);
}
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/BrokerFactoryValue.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/BrokerFactoryValue.java?rev=422262&r1=422261&r2=422262&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/BrokerFactoryValue.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/BrokerFactoryValue.java Sat Jul 15 09:40:00 2006
@@ -15,7 +15,13 @@
*/
package org.apache.openjpa.conf;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+
import org.apache.openjpa.kernel.BrokerFactory;
+import org.apache.openjpa.lib.conf.ConfigurationProvider;
import org.apache.openjpa.lib.conf.PluginValue;
/**
@@ -30,12 +36,18 @@
public class BrokerFactoryValue
extends PluginValue {
- public static final String KEY = "org.apache.openjpa.BrokerFactory";
+ private static final String KEY = "BrokerFactory";
private static final String[] ALIASES = new String[]{
"abstractstore",
"org.apache.openjpa.abstractstore.AbstractStoreBrokerFactory",
};
+
+ private static final Collection _prefixes = new HashSet();
+
+ static {
+ _prefixes.add("openjpa");
+ }
public BrokerFactoryValue() {
this(KEY);
@@ -44,5 +56,36 @@
public BrokerFactoryValue(String prop) {
super(prop, false);
setAliases(ALIASES);
+ }
+
+ /**
+ * Extract the concrete {@link BrokerFactory} class name that the specified
+ * configuration will use.
+ */
+ public static Object getBrokerFactoryClassName(ConfigurationProvider cp) {
+ Map props = cp.getProperties();
+ for (Iterator iter = _prefixes.iterator(); iter.hasNext(); ) {
+ Object bf = props.get(iter.next() + "." + KEY);
+ if (bf != null)
+ return bf;
+ }
+ return null;
+ }
+
+ /**
+ * Return the property to use for setting the broker factory for
+ * <code>cp</code>.
+ */
+ public static String getBrokerFactoryProperty(ConfigurationProvider cp) {
+ return _prefixes.iterator().next() + "."
+ + BrokerFactoryValue.KEY;
+ }
+
+ /**
+ * Add <code>prefix</code> to the list of prefixes under which configuration
+ * properties may be scoped.
+ */
+ public static void addPropertyPrefix(String prefix) {
+ _prefixes.add(prefix);
}
}
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?rev=422262&r1=422261&r2=422262&view=diff
==============================================================================
--- 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 Sat Jul 15 09:40:00 2006
@@ -58,7 +58,7 @@
/**
* Implementation of the {@link OpenJPAConfiguration} interface.
* On construction, the class will attempt to locate a default properties
- * file called <code>org.apache.openjpa.properties</code> located at any top level token
+ * file called <code>openjpa.properties</code> located at any top level token
* of the CLASSPATH. See the {@link ConfigurationImpl} class description
* for details.
*
@@ -153,7 +153,7 @@
* Constructor.
*
* @param loadDefaults whether to attempt to load the default
- * <code>org.apache.openjpa.properties</code> resource
+ * <code>openjpa.properties</code> resource
*/
public OpenJPAConfigurationImpl(boolean loadDefaults) {
this(true, loadDefaults);
@@ -164,14 +164,14 @@
*
* @param derivations whether to apply product derivations
* @param loadDefaults whether to attempt to load the default
- * <code>org.apache.openjpa.properties</code> resource
+ * <code>openjpa.properties</code> resource
*/
public OpenJPAConfigurationImpl(boolean derivations, boolean loadDefaults) {
super(false);
String[] aliases;
// setup super's log factory plugin
- logFactoryPlugin.setProperty("org.apache.openjpa.Log");
+ logFactoryPlugin.setProperty("Log");
logFactoryPlugin
.setAlias("openjpa", "org.apache.openjpa.lib.log.LogFactoryImpl");
aliases = logFactoryPlugin.getAliases();
@@ -179,7 +179,7 @@
logFactoryPlugin.setString(aliases[0]);
classResolverPlugin =
- addPlugin("org.apache.openjpa.ClassResolver", true);
+ addPlugin("ClassResolver", true);
aliases = new String[]{
"default", "org.apache.openjpa.util.ClassResolverImpl",
// deprecated alias
@@ -193,14 +193,14 @@
brokerFactoryPlugin = new BrokerFactoryValue();
addValue(brokerFactoryPlugin);
- brokerPlugin = addPlugin("org.apache.openjpa.BrokerImpl", false);
+ brokerPlugin = addPlugin("BrokerImpl", false);
aliases = new String[]{ "default", BrokerImpl.class.getName() };
brokerPlugin.setAliases(aliases);
brokerPlugin.setDefault(aliases[0]);
brokerPlugin.setString(aliases[0]);
dataCacheManagerPlugin =
- addPlugin("org.apache.openjpa.DataCacheManager", true);
+ addPlugin("DataCacheManager", true);
aliases = new String[]{
"default", DataCacheManagerImpl.class.getName(),
};
@@ -209,7 +209,7 @@
dataCacheManagerPlugin.setString(aliases[0]);
dataCacheManagerPlugin.setInstantiatingGetter("getDataCacheManager");
- dataCachePlugin = addPlugin("org.apache.openjpa.DataCache", false);
+ dataCachePlugin = addPlugin("DataCache", false);
aliases = new String[]{
"false", null,
"true", ConcurrentDataCache.class.getName(),
@@ -219,11 +219,11 @@
dataCachePlugin.setDefault(aliases[0]);
dataCachePlugin.setString(aliases[0]);
- dataCacheTimeout = addInt("org.apache.openjpa.DataCacheTimeout");
+ dataCacheTimeout = addInt("DataCacheTimeout");
dataCacheTimeout.setDefault("-1");
dataCacheTimeout.set(-1);
- queryCachePlugin = addPlugin("org.apache.openjpa.QueryCache", true);
+ queryCachePlugin = addPlugin("QueryCache", true);
aliases = new String[]{
"true", ConcurrentQueryCache.class.getName(),
"concurrent", ConcurrentQueryCache.class.getName(),
@@ -234,11 +234,11 @@
queryCachePlugin.setString(aliases[0]);
dynamicDataStructs =
- addBoolean("org.apache.openjpa.DynamicDataStructs");
+ addBoolean("DynamicDataStructs");
dynamicDataStructs.setDefault("false");
dynamicDataStructs.set(false);
- lockManagerPlugin = addPlugin("org.apache.openjpa.LockManager", false);
+ lockManagerPlugin = addPlugin("LockManager", false);
aliases = new String[]{
"none", "org.apache.openjpa.kernel.NoneLockManager",
"version", "org.apache.openjpa.kernel.VersionLockManager",
@@ -248,7 +248,7 @@
lockManagerPlugin.setString(aliases[0]);
inverseManagerPlugin =
- addPlugin("org.apache.openjpa.InverseManager", false);
+ addPlugin("InverseManager", false);
aliases = new String[]{
"false", null,
"true", "org.apache.openjpa.kernel.InverseManager",
@@ -258,7 +258,7 @@
inverseManagerPlugin.setString(aliases[0]);
savepointManagerPlugin =
- addPlugin("org.apache.openjpa.SavepointManager", true);
+ addPlugin("SavepointManager", true);
aliases = new String[]{
"in-mem", "org.apache.openjpa.kernel.InMemorySavepointManager",
};
@@ -269,7 +269,7 @@
("getSavepointManagerInstance");
orphanedKeyPlugin =
- addPlugin("org.apache.openjpa.OrphanedKeyAction", true);
+ addPlugin("OrphanedKeyAction", true);
aliases = new String[]{
"log", "org.apache.openjpa.event.LogOrphanedKeyAction",
"exception", "org.apache.openjpa.event.ExceptionOrphanedKeyAction",
@@ -281,11 +281,10 @@
orphanedKeyPlugin.setInstantiatingGetter
("getOrphanedKeyActionInstance");
- remoteProviderPlugin = new RemoteCommitProviderValue
- ("org.apache.openjpa.RemoteCommitProvider");
+ remoteProviderPlugin = new RemoteCommitProviderValue();
addValue(remoteProviderPlugin);
- transactionMode = addBoolean("org.apache.openjpa.TransactionMode");
+ transactionMode = addBoolean("TransactionMode");
aliases = new String[]{
"local", "false",
"managed", "true",
@@ -294,7 +293,7 @@
transactionMode.setDefault(aliases[0]);
managedRuntimePlugin =
- addPlugin("org.apache.openjpa.ManagedRuntime", true);
+ addPlugin("ManagedRuntime", true);
aliases = new String[]{
"auto", "org.apache.openjpa.ee.AutomaticManagedRuntime",
"jndi", "org.apache.openjpa.ee.JNDIManagedRuntime",
@@ -306,7 +305,7 @@
managedRuntimePlugin.setInstantiatingGetter
("getManagedRuntimeInstance");
- proxyManagerPlugin = addPlugin("org.apache.openjpa.ProxyManager", true);
+ proxyManagerPlugin = addPlugin("ProxyManager", true);
aliases = new String[]{ "default",
"org.apache.openjpa.util.ProxyManagerImpl" };
proxyManagerPlugin.setAliases(aliases);
@@ -314,43 +313,42 @@
proxyManagerPlugin.setString(aliases[0]);
proxyManagerPlugin.setInstantiatingGetter("getProxyManagerInstance");
- mapping = addString("org.apache.openjpa.Mapping");
+ mapping = addString("Mapping");
metaFactoryPlugin =
- addPlugin("org.apache.openjpa.MetaDataFactory", false);
+ addPlugin("MetaDataFactory", false);
- connectionFactory = addObject("org.apache.openjpa.ConnectionFactory");
+ connectionFactory = addObject("ConnectionFactory");
connectionFactory.setInstantiatingGetter("getConnectionFactory");
- connectionFactory2 = addObject("org.apache.openjpa.ConnectionFactory2");
+ connectionFactory2 = addObject("ConnectionFactory2");
connectionFactory2.setInstantiatingGetter("getConnectionFactory2");
- connectionUserName = addString("org.apache.openjpa.ConnectionUserName");
- connectionPassword = addString("org.apache.openjpa.ConnectionPassword");
- connectionURL = addString("org.apache.openjpa.ConnectionURL");
+ connectionUserName = addString("ConnectionUserName");
+ connectionPassword = addString("ConnectionPassword");
+ connectionURL = addString("ConnectionURL");
connectionDriverName =
- addString("org.apache.openjpa.ConnectionDriverName");
+ addString("ConnectionDriverName");
connectionFactoryName =
- addString("org.apache.openjpa.ConnectionFactoryName");
+ addString("ConnectionFactoryName");
connectionProperties =
- addString("org.apache.openjpa.ConnectionProperties");
- connectionFactoryProperties = addString
- ("org.apache.openjpa.ConnectionFactoryProperties");
+ addString("ConnectionProperties");
+ connectionFactoryProperties = addString("ConnectionFactoryProperties");
connection2UserName =
- addString("org.apache.openjpa.Connection2UserName");
+ addString("Connection2UserName");
connection2Password =
- addString("org.apache.openjpa.Connection2Password");
- connection2URL = addString("org.apache.openjpa.Connection2URL");
+ addString("Connection2Password");
+ connection2URL = addString("Connection2URL");
connection2DriverName =
- addString("org.apache.openjpa.Connection2DriverName");
+ addString("Connection2DriverName");
connection2Properties =
- addString("org.apache.openjpa.Connection2Properties");
- connectionFactory2Properties = addString
- ("org.apache.openjpa.ConnectionFactory2Properties");
+ addString("Connection2Properties");
+ connectionFactory2Properties = addString(
+ "ConnectionFactory2Properties");
connectionFactory2Name =
- addString("org.apache.openjpa.ConnectionFactory2Name");
+ addString("ConnectionFactory2Name");
connectionFactoryMode =
- addBoolean("org.apache.openjpa.ConnectionFactoryMode");
+ addBoolean("ConnectionFactoryMode");
aliases = new String[]{
"local", "false",
"managed", "true",
@@ -358,11 +356,11 @@
connectionFactoryMode.setAliases(aliases);
connectionFactoryMode.setDefault(aliases[0]);
- optimistic = addBoolean("org.apache.openjpa.Optimistic");
+ optimistic = addBoolean("Optimistic");
optimistic.setDefault("true");
optimistic.set(true);
- autoClear = addInt("org.apache.openjpa.AutoClear");
+ autoClear = addInt("AutoClear");
aliases = new String[]{
"datastore", String.valueOf(AutoClear.CLEAR_DATASTORE),
"all", String.valueOf(AutoClear.CLEAR_ALL),
@@ -371,11 +369,11 @@
autoClear.setDefault(aliases[0]);
autoClear.set(AutoClear.CLEAR_DATASTORE);
- retainState = addBoolean("org.apache.openjpa.RetainState");
+ retainState = addBoolean("RetainState");
retainState.setDefault("true");
retainState.set(true);
- restoreState = addInt("org.apache.openjpa.RestoreState");
+ restoreState = addInt("RestoreState");
aliases = new String[]{
"none", String.valueOf(RestoreState.RESTORE_NONE),
"false", String.valueOf(RestoreState.RESTORE_NONE),
@@ -388,10 +386,10 @@
restoreState.setDefault(aliases[0]);
restoreState.set(RestoreState.RESTORE_IMMUTABLE);
- autoDetach = new AutoDetachValue("org.apache.openjpa.AutoDetach");
+ autoDetach = new AutoDetachValue();
addValue(autoDetach);
- detachStatePlugin = addPlugin("org.apache.openjpa.DetachState", true);
+ detachStatePlugin = addPlugin("DetachState", true);
aliases = new String[]{
"loaded", DetachOptions.Loaded.class.getName(),
"fgs", DetachOptions.FetchGroups.class.getName(),
@@ -402,26 +400,26 @@
detachStatePlugin.setString(aliases[0]);
detachStatePlugin.setInstantiatingGetter("getDetachStateInstance");
- ignoreChanges = addBoolean("org.apache.openjpa.IgnoreChanges");
+ ignoreChanges = addBoolean("IgnoreChanges");
nontransactionalRead =
- addBoolean("org.apache.openjpa.NontransactionalRead");
+ addBoolean("NontransactionalRead");
nontransactionalRead.setDefault("true");
nontransactionalRead.set(true);
nontransactionalWrite =
- addBoolean("org.apache.openjpa.NontransactionalWrite");
- multithreaded = addBoolean("org.apache.openjpa.Multithreaded");
+ addBoolean("NontransactionalWrite");
+ multithreaded = addBoolean("Multithreaded");
- fetchBatchSize = addInt("org.apache.openjpa.FetchBatchSize");
+ fetchBatchSize = addInt("FetchBatchSize");
fetchBatchSize.setDefault("-1");
fetchBatchSize.set(-1);
- fetchGroups = addStringList("org.apache.openjpa.FetchGroups");
+ fetchGroups = addStringList("FetchGroups");
fetchGroups.setDefault("default");
fetchGroups.set(new String[]{ "default" });
- flushBeforeQueries = addInt("org.apache.openjpa.FlushBeforeQueries");
+ flushBeforeQueries = addInt("FlushBeforeQueries");
aliases = new String[]{
"true", String.valueOf(QueryFlushModes.FLUSH_TRUE),
"false", String.valueOf(QueryFlushModes.FLUSH_FALSE),
@@ -432,11 +430,11 @@
flushBeforeQueries.setDefault(aliases[0]);
flushBeforeQueries.set(QueryFlushModes.FLUSH_TRUE);
- lockTimeout = addInt("org.apache.openjpa.LockTimeout");
+ lockTimeout = addInt("LockTimeout");
lockTimeout.setDefault("-1");
lockTimeout.set(-1);
- readLockLevel = addInt("org.apache.openjpa.ReadLockLevel");
+ readLockLevel = addInt("ReadLockLevel");
aliases = new String[]{
"read", String.valueOf(LockLevels.LOCK_READ),
"write", String.valueOf(LockLevels.LOCK_WRITE),
@@ -446,7 +444,7 @@
readLockLevel.setDefault(aliases[0]);
readLockLevel.set(LockLevels.LOCK_READ);
- writeLockLevel = addInt("org.apache.openjpa.WriteLockLevel");
+ writeLockLevel = addInt("WriteLockLevel");
aliases = new String[]{
"read", String.valueOf(LockLevels.LOCK_READ),
"write", String.valueOf(LockLevels.LOCK_WRITE),
@@ -456,12 +454,12 @@
writeLockLevel.setDefault(aliases[1]);
writeLockLevel.set(LockLevels.LOCK_WRITE);
- seqPlugin = new SeqValue("org.apache.openjpa.Sequence");
+ seqPlugin = new SeqValue("Sequence");
seqPlugin.setInstantiatingGetter("getSequenceInstance");
addValue(seqPlugin);
connectionRetainMode =
- addInt("org.apache.openjpa.ConnectionRetainMode");
+ addInt("ConnectionRetainMode");
aliases = new String[]{
"on-demand",
String.valueOf(ConnectionRetainModes.CONN_RETAIN_DEMAND),
@@ -479,20 +477,20 @@
connectionRetainMode.set(ConnectionRetainModes.CONN_RETAIN_DEMAND);
filterListenerPlugins =
- addPluginList("org.apache.openjpa.FilterListeners");
+ addPluginList("FilterListeners");
filterListenerPlugins.setInstantiatingGetter
("getFilterListenerInstances");
aggregateListenerPlugins =
- addPluginList("org.apache.openjpa.AggregateListeners");
+ addPluginList("AggregateListeners");
aggregateListenerPlugins.setInstantiatingGetter
("getAggregateListenerInstances");
retryClassRegistration =
- addBoolean("org.apache.openjpa.RetryClassRegistration");
+ addBoolean("RetryClassRegistration");
compatibilityPlugin =
- addPlugin("org.apache.openjpa.Compatibility", true);
+ addPlugin("Compatibility", true);
aliases = new String[]{ "default", Compatibility.class.getName() };
compatibilityPlugin.setAliases(aliases);
compatibilityPlugin.setDefault(aliases[0]);
@@ -1409,15 +1407,6 @@
ImplHelper.close(metaRepos);
super.close();
ProductDerivations.afterClose(this);
- }
-
- protected boolean isInvalidProperty(String propName) {
- // handle warnings for org.apache.openjpa.SomeString, but not for
- // org.apache.openjpa.some.subpackage.SomeString, since it might be valid for some
- // specific implementation of OpenJPA
- return propName.toLowerCase().startsWith("org.apache.openjpa.")
- && propName.length() > 5
- && propName.indexOf('.', 5) == -1;
}
public Log getConfigurationLog() {
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/RemoteCommitProviderValue.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/RemoteCommitProviderValue.java?rev=422262&r1=422261&r2=422262&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/RemoteCommitProviderValue.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/RemoteCommitProviderValue.java Sat Jul 15 09:40:00 2006
@@ -42,8 +42,8 @@
private Options _opts = null;
private Boolean _transmitPersIds = null;
- public RemoteCommitProviderValue(String prop) {
- super(prop, true);
+ public RemoteCommitProviderValue() {
+ super("RemoteCommitProvider", true);
setAliases(ALIASES);
}
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/RemoteCommitProvider.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/RemoteCommitProvider.java?rev=422262&r1=422261&r2=422262&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/RemoteCommitProvider.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/RemoteCommitProvider.java Sat Jul 15 09:40:00 2006
@@ -21,7 +21,7 @@
* An entity that is responsible for communicating commit
* notification to other {@link RemoteCommitEventManager}s. Each
* event manager creates a remote commit provider, based on
- * the values of the <code>org.apache.openjpa.RemoteCommitProvider</code>
+ * the values of the <code>openjpa.RemoteCommitProvider</code>
* configuration property.
* An adapter that implements {@link TransactionListener} is
* registered with each {@link org.apache.openjpa.kernel.Broker}. This adapter
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Bootstrap.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Bootstrap.java?rev=422262&r1=422261&r2=422262&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Bootstrap.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Bootstrap.java Sat Jul 15 09:40:00 2006
@@ -120,8 +120,7 @@
if (loader == null)
loader = Thread.currentThread().getContextClassLoader();
- Map props = conf.getProperties();
- Object cls = props.get(BrokerFactoryValue.KEY);
+ Object cls = BrokerFactoryValue.getBrokerFactoryClassName(conf);
if (cls instanceof Class)
return (Class) cls;
@@ -129,8 +128,8 @@
value.setString((String) cls);
String clsName = value.getClassName();
if (clsName == null)
- throw new UserException(s_loc.get("no-brokerfactory", props)).
- setFatal(true);
+ throw new UserException(s_loc.get("no-brokerfactory",
+ conf.getProperties())).setFatal(true);
try {
return Class.forName(clsName, true, loader);
Modified: incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configuration.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configuration.java?rev=422262&r1=422261&r2=422262&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configuration.java (original)
+++ incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configuration.java Sat Jul 15 09:40:00 2006
@@ -200,4 +200,10 @@
* Return a copy of this configuration.
*/
public Object clone();
+
+ /**
+ * Add <code>prefix</code> to the list of prefixes to use
+ * to identify valid configuration properties.
+ */
+ public void addPropertyPrefix(String prefix);
}
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?rev=422262&r1=422261&r2=422262&view=diff
==============================================================================
--- 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 Sat Jul 15 09:40:00 2006
@@ -15,7 +15,7 @@
*/
package org.apache.openjpa.lib.conf;
-import java.awt.*;
+import java.awt.Image;
import java.beans.BeanDescriptor;
import java.beans.BeanInfo;
import java.beans.EventSetDescriptor;
@@ -36,17 +36,18 @@
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-import java.util.AbstractList;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.MissingResourceException;
import java.util.Properties;
+import java.util.Set;
import java.util.TreeSet;
import org.apache.commons.lang.StringUtils;
@@ -112,6 +113,8 @@
// cache descriptors
private PropertyDescriptor[] _pds = null;
private MethodDescriptor[] _mds = null;
+
+ private Set _prefixes = new HashSet();
/**
* Default constructor. Attempts to load default properties through
@@ -127,7 +130,9 @@
* @param loadDefaults whether to attempt to load the default properties
*/
public ConfigurationImpl(boolean loadDefaults) {
- logFactoryPlugin = addPlugin("org.apache.openjpa.lib.Log", true);
+ _prefixes.add("openjpa");
+
+ logFactoryPlugin = addPlugin("Log", true);
String[] aliases = new String[]{
"true", "org.apache.openjpa.lib.log.LogFactoryImpl",
"commons", "org.apache.openjpa.lib.log.CommonsLogFactory",
@@ -171,7 +176,7 @@
}
public String getProductName() {
- return "solarmetric";
+ return "openjpa";
}
public LogFactory getLogFactory() {
@@ -579,7 +584,8 @@
Object set;
for (int i = 0; i < _vals.size(); i++) {
val = (Value) _vals.get(i);
- set = map.get(val.getProperty());
+ Object[] propertyInfo = lookUpProperty(val.getProperty(), map);
+ set = propertyInfo[1];
if (set == null)
continue;
@@ -591,13 +597,14 @@
val.setObject(set);
}
- remaining.remove(val.getProperty());
+ removeFoundProperty(val, remaining);
}
-
+
// convention is to point product at a resource with the
- // <product>.properties System property; remove that property so we
+ // <prefix>.properties System property; remove that property so we
// we don't warn about it
- remaining.remove(getProductName() + ".properties");
+ for (Iterator iter = _prefixes.iterator(); iter.hasNext(); )
+ remaining.remove((String) iter.next() + ".properties");
// now warn if there are any remaining properties that there
// is an unhandled prop
@@ -615,6 +622,35 @@
}
/**
+ * Removes <code>val</code> from <code>remaining</code>. Use this method
+ * instead of attempting to remove the value directly because this will
+ * account for any duplicate-but-same-valued keys in the map.
+ */
+ private void removeFoundProperty(Value val, Map remaining) {
+ for (Iterator iter = _prefixes.iterator(); iter.hasNext(); )
+ remaining.remove((String) iter.next() + "." + val.getProperty());
+ }
+
+ private Object[] lookUpProperty(String property, Map map) {
+ String firstKey = null;
+ Object o = null;
+ for (Iterator iter = _prefixes.iterator(); iter.hasNext(); ) {
+ String key = (String) iter.next() + "." + property;
+ if (firstKey == null) {
+ o = map.get(key);
+ if (o != null)
+ firstKey = key;
+ } else if (map.containsKey(key)) {
+ // if we've already found a property with a previous prefix,
+ // then this is a collision.
+ throw new IllegalStateException(
+ _loc.get("dup-with-different-prefixes", firstKey, key));
+ }
+ }
+ return new Object[] { firstKey, o };
+ }
+
+ /**
* Issue a warning that the specified property is not valid.
*/
private void warnInvalidProperty(String propName) {
@@ -627,7 +663,7 @@
// try to find the closest string to the invalid property
// so that we can provide a hint in case of a misspelling
String closest = StringDistance.getClosestLevenshteinDistance
- (propName, new PropertyList(), 15);
+ (propName, newPropertyList(), 15);
if (closest == null)
log.warn(_loc.get("invalid-property", propName));
@@ -635,14 +671,33 @@
log.warn(_loc.get("invalid-property-hint", propName, closest));
}
+ private Collection newPropertyList() {
+ Set s = new HashSet();
+ for (Iterator iter = _vals.iterator(); iter.hasNext(); ) {
+ Value val = (Value) iter.next();
+ for (Iterator iter2 = _prefixes.iterator(); iter2.hasNext(); )
+ s.add(((String) iter2.next()) + "." + val.getProperty());
+ }
+ return s;
+ }
+
/**
* Returns true if the specified property name should raise a warning
* if it is not found in the list of known properties.
*/
protected boolean isInvalidProperty(String propName) {
- // by default, we don't warn on any properties, since we don't
- // know what property pattern will be used for the base config
- return false;
+ // handle warnings for openjpa.SomeString, but not for
+ // openjpa.some.subpackage.SomeString, since it might be valid for some
+ // specific implementation of OpenJPA
+ boolean invalid = false;
+ for (Iterator iter = _prefixes.iterator(); iter.hasNext(); ) {
+ String prefix = (String) iter.next();
+ if (propName.toLowerCase().startsWith(prefix)
+ && propName.indexOf('.', prefix.length()) != -1)
+ invalid = true;
+ }
+
+ return invalid;
}
/**
@@ -661,7 +716,7 @@
* <code>propertiesFile</code> value with the name of a file.
*/
public void setPropertiesFile(File file) throws IOException {
- Configurations.load(file, getClass().getClassLoader()). setInto(this);
+ Configurations.load(file, getClass().getClassLoader()).setInto(this);
}
/////////////
@@ -714,6 +769,8 @@
public void readExternal(ObjectInput in)
throws IOException, ClassNotFoundException {
fromProperties((Map) in.readObject());
+ _prefixes = (Set) in.readObject();
+ _defaults = in.readBoolean();
}
/**
@@ -725,6 +782,9 @@
out.writeObject(_props);
else
out.writeObject(toProperties(false));
+
+ out.writeObject(_prefixes);
+ out.writeBoolean(_defaults);
}
/**
@@ -735,8 +795,11 @@
try {
Constructor cons = getClass().getConstructor
(new Class[]{ boolean.class });
- Configuration clone = (Configuration) cons.newInstance
+ ConfigurationImpl clone = (ConfigurationImpl) cons.newInstance
(new Object[]{ Boolean.FALSE });
+ clone._prefixes.clear();
+ clone._prefixes.addAll(_prefixes);
+ clone._defaults = _defaults;
clone.fromProperties(toProperties(true));
return clone;
} catch (RuntimeException re) {
@@ -759,6 +822,10 @@
return val;
}
+ public void addPropertyPrefix(String prefix) {
+ _prefixes.add(prefix);
+ }
+
/**
* Add the given value to the set of configuration properties.
*/
@@ -838,19 +905,5 @@
PluginListValue val = new PluginListValue(property);
addValue(val);
return val;
- }
-
- /**
- * Exposes our values list as a list of property names.
- */
- private class PropertyList extends AbstractList {
-
- public Object get(int i) {
- return ((Value) _vals.get(i)).getProperty();
- }
-
- public int size() {
- return _vals.size();
- }
}
}
Modified: incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configurations.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configurations.java?rev=422262&r1=422261&r2=422262&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configurations.java (original)
+++ incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configurations.java Sat Jul 15 09:40:00 2006
@@ -282,8 +282,8 @@
String msg = null;
String first = (String) invalidEntries.keySet().iterator()
.next();
- if (invalidEntries.keySet().size() == 1
- && first.indexOf('.') == -1) {
+ if (invalidEntries.keySet().size() == 1 &&
+ first.indexOf('.') == -1) {
// if there's just one misspelling and this is not a
// path traversal, check for near misses.
Collection options = Options.findOptionsFor(obj.getClass());
Modified: incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/MapConfigurationProvider.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/MapConfigurationProvider.java?rev=422262&r1=422261&r2=422262&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/MapConfigurationProvider.java (original)
+++ incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/MapConfigurationProvider.java Sat Jul 15 09:40:00 2006
@@ -36,7 +36,7 @@
(MapConfigurationProvider.class);
private Map _props = null;
-
+
/**
* Construct with null properties.
*/
@@ -47,6 +47,7 @@
* Constructor; supply properties map.
*/
public MapConfigurationProvider(Map props) {
+ this();
addProperties(props);
}
@@ -91,6 +92,7 @@
protected void setInto(Configuration conf, Log log) {
if (log != null && log.isTraceEnabled())
log.trace(_loc.get("conf-load", getProperties()));
+
if (_props != null)
conf.fromProperties(_props);
}
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?rev=422262&r1=422261&r2=422262&view=diff
==============================================================================
--- 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 Sat Jul 15 09:40:00 2006
@@ -51,6 +51,8 @@
on "{0}". This exception will be consumed.
closeable-ex: An exception occurred while invoking close() on "{0}". This \
exception will be consumed.
+dup-with-different-prefixes: Found multiple properties with different valid \
+ prefixes. Properties: {0}, {1}.
Log-name: Log factory
Log-desc: LogFactory and configuration
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?rev=422262&r1=422261&r2=422262&view=diff
==============================================================================
--- 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 Sat Jul 15 09:40:00 2006
@@ -43,19 +43,21 @@
}
public void setUp() {
- //### any way to avoid hard coding this?
- _def = System.getProperty("org.apache.openjpa.properties");
- System.setProperty("org.apache.openjpa.properties", "test.properties");
+ _def = System.getProperty("openjpa.properties");
+ System.setProperty("openjpa.properties", "test.properties");
}
public void tearDown() throws Exception {
- System.setProperty("org.apache.openjpa.properties", _def);
+ if (_def != null)
+ System.setProperty("openjpa.properties", _def);
- super.tearDown();
+ super.tearDown();
}
/**
* Test that default properties are found and loaded.
+ * ### This test method requires some sort of ConfigurationProvider
+ * ### to be available in the openjpa-lib module, which is not the case.
*/
public void testDefaults() {
System.setProperty("sysKey", "sysvalue");
@@ -72,8 +74,7 @@
// override the properties location to a non-existant value
_conf.setTestKey(null);
_conf.setSysKey(null);
- //###
- System.setProperty("org.apache.openjpa.properties", "foo.properties");
+ System.setProperty("openjpa.properties", "foo.properties");
try {
assertTrue(!_conf.loadDefaults());
fail("Should have thrown exception for missing resource.");
@@ -81,8 +82,7 @@
}
// set back for remainder of tests
- //###
- System.setProperty("org.apache.openjpa.properties", "test.properties");
+ System.setProperty("openjpa.properties", "test.properties");
System.setProperty("pluginKey", "java.lang.Object");
assertTrue(_conf.loadDefaults());
assertEquals("testvalue", _conf.getTestKey());
Modified: incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/ConfigurationProviderImpl.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/ConfigurationProviderImpl.java?rev=422262&r1=422261&r2=422262&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/ConfigurationProviderImpl.java (original)
+++ incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/ConfigurationProviderImpl.java Sat Jul 15 09:40:00 2006
@@ -40,9 +40,9 @@
* Configuration provider capable of loading a {@link Configuration} from
* the current environment's JPA-style XML configuration data.
*
- * For defaults, looks in <code>org.apache.openjpa.properties</code> system property for
+ * For defaults, looks in <code>openjpa.properties</code> system property for
* the location of a file to parse. If no system property is defined, the
- * default resource location of <code>org.apache.openjpa.xml</code> is used.
+ * default resource location of <code>openjpa.xml</code> is used.
* If it exists, the resource is parsed as an XML file.
*
* @nojavadoc
@@ -51,7 +51,7 @@
public class ConfigurationProviderImpl
extends MapConfigurationProvider {
- private static final String RSRC_DEFAULT = "org.apache.openjpa.xml";
+ private static final String RSRC_DEFAULT = "openjpa.xml";
private static final String RSRC_SPEC = "META-INF/persistence.xml";
private static final Localizer _loc = Localizer.forPackage
@@ -129,7 +129,7 @@
@Override
public boolean loadDefaults(ClassLoader loader)
throws IOException {
- String rsrc = System.getProperty("org.apache.openjpa.properties");
+ String rsrc = System.getProperty("openjpa.properties");
String name = null;
boolean explicit = false;
if (rsrc == null)
Modified: incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerFactoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerFactoryImpl.java?rev=422262&r1=422261&r2=422262&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerFactoryImpl.java (original)
+++ incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerFactoryImpl.java Sat Jul 15 09:40:00 2006
@@ -134,37 +134,37 @@
OpenJPAConfiguration conf = getConfiguration();
String user =
- (String) props.remove("org.apache.openjpa.ConnectionUserName");
+ (String) props.remove("openjpa.ConnectionUserName");
if (user == null)
user = conf.getConnectionUserName();
String pass =
- (String) props.remove("org.apache.openjpa.ConnectionPassword");
+ (String) props.remove("openjpa.ConnectionPassword");
if (pass == null)
pass = conf.getConnectionPassword();
String str =
- (String) props.remove("org.apache.openjpa.TransactionMode");
+ (String) props.remove("openjpa.TransactionMode");
boolean managed;
if (str == null)
managed = conf.isTransactionModeManaged();
else {
- Value val = conf.getValue("org.apache.openjpa.TransactionMode");
+ Value val = conf.getValue("openjpa.TransactionMode");
managed = Boolean.parseBoolean(val.unalias(str));
}
- Object obj = props.remove("org.apache.openjpa.ConnectionRetainMode");
+ Object obj = props.remove("openjpa.ConnectionRetainMode");
int retainMode;
if (obj instanceof Number)
retainMode = ((Number) obj).intValue();
else if (obj != null) {
Value val =
- conf.getValue("org.apache.openjpa.ConnectionRetainMode");
+ conf.getValue("openjpa.ConnectionRetainMode");
try {
retainMode = Integer.parseInt(val.unalias((String) obj));
}
catch (Exception e) {
throw new ArgumentException(_loc.get("bad-em-prop",
- "org.apache.openjpa.ConnectionRetainMode", obj),
+ "openjpa.ConnectionRetainMode", obj),
new Throwable[]{ e },
obj, true);
}
@@ -186,7 +186,7 @@
Object val;
for (Map.Entry entry : (Set<Map.Entry>) props.entrySet()) {
prop = (String) entry.getKey();
- if (!prop.startsWith("org.apache.openjpa."))
+ if (!prop.startsWith("openjpa."))
continue;
prop = prop.substring(5);
try {