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 Details

  • Constructor Details

    • ConfigurationImpl

      public ConfigurationImpl()
      Default constructor. Attempts to load default properties through system's configured ProductDerivations.
    • 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's ProductDerivations, and from System properties.
    • getProductName

      public String getProductName()
      Description copied from interface: Configuration
      Return the product name. Defaults to openjpa.
      Specified by:
      getProductName in interface Configuration
    • setProductName

      public void setProductName(String name)
      Description copied from interface: Configuration
      Set the product name.
      Specified by:
      setProductName in interface Configuration
    • getLogFactory

      public LogFactory 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 interface Configuration
    • setLogFactory

      public void setLogFactory(LogFactory logFactory)
      Description copied from interface: Configuration
      The log factory.
      Specified by:
      setLogFactory in interface Configuration
    • getLog

      public String getLog()
      Description copied from interface: Configuration
      Log plugin setting.
      Specified by:
      getLog in interface Configuration
    • setLog

      public void setLog(String log)
      Description copied from interface: Configuration
      Log plugin setting.
      Specified by:
      setLog in interface Configuration
    • getLog

      public Log getLog(String category)
      Description copied from interface: Configuration
      Return the log for the given category.
      Specified by:
      getLog in interface Configuration
      See Also:
    • getId

      public String 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 interface Configuration
    • setId

      public void setId(String id)
      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 interface Configuration
    • getConfigurationLog

      public Log getConfigurationLog()
      Returns the logging channel openjpa.Runtime by default.
      Specified by:
      getConfigurationLog in interface Configuration
    • getValues

      public Value[] getValues()
      Description copied from interface: Configuration
      Return the set of all Values.
      Specified by:
      getValues in interface Configuration
    • getValue

      public Value getValue(String property)
      Gets the registered Value for the given propertyName.
      Specified by:
      getValue in interface Configuration
      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 interface Configuration
    • 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 interface Configuration
    • isReadOnly

      public boolean isReadOnly()
      Description copied from interface: Configuration
      Return true if this configuration is immutable.
      Specified by:
      isReadOnly in interface Configuration
    • addPropertyChangeListener

      public void addPropertyChangeListener(PropertyChangeListener listener)
      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 interface Configuration
      Parameters:
      listener - the listener to receive notification of property changes
    • removePropertyChangeListener

      public void removePropertyChangeListener(PropertyChangeListener listener)
      Description copied from interface: Configuration
      Removes a listener for any property changes.
      Specified by:
      removePropertyChangeListener in interface Configuration
      Parameters:
      listener - the listener to remove
    • valueChanged

      public void valueChanged(Value val)
      Description copied from interface: ValueListener
      Callback used by Value objects to notify listener of change.
      Specified by:
      valueChanged in interface ValueListener
    • close

      public final void close()
      Closes all closeable values and plugins.
      Specified by:
      close in interface Closeable
      Specified by:
      close in interface Configuration
    • preClose

      protected void preClose()
      Invoked by final method close() after invoking the ProductDerivation.beforeConfigurationClose(org.apache.openjpa.lib.conf.Configuration) callbacks but before performing internal close operations.
      Since:
      0.9.7
    • getAdditionalBeanInfo

      public BeanInfo[] getAdditionalBeanInfo()
      Specified by:
      getAdditionalBeanInfo in interface BeanInfo
    • getBeanDescriptor

      public BeanDescriptor getBeanDescriptor()
      Specified by:
      getBeanDescriptor in interface BeanInfo
    • getDefaultEventIndex

      public int getDefaultEventIndex()
      Specified by:
      getDefaultEventIndex in interface BeanInfo
    • getDefaultPropertyIndex

      public int getDefaultPropertyIndex()
      Specified by:
      getDefaultPropertyIndex in interface BeanInfo
    • getEventSetDescriptors

      public EventSetDescriptor[] getEventSetDescriptors()
      Specified by:
      getEventSetDescriptors in interface BeanInfo
    • getIcon

      public Image getIcon(int kind)
      Specified by:
      getIcon in interface BeanInfo
    • getMethodDescriptors

      public MethodDescriptor[] getMethodDescriptors()
      Specified by:
      getMethodDescriptors in interface BeanInfo
    • getPropertyDescriptors

      public PropertyDescriptor[] getPropertyDescriptors()
      Specified by:
      getPropertyDescriptors in interface BeanInfo
    • toProperties

      public Map toProperties(boolean storeDefaults)
      An internal method to retrieve properties, to support 2 public methods, getAllProperties() and toProperties(boolean).
      Specified by:
      toProperties in interface Configuration
      Parameters:
      storeDefaults - whether or not to retrieve a property if its value is the default value.
    • fromProperties

      public void fromProperties(Map map)
      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's equals and hashCode methods. If the object's property has no string form(such as an ObjectValue), the object is not part of the equality and hashing calculations.
      Specified by:
      fromProperties in interface Configuration
    • getPropertyKeys

      public List<String> getPropertyKeys(String propertyName)
      Description copied from interface: Configuration
      Get the set of all known property keys, including any equivalent keys, appropriately prefixed.
      Specified by:
      getPropertyKeys in interface Configuration
      Parameters:
      propertyName - the name of the property for which the keys are to be retrieved.
    • getPropertyKeys

      public Set<String> 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 interface Configuration
      See Also:
      • The Values that are marked private are filtered out.
    • isInvalidProperty

      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.
    • setProperties

      public void setProperties(String resourceName) throws IOException
      This method loads the named resource as a properties file. It is useful for auto-configuration tools so users can specify a properties value with the name of a resource.
      Throws:
      IOException
    • setPropertiesFile

      public void setPropertiesFile(File file) throws IOException
      This method loads the named file as a properties file. It is useful for auto-configuration tools so users can specify a propertiesFile value with the name of a file.
      Throws:
      IOException
    • getPropertiesResource

      public String getPropertiesResource()
      Return the resource that was set via auto-configuration methods setProperties(java.lang.String) or setPropertiesFile(java.io.File), or null if none.
    • equals

      public boolean equals(Object other)
      Performs an equality check based on equality of values. Equality of Values varies if the Value is dynamic.
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Computes hash code based on the hashCodes of the values. HashCode of a Value varies if the Value is dynamic.
      Overrides:
      hashCode in class Object
    • toXMLName

      public static String toXMLName(String propName)
      Convert propName 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

      public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
      Implementation of the Externalizable interface to read from the properties written by writeExternal(java.io.ObjectOutput).
      Specified by:
      readExternal in interface Externalizable
      Throws:
      IOException
      ClassNotFoundException
    • writeExternal

      public void writeExternal(ObjectOutput out) throws IOException
      Implementation of the Externalizable interface to write the properties returned by toProperties(boolean).
      Specified by:
      writeExternal in interface Externalizable
      Throws:
      IOException
    • clone

      public Object clone()
      Uses toProperties(boolean) and fromProperties(java.util.Map) to clone configuration.
      Specified by:
      clone in interface Configuration
      Overrides:
      clone in class Object
    • removeValue

      public boolean removeValue(Value val)
      Description copied from interface: Configuration
      Remove the given value from the set of configuration properties.
      Specified by:
      removeValue in interface Configuration
    • addValue

      public <T extends Value> T addValue(T val)
      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 interface Configuration
    • addString

      public StringValue addString(String property)
      Add the given value to the set of configuration properties.
    • addFile

      public FileValue addFile(String property)
      Add the given value to the set of configuration properties.
    • addInt

      public IntValue addInt(String property)
      Add the given value to the set of configuration properties.
    • addDouble

      public DoubleValue addDouble(String property)
      Add the given value to the set of configuration properties.
    • addBoolean

      public BooleanValue addBoolean(String property)
      Add the given value to the set of configuration properties.
    • addStringList

      public StringListValue addStringList(String property)
      Add the given value to the set of configuration properties.
    • addObject

      public ObjectValue addObject(String property)
      Add the given value to the set of configuration properties.
    • addPlugin

      public PluginValue addPlugin(String property, boolean singleton)
      Add the given value to the set of configuration properties.
    • addPluginList

      public PluginListValue addPluginList(String property)
      Add the given value to the set of configuration properties.
    • getUserClassLoader

      public ClassLoader getUserClassLoader()
      Description copied from interface: Configuration
      Gets a class loader that can be additionally used to load custom plugin values.
      Specified by:
      getUserClassLoader in interface Configuration
      Returns:
      an additional classloader for loading custom plugins. Can be null.
      See Also:
    • setUserClassLoader

      public void setUserClassLoader(ClassLoader cl)
      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 interface Configuration
      Parameters:
      cl - a class loader to load custom plugin values