Package org.apache.openjpa.lib.conf
Class ConfigurationImpl
java.lang.Object
org.apache.openjpa.lib.conf.ConfigurationImpl
- All Implemented Interfaces:
BeanInfo
,Externalizable
,Serializable
,Cloneable
,Configuration
,ValueListener
,Closeable
- Direct Known Subclasses:
OpenJPAConfigurationImpl
public class ConfigurationImpl
extends Object
implements Configuration, Externalizable, ValueListener
Default implementation of the
Configuration
interface.
Subclasses can choose to obtain configuration
information from JNDI, Properties, a Bean-builder, etc. This class
provides base configuration functionality, including serialization,
the equals
and hashCode
contracts, and default
property loading.
Property descriptors for Value
instances are constructed from
the Localizer
for the package of the configuration class. The
following localized strings will be used for describing a value, where
name is the last token of the value's property string:
- name-name: The name that will be displayed for the option in a user interface; required.
- name-desc: A brief description of the option; required.
- name-type: The type or category name for this option; required.
- name-expert: True if this is an expert option, false otherwise; defaults to false.
- name-values: Set of expected or common values, excluding alias keys; optional.
- name-interface: The class name of an interface whose discoverable implementations should be included in the set of expected or common values; optional.
- name-cat: The hierarchical category for the property name, separated by ".".
- name-displayorder: The order in which the property should be displayer.
- Author:
- Abe White
- See Also:
-
Field Summary
Fields inherited from interface java.beans.BeanInfo
ICON_COLOR_16x16, ICON_COLOR_32x32, ICON_MONO_16x16, ICON_MONO_32x32
Fields inherited from interface org.apache.openjpa.lib.conf.Configuration
ATTRIBUTE_ALLOWED_VALUES, ATTRIBUTE_CATEGORY, ATTRIBUTE_INTERFACE, ATTRIBUTE_ORDER, ATTRIBUTE_TYPE, ATTRIBUTE_XML, INIT_STATE_FREEZING, INIT_STATE_FROZEN, INIT_STATE_LIQUID
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionaddBoolean
(String property) Add the given value to the set of configuration properties.Add the given value to the set of configuration properties.Add the given value to the set of configuration properties.Add the given value to the set of configuration properties.Add the given value to the set of configuration properties.Add the given value to the set of configuration properties.addPluginList
(String property) Add the given value to the set of configuration properties.void
Adds a listener for any property changes.Add the given value to the set of configuration properties.addStringList
(String property) Add the given value to the set of configuration properties.<T extends Value>
TaddValue
(T val) Add the given value to the set of configuration properties.clone()
UsestoProperties(boolean)
andfromProperties(java.util.Map)
to clone configuration.final void
close()
Closes all closeable values and plugins.boolean
Performs an equality check based on equality of values.void
fromProperties
(Map map) Set this Configuration via the given map.BeanInfo[]
Returns the logging channelopenjpa.Runtime
by default.int
int
getIcon
(int kind) getId()
An environment-specific identifier for this configuration.getLog()
Log plugin setting.Return the log for the given category.The log factory.Return the product name.Return the resource that was set via auto-configuration methodssetProperties(java.lang.String)
orsetPropertiesFile(java.io.File)
, or null if none.Gets all known property keys.getPropertyKeys
(String propertyName) Get the set of all known property keys, including any equivalent keys, appropriately prefixed.Gets a class loader that can be additionally used to load custom plugin values.Gets the registered Value for the given propertyName.Value[]
Return the set of allValue
s.int
hashCode()
Computes hash code based on the hashCodes of the values.void
Call the instantiating get methods for all values.boolean
protected boolean
isInvalidProperty
(String propName) Returns true if the specified property name should raise a warning if it is not found in the list of known properties.boolean
Return true if this configuration is immutable.boolean
Automatically load global values from the system'sProductDerivation
s, and from System properties.protected void
preClose()
Invoked by final methodclose()
after invoking theProductDerivation.beforeConfigurationClose(org.apache.openjpa.lib.conf.Configuration)
callbacks but before performing internal close operations.void
Implementation of theExternalizable
interface to read from the properties written bywriteExternal(java.io.ObjectOutput)
.void
Removes a listener for any property changes.boolean
removeValue
(Value val) Remove the given value from the set of configuration properties.void
setDeferResourceLoading
(boolean deferResourceLoading) void
An environment-specific identifier for this configuration.void
Log plugin setting.void
setLogFactory
(LogFactory logFactory) The log factory.void
setProductName
(String name) Set the product name.void
setProperties
(String resourceName) This method loads the named resource as a properties file.void
setPropertiesFile
(File file) This method loads the named file as a properties file.void
setReadOnly
(int newState) Lock down the configuration's state.void
Sets an additional classloader to load custom plugin values.toProperties
(boolean storeDefaults) An internal method to retrieve properties, to support 2 public methods, getAllProperties() and toProperties(boolean).static String
ConvertpropName
to a lowercase-with-hyphens-style string.void
valueChanged
(Value val) Callback used byValue
objects to notify listener of change.void
Implementation of theExternalizable
interface to write the properties returned bytoProperties(boolean)
.
-
Field Details
-
logFactoryPlugin
-
id
-
-
Constructor Details
-
ConfigurationImpl
public ConfigurationImpl()Default constructor. Attempts to load default properties through system's configuredProductDerivation
s. -
ConfigurationImpl
public ConfigurationImpl(boolean loadGlobals) Constructor.- Parameters:
loadGlobals
- whether to attempt to load the global properties
-
-
Method Details
-
loadGlobals
public boolean loadGlobals()Automatically load global values from the system'sProductDerivation
s, and from System properties. -
getProductName
Description copied from interface:Configuration
Return the product name. Defaults toopenjpa
.- Specified by:
getProductName
in interfaceConfiguration
-
setProductName
Description copied from interface:Configuration
Set the product name.- Specified by:
setProductName
in interfaceConfiguration
-
getLogFactory
Description copied from interface:Configuration
The log factory. If no log factory has been set explicitly, this method will create one.- Specified by:
getLogFactory
in interfaceConfiguration
-
setLogFactory
Description copied from interface:Configuration
The log factory.- Specified by:
setLogFactory
in interfaceConfiguration
-
getLog
Description copied from interface:Configuration
Log plugin setting.- Specified by:
getLog
in interfaceConfiguration
-
setLog
Description copied from interface:Configuration
Log plugin setting.- Specified by:
setLog
in interfaceConfiguration
-
getLog
Description copied from interface:Configuration
Return the log for the given category.- Specified by:
getLog
in interfaceConfiguration
- See Also:
-
getId
Description copied from interface:Configuration
An environment-specific identifier for this configuration. This might correspond to a JPA persistence-unit name, or to some other more-unique value available in the current environment.- Specified by:
getId
in interfaceConfiguration
-
setId
Description copied from interface:Configuration
An environment-specific identifier for this configuration. This might correspond to a JPA persistence-unit name, or to some other more-unique value available in the current environment.- Specified by:
setId
in interfaceConfiguration
-
getConfigurationLog
Returns the logging channelopenjpa.Runtime
by default.- Specified by:
getConfigurationLog
in interfaceConfiguration
-
getValues
Description copied from interface:Configuration
Return the set of allValue
s.- Specified by:
getValues
in interfaceConfiguration
-
getValue
Gets the registered Value for the given propertyName.- Specified by:
getValue
in interfaceConfiguration
- Parameters:
property
- can be either fully-qualified name or the simple name with which the value has been registered. A value may have multiple equivalent names and this method searches with all equivalent names.
-
setReadOnly
public void setReadOnly(int newState) Description copied from interface:Configuration
Lock down the configuration's state. Attempting to set state on a read-only configuration results in an exception.- Specified by:
setReadOnly
in interfaceConfiguration
-
isDeferResourceLoading
public boolean isDeferResourceLoading() -
setDeferResourceLoading
public void setDeferResourceLoading(boolean deferResourceLoading) -
instantiateAll
public void instantiateAll()Description copied from interface:Configuration
Call the instantiating get methods for all values. Up-front instantiation allows one to avoid the synchronization necessary with lazy instantiation.- Specified by:
instantiateAll
in interfaceConfiguration
-
isReadOnly
public boolean isReadOnly()Description copied from interface:Configuration
Return true if this configuration is immutable.- Specified by:
isReadOnly
in interfaceConfiguration
-
addPropertyChangeListener
Description copied from interface:Configuration
Adds a listener for any property changes. The property events fired will not include the old value.- Specified by:
addPropertyChangeListener
in interfaceConfiguration
- Parameters:
listener
- the listener to receive notification of property changes
-
removePropertyChangeListener
Description copied from interface:Configuration
Removes a listener for any property changes.- Specified by:
removePropertyChangeListener
in interfaceConfiguration
- Parameters:
listener
- the listener to remove
-
valueChanged
Description copied from interface:ValueListener
Callback used byValue
objects to notify listener of change.- Specified by:
valueChanged
in interfaceValueListener
-
close
public final void close()Closes all closeable values and plugins.- Specified by:
close
in interfaceCloseable
- Specified by:
close
in interfaceConfiguration
-
preClose
protected void preClose()Invoked by final methodclose()
after invoking theProductDerivation.beforeConfigurationClose(org.apache.openjpa.lib.conf.Configuration)
callbacks but before performing internal close operations.- Since:
- 0.9.7
-
getAdditionalBeanInfo
- Specified by:
getAdditionalBeanInfo
in interfaceBeanInfo
-
getBeanDescriptor
- Specified by:
getBeanDescriptor
in interfaceBeanInfo
-
getDefaultEventIndex
public int getDefaultEventIndex()- Specified by:
getDefaultEventIndex
in interfaceBeanInfo
-
getDefaultPropertyIndex
public int getDefaultPropertyIndex()- Specified by:
getDefaultPropertyIndex
in interfaceBeanInfo
-
getEventSetDescriptors
- Specified by:
getEventSetDescriptors
in interfaceBeanInfo
-
getIcon
-
getMethodDescriptors
- Specified by:
getMethodDescriptors
in interfaceBeanInfo
-
getPropertyDescriptors
- Specified by:
getPropertyDescriptors
in interfaceBeanInfo
-
toProperties
An internal method to retrieve properties, to support 2 public methods, getAllProperties() and toProperties(boolean).- Specified by:
toProperties
in interfaceConfiguration
- Parameters:
storeDefaults
- whether or not to retrieve a property if its value is the default value.
-
fromProperties
Description copied from interface:Configuration
Set this Configuration via the given map. Any keys missing from the given map will not be set. Note that changes made to this map will not be automatically reflected in this Configuration object. IMPORTANT: If the map contains instantiated objects(rather than string values), only the string representation of those objects are considered in this configuration'sequals
andhashCode
methods. If the object's property has no string form(such as anObjectValue
), the object is not part of the equality and hashing calculations.- Specified by:
fromProperties
in interfaceConfiguration
-
getPropertyKeys
Description copied from interface:Configuration
Get the set of all known property keys, including any equivalent keys, appropriately prefixed.- Specified by:
getPropertyKeys
in interfaceConfiguration
- Parameters:
propertyName
- the name of the property for which the keys are to be retrieved.
-
getPropertyKeys
Gets all known property keys. The keys are harvested from the property names (including the equivalent names) of the registered values. A key may be prefixed if the corresponding property name was without a prefix.- Specified by:
getPropertyKeys
in interfaceConfiguration
- See Also:
-
The Values that are marked private are filtered out.
-
isInvalidProperty
Returns true if the specified property name should raise a warning if it is not found in the list of known properties. -
setProperties
This method loads the named resource as a properties file. It is useful for auto-configuration tools so users can specify aproperties
value with the name of a resource.- Throws:
IOException
-
setPropertiesFile
This method loads the named file as a properties file. It is useful for auto-configuration tools so users can specify apropertiesFile
value with the name of a file.- Throws:
IOException
-
getPropertiesResource
Return the resource that was set via auto-configuration methodssetProperties(java.lang.String)
orsetPropertiesFile(java.io.File)
, or null if none. -
equals
-
hashCode
public int hashCode() -
toXMLName
ConvertpropName
to a lowercase-with-hyphens-style string. This algorithm is only designed for mixes of uppercase and lowercase letters and lone digits. A more sophisticated conversion should probably be handled by a proper parser generator or regular expressions. -
readExternal
Implementation of theExternalizable
interface to read from the properties written bywriteExternal(java.io.ObjectOutput)
.- Specified by:
readExternal
in interfaceExternalizable
- Throws:
IOException
ClassNotFoundException
-
writeExternal
Implementation of theExternalizable
interface to write the properties returned bytoProperties(boolean)
.- Specified by:
writeExternal
in interfaceExternalizable
- Throws:
IOException
-
clone
UsestoProperties(boolean)
andfromProperties(java.util.Map)
to clone configuration.- Specified by:
clone
in interfaceConfiguration
- Overrides:
clone
in classObject
-
removeValue
Description copied from interface:Configuration
Remove the given value from the set of configuration properties.- Specified by:
removeValue
in interfaceConfiguration
-
addValue
Description copied from interface:Configuration
Add the given value to the set of configuration properties. This method replaces any existing value under the same property.- Specified by:
addValue
in interfaceConfiguration
-
addString
Add the given value to the set of configuration properties. -
addFile
Add the given value to the set of configuration properties. -
addInt
Add the given value to the set of configuration properties. -
addDouble
Add the given value to the set of configuration properties. -
addBoolean
Add the given value to the set of configuration properties. -
addStringList
Add the given value to the set of configuration properties. -
addObject
Add the given value to the set of configuration properties. -
addPlugin
Add the given value to the set of configuration properties. -
addPluginList
Add the given value to the set of configuration properties. -
getUserClassLoader
Description copied from interface:Configuration
Gets a class loader that can be additionally used to load custom plugin values.- Specified by:
getUserClassLoader
in interfaceConfiguration
- Returns:
- an additional classloader for loading custom plugins. Can be null.
- See Also:
-
setUserClassLoader
Description copied from interface:Configuration
Sets an additional classloader to load custom plugin values. In OSGi environment, we internally set the bundle class loader as the user class loader.- Specified by:
setUserClassLoader
in interfaceConfiguration
- Parameters:
cl
- a class loader to load custom plugin values
-