mirror of https://github.com/apache/openjpa.git
OPENJPA-849 Committing code and corresponding tests contributed by Dianne Richards
git-svn-id: https://svn.apache.org/repos/asf/openjpa/trunk@740989 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
f99be0c0e0
commit
b620c40e3e
|
@ -149,6 +149,7 @@ public class OpenJPAConfigurationImpl
|
||||||
public BooleanValue eagerInitialization;
|
public BooleanValue eagerInitialization;
|
||||||
public PluginValue preparedQueryCachePlugin;
|
public PluginValue preparedQueryCachePlugin;
|
||||||
public ObjectValue specification;
|
public ObjectValue specification;
|
||||||
|
public IntValue queryTimeout;
|
||||||
|
|
||||||
// custom values
|
// custom values
|
||||||
public BrokerFactoryValue brokerFactoryPlugin;
|
public BrokerFactoryValue brokerFactoryPlugin;
|
||||||
|
@ -441,6 +442,7 @@ public class OpenJPAConfigurationImpl
|
||||||
flushBeforeQueries.setAliasListComprehensive(true);
|
flushBeforeQueries.setAliasListComprehensive(true);
|
||||||
|
|
||||||
lockTimeout = addInt("LockTimeout");
|
lockTimeout = addInt("LockTimeout");
|
||||||
|
lockTimeout.addEquivalentKey("javax.persistence.lock.timeout");
|
||||||
lockTimeout.setDefault("-1");
|
lockTimeout.setDefault("-1");
|
||||||
lockTimeout.set(-1);
|
lockTimeout.set(-1);
|
||||||
lockTimeout.setDynamic(true);
|
lockTimeout.setDynamic(true);
|
||||||
|
@ -544,6 +546,12 @@ public class OpenJPAConfigurationImpl
|
||||||
addValue(specification);
|
addValue(specification);
|
||||||
specification.setInstantiatingGetter("getSpecificationInstance");
|
specification.setInstantiatingGetter("getSpecificationInstance");
|
||||||
|
|
||||||
|
queryTimeout = addInt("javax.persistence.query.timeout");
|
||||||
|
queryTimeout.setLoadKey("javax.persistence.query.timeout");
|
||||||
|
queryTimeout.setDefault("-1");
|
||||||
|
queryTimeout.set(-1);
|
||||||
|
queryTimeout.setDynamic(true);
|
||||||
|
|
||||||
// initialize supported options that some runtimes may not support
|
// initialize supported options that some runtimes may not support
|
||||||
supportedOptions.add(OPTION_NONTRANS_READ);
|
supportedOptions.add(OPTION_NONTRANS_READ);
|
||||||
supportedOptions.add(OPTION_OPTIMISTIC);
|
supportedOptions.add(OPTION_OPTIMISTIC);
|
||||||
|
|
|
@ -23,12 +23,16 @@ import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
import java.util.LinkedHashSet;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.TreeSet;
|
||||||
|
|
||||||
import javax.transaction.Status;
|
import javax.transaction.Status;
|
||||||
import javax.transaction.Synchronization;
|
import javax.transaction.Synchronization;
|
||||||
import javax.transaction.Transaction;
|
import javax.transaction.Transaction;
|
||||||
|
@ -109,6 +113,9 @@ public abstract class AbstractBrokerFactory
|
||||||
// and later identified
|
// and later identified
|
||||||
private Object _poolKey;
|
private Object _poolKey;
|
||||||
|
|
||||||
|
// Set of properties supported for the EntityManagerFactory
|
||||||
|
private Set<String> _supportedPropertyNames = new TreeSet<String>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return an internal factory pool key for the given configuration.
|
* Return an internal factory pool key for the given configuration.
|
||||||
*
|
*
|
||||||
|
@ -427,6 +434,45 @@ public abstract class AbstractBrokerFactory
|
||||||
return props;
|
return props;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getAllProperties() {
|
||||||
|
Map<String, String> propertiesMap = _conf.getAllProperties();
|
||||||
|
Properties properties = getProperties();
|
||||||
|
Set<Object> propKeys = properties.keySet();
|
||||||
|
for (Object key : propKeys) {
|
||||||
|
String keyString = (String) key;
|
||||||
|
propertiesMap.put(keyString, (String) properties
|
||||||
|
.getProperty(keyString));
|
||||||
|
}
|
||||||
|
|
||||||
|
return propertiesMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<String> getSupportedProperties() {
|
||||||
|
if (_supportedPropertyNames.isEmpty()) {
|
||||||
|
synchronized (_supportedPropertyNames) {
|
||||||
|
if (_supportedPropertyNames.isEmpty()) {
|
||||||
|
_supportedPropertyNames.add("AutoClear");
|
||||||
|
_supportedPropertyNames.add("AutoDetach");
|
||||||
|
_supportedPropertyNames.add("DetachState");
|
||||||
|
_supportedPropertyNames.add("IgnoreChanges");
|
||||||
|
_supportedPropertyNames.add("LockTimeout");
|
||||||
|
_supportedPropertyNames.add("Multithreaded");
|
||||||
|
_supportedPropertyNames.add("NontransactionalRead");
|
||||||
|
_supportedPropertyNames.add("NontransactionalWrite");
|
||||||
|
_supportedPropertyNames.add("Optimistic");
|
||||||
|
_supportedPropertyNames.add("RestoreState");
|
||||||
|
_supportedPropertyNames.add("RetainState");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Set<String> supportedProperties = new LinkedHashSet<String>();
|
||||||
|
for (String propertyName : _supportedPropertyNames) {
|
||||||
|
supportedProperties.addAll(_conf.getPropertyKeys(propertyName));
|
||||||
|
}
|
||||||
|
|
||||||
|
return supportedProperties;
|
||||||
|
}
|
||||||
|
|
||||||
public Object getUserObject(Object key) {
|
public Object getUserObject(Object key) {
|
||||||
lock();
|
lock();
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -19,6 +19,9 @@
|
||||||
package org.apache.openjpa.kernel;
|
package org.apache.openjpa.kernel;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import javax.transaction.Synchronization;
|
import javax.transaction.Synchronization;
|
||||||
|
|
||||||
import org.apache.openjpa.ee.ManagedRuntime;
|
import org.apache.openjpa.ee.ManagedRuntime;
|
||||||
|
@ -189,6 +192,24 @@ public interface Broker
|
||||||
*/
|
*/
|
||||||
public void setAutoDetach(int flag, boolean on);
|
public void setAutoDetach(int flag, boolean on);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve the current properties for this broker Some of these properties
|
||||||
|
* may have been changed from the original configuration.
|
||||||
|
*
|
||||||
|
* @return the changed properties
|
||||||
|
*
|
||||||
|
* @since 2.0.0
|
||||||
|
*/
|
||||||
|
public Map<String, String> getProperties();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the supported properties for this broker as property keys. If a
|
||||||
|
* property has multiple keys, all keys will be returned.
|
||||||
|
*
|
||||||
|
* @since 2.0.0
|
||||||
|
*/
|
||||||
|
public Set<String> getSupportedProperties();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether to treat relations to detached instances during persist
|
* Whether to treat relations to detached instances during persist
|
||||||
* operations as new or as pseudo-hollow instances.
|
* operations as new or as pseudo-hollow instances.
|
||||||
|
|
|
@ -19,7 +19,9 @@
|
||||||
package org.apache.openjpa.kernel;
|
package org.apache.openjpa.kernel;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.apache.openjpa.conf.OpenJPAConfiguration;
|
import org.apache.openjpa.conf.OpenJPAConfiguration;
|
||||||
import org.apache.openjpa.lib.util.Closeable;
|
import org.apache.openjpa.lib.util.Closeable;
|
||||||
|
@ -43,6 +45,22 @@ public interface BrokerFactory
|
||||||
*/
|
*/
|
||||||
public Properties getProperties();
|
public Properties getProperties();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return all of the configured properties plus those returned in
|
||||||
|
* @see #getProperties().
|
||||||
|
*
|
||||||
|
* @since 2.0.0
|
||||||
|
*/
|
||||||
|
public Map<String, String> getAllProperties();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return all of the supported properties as a set of keys. If a property
|
||||||
|
* has multiple keys, all keys will be returned.
|
||||||
|
*
|
||||||
|
* @since 2.0.0
|
||||||
|
*/
|
||||||
|
public Set<String> getSupportedProperties();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Put the specified key-value pair into the map of user objects.
|
* Put the specified key-value pair into the map of user objects.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -37,6 +37,7 @@ import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.TreeSet;
|
||||||
import java.util.concurrent.locks.LockSupport;
|
import java.util.concurrent.locks.LockSupport;
|
||||||
import java.util.concurrent.locks.ReentrantLock;
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
|
|
||||||
|
@ -59,6 +60,7 @@ import org.apache.openjpa.event.RemoteCommitEventManager;
|
||||||
import org.apache.openjpa.event.TransactionEvent;
|
import org.apache.openjpa.event.TransactionEvent;
|
||||||
import org.apache.openjpa.event.TransactionEventManager;
|
import org.apache.openjpa.event.TransactionEventManager;
|
||||||
import org.apache.openjpa.kernel.exps.ExpressionParser;
|
import org.apache.openjpa.kernel.exps.ExpressionParser;
|
||||||
|
import org.apache.openjpa.lib.conf.Value;
|
||||||
import org.apache.openjpa.lib.log.Log;
|
import org.apache.openjpa.lib.log.Log;
|
||||||
import org.apache.openjpa.lib.util.J2DoPrivHelper;
|
import org.apache.openjpa.lib.util.J2DoPrivHelper;
|
||||||
import org.apache.openjpa.lib.util.Localizer;
|
import org.apache.openjpa.lib.util.Localizer;
|
||||||
|
@ -225,6 +227,10 @@ public class BrokerImpl
|
||||||
private boolean _cachePreparedQuery = true;
|
private boolean _cachePreparedQuery = true;
|
||||||
|
|
||||||
|
|
||||||
|
// Map of properties whose values have been changed
|
||||||
|
private Map<String, String> _changedProperties =
|
||||||
|
new HashMap<String, String>();
|
||||||
|
|
||||||
// status
|
// status
|
||||||
private int _flags = 0;
|
private int _flags = 0;
|
||||||
|
|
||||||
|
@ -244,6 +250,9 @@ public class BrokerImpl
|
||||||
private transient boolean _initializeWasInvoked = false;
|
private transient boolean _initializeWasInvoked = false;
|
||||||
private LinkedList _fcs;
|
private LinkedList _fcs;
|
||||||
|
|
||||||
|
// Set of supported properties
|
||||||
|
private Set<String> _supportedPropertyNames;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the persistence manager's authentication. This is the first
|
* Set the persistence manager's authentication. This is the first
|
||||||
* method called after construction.
|
* method called after construction.
|
||||||
|
@ -461,6 +470,8 @@ public class BrokerImpl
|
||||||
public void setIgnoreChanges(boolean val) {
|
public void setIgnoreChanges(boolean val) {
|
||||||
assertOpen();
|
assertOpen();
|
||||||
_ignoreChanges = val;
|
_ignoreChanges = val;
|
||||||
|
_changedProperties.put("IgnoreChanges", String
|
||||||
|
.valueOf(_ignoreChanges));
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean getNontransactionalRead() {
|
public boolean getNontransactionalRead() {
|
||||||
|
@ -479,6 +490,8 @@ public class BrokerImpl
|
||||||
("nontrans-read-not-supported"));
|
("nontrans-read-not-supported"));
|
||||||
|
|
||||||
_nontransRead = val;
|
_nontransRead = val;
|
||||||
|
_changedProperties.put("NontransactionalRead", String
|
||||||
|
.valueOf(_nontransRead));
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean getNontransactionalWrite() {
|
public boolean getNontransactionalWrite() {
|
||||||
|
@ -491,6 +504,8 @@ public class BrokerImpl
|
||||||
throw new UserException(_loc.get("illegal-op-in-prestore"));
|
throw new UserException(_loc.get("illegal-op-in-prestore"));
|
||||||
|
|
||||||
_nontransWrite = val;
|
_nontransWrite = val;
|
||||||
|
_changedProperties.put("NontransactionalWrite", String
|
||||||
|
.valueOf(_nontransWrite));
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean getOptimistic() {
|
public boolean getOptimistic() {
|
||||||
|
@ -509,6 +524,8 @@ public class BrokerImpl
|
||||||
("optimistic-not-supported"));
|
("optimistic-not-supported"));
|
||||||
|
|
||||||
_optimistic = val;
|
_optimistic = val;
|
||||||
|
_changedProperties.put("Optimistic", String
|
||||||
|
.valueOf(_optimistic));
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getRestoreState() {
|
public int getRestoreState() {
|
||||||
|
@ -522,6 +539,8 @@ public class BrokerImpl
|
||||||
"Restore"));
|
"Restore"));
|
||||||
|
|
||||||
_restoreState = val;
|
_restoreState = val;
|
||||||
|
_changedProperties.put("RestoreState", String
|
||||||
|
.valueOf(_restoreState));
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean getRetainState() {
|
public boolean getRetainState() {
|
||||||
|
@ -533,6 +552,8 @@ public class BrokerImpl
|
||||||
if ((_flags & FLAG_PRESTORING) != 0)
|
if ((_flags & FLAG_PRESTORING) != 0)
|
||||||
throw new UserException(_loc.get("illegal-op-in-prestore"));
|
throw new UserException(_loc.get("illegal-op-in-prestore"));
|
||||||
_retainState = val;
|
_retainState = val;
|
||||||
|
_changedProperties.put("RetainState", String
|
||||||
|
.valueOf(_retainState));
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getAutoClear() {
|
public int getAutoClear() {
|
||||||
|
@ -542,6 +563,7 @@ public class BrokerImpl
|
||||||
public void setAutoClear(int val) {
|
public void setAutoClear(int val) {
|
||||||
assertOpen();
|
assertOpen();
|
||||||
_autoClear = val;
|
_autoClear = val;
|
||||||
|
_changedProperties.put("AutoClear", String.valueOf(_autoClear));
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getAutoDetach() {
|
public int getAutoDetach() {
|
||||||
|
@ -551,6 +573,8 @@ public class BrokerImpl
|
||||||
public void setAutoDetach(int detachFlags) {
|
public void setAutoDetach(int detachFlags) {
|
||||||
assertOpen();
|
assertOpen();
|
||||||
_autoDetach = detachFlags;
|
_autoDetach = detachFlags;
|
||||||
|
_changedProperties.put("AutoDetach", String
|
||||||
|
.valueOf(_autoDetach));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAutoDetach(int detachFlag, boolean on) {
|
public void setAutoDetach(int detachFlag, boolean on) {
|
||||||
|
@ -559,6 +583,8 @@ public class BrokerImpl
|
||||||
_autoDetach |= detachFlag;
|
_autoDetach |= detachFlag;
|
||||||
else
|
else
|
||||||
_autoDetach &= ~detachFlag;
|
_autoDetach &= ~detachFlag;
|
||||||
|
_changedProperties.put("AutoDetach", String
|
||||||
|
.valueOf(_autoDetach));
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getDetachState() {
|
public int getDetachState() {
|
||||||
|
@ -568,6 +594,8 @@ public class BrokerImpl
|
||||||
public void setDetachState(int mode) {
|
public void setDetachState(int mode) {
|
||||||
assertOpen();
|
assertOpen();
|
||||||
_detachState = mode;
|
_detachState = mode;
|
||||||
|
_changedProperties.put("DetachState", String
|
||||||
|
.valueOf(_detachState));
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isDetachedNew() {
|
public boolean isDetachedNew() {
|
||||||
|
@ -638,9 +666,69 @@ public class BrokerImpl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////
|
public Map<String, String> getProperties() {
|
||||||
|
Map<String, String> currentProperties = _conf.getAllProperties();
|
||||||
|
|
||||||
|
// Update the properties from the config with properties that may
|
||||||
|
// have changed for this broker
|
||||||
|
if (!_changedProperties.isEmpty()) {
|
||||||
|
Set<String> changedKeys = _changedProperties.keySet();
|
||||||
|
for (String changedKey : changedKeys) {
|
||||||
|
Value value = _conf.getValue(changedKey);
|
||||||
|
String valueKey = value.getLoadKey();
|
||||||
|
if (valueKey == null) {
|
||||||
|
valueKey = "openjpa." + value.getProperty();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentProperties.containsKey(valueKey)) {
|
||||||
|
currentProperties.put(valueKey, _changedProperties
|
||||||
|
.get(changedKey));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Set<String> equivalentKeys = value.getEquivalentKeys();
|
||||||
|
if (!equivalentKeys.isEmpty()) {
|
||||||
|
for (String equivalentKey : equivalentKeys) {
|
||||||
|
if (currentProperties.containsKey(equivalentKey)) {
|
||||||
|
currentProperties.put(equivalentKey,
|
||||||
|
_changedProperties.get(changedKey));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return currentProperties;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<String> getSupportedProperties() {
|
||||||
|
if (_supportedPropertyNames == null) {
|
||||||
|
_supportedPropertyNames = new TreeSet<String>();
|
||||||
|
_supportedPropertyNames.add("AutoClear");
|
||||||
|
_supportedPropertyNames.add("AutoDetach");
|
||||||
|
_supportedPropertyNames.add("DetachState");
|
||||||
|
_supportedPropertyNames.add("IgnoreChanges");
|
||||||
|
_supportedPropertyNames.add("LockTimeout");
|
||||||
|
_supportedPropertyNames.add("Multithreaded");
|
||||||
|
_supportedPropertyNames.add("NontransactionalRead");
|
||||||
|
_supportedPropertyNames.add("NontransactionalWrite");
|
||||||
|
_supportedPropertyNames.add("Optimistic");
|
||||||
|
_supportedPropertyNames.add("javax.persistence.query.timeout");
|
||||||
|
_supportedPropertyNames.add("RestoreState");
|
||||||
|
_supportedPropertyNames.add("RetainState");
|
||||||
|
}
|
||||||
|
Set<String> supportedProperties = new LinkedHashSet<String>();
|
||||||
|
for (String propertyName : _supportedPropertyNames) {
|
||||||
|
supportedProperties.addAll(_conf.getPropertyKeys(propertyName));
|
||||||
|
}
|
||||||
|
|
||||||
|
return supportedProperties;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ////////
|
||||||
// Events
|
// Events
|
||||||
//////////
|
// ////////
|
||||||
|
|
||||||
public void addLifecycleListener(Object listener, Class[] classes) {
|
public void addLifecycleListener(Object listener, Class[] classes) {
|
||||||
beginOperation(false);
|
beginOperation(false);
|
||||||
|
|
|
@ -21,6 +21,8 @@ package org.apache.openjpa.kernel;
|
||||||
import java.util.BitSet;
|
import java.util.BitSet;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.apache.openjpa.conf.OpenJPAConfiguration;
|
import org.apache.openjpa.conf.OpenJPAConfiguration;
|
||||||
import org.apache.openjpa.ee.ManagedRuntime;
|
import org.apache.openjpa.ee.ManagedRuntime;
|
||||||
|
@ -178,6 +180,22 @@ public class DelegatingBroker
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getProperties() {
|
||||||
|
try {
|
||||||
|
return _broker.getProperties();
|
||||||
|
} catch (RuntimeException re) {
|
||||||
|
throw translate(re);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<String> getSupportedProperties() {
|
||||||
|
try {
|
||||||
|
return _broker.getSupportedProperties();
|
||||||
|
} catch (RuntimeException re) {
|
||||||
|
throw translate(re);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Object find(Object oid, boolean validate, FindCallbacks call) {
|
public Object find(Object oid, boolean validate, FindCallbacks call) {
|
||||||
try {
|
try {
|
||||||
return _broker.find(oid, validate, call);
|
return _broker.find(oid, validate, call);
|
||||||
|
|
|
@ -18,7 +18,9 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.openjpa.kernel;
|
package org.apache.openjpa.kernel;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.apache.openjpa.conf.OpenJPAConfiguration;
|
import org.apache.openjpa.conf.OpenJPAConfiguration;
|
||||||
import org.apache.openjpa.util.RuntimeExceptionTranslator;
|
import org.apache.openjpa.util.RuntimeExceptionTranslator;
|
||||||
|
@ -112,6 +114,22 @@ public class DelegatingBrokerFactory
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Set<String> getSupportedProperties() {
|
||||||
|
try {
|
||||||
|
return _factory.getSupportedProperties();
|
||||||
|
} catch (RuntimeException re) {
|
||||||
|
throw translate(re);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getAllProperties() {
|
||||||
|
try {
|
||||||
|
return _factory.getAllProperties();
|
||||||
|
} catch (RuntimeException re) {
|
||||||
|
throw translate(re);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Object putUserObject(Object key, Object val) {
|
public Object putUserObject(Object key, Object val) {
|
||||||
try {
|
try {
|
||||||
return _factory.putUserObject(key, val);
|
return _factory.putUserObject(key, val);
|
||||||
|
|
Loading…
Reference in New Issue