Class ConfigurationImpl

  • All Implemented Interfaces:
    java.beans.BeanInfo, java.io.Externalizable, java.io.Serializable, java.lang.Cloneable, Configuration, ValueListener, Closeable
    Direct Known Subclasses:
    OpenJPAConfigurationImpl

    public class ConfigurationImpl
    extends java.lang.Object
    implements Configuration, java.io.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:
    Serialized Form
    • Constructor Detail

      • 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 Detail

      • loadGlobals

        public boolean loadGlobals()
        Automatically load global values from the system's ProductDerivations, and from System properties.
      • getProductName

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

        public void setProductName​(java.lang.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
      • getLog

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

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

        public java.lang.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​(java.lang.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
      • getValue

        public Value getValue​(java.lang.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​(java.beans.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​(java.beans.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
      • close

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

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

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

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

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

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

        public java.awt.Image getIcon​(int kind)
        Specified by:
        getIcon in interface java.beans.BeanInfo
      • getMethodDescriptors

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

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

        public java.util.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​(java.util.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 java.util.List<java.lang.String> getPropertyKeys​(java.lang.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 java.util.Set<java.lang.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 are filtered out.
      • isInvalidProperty

        protected boolean isInvalidProperty​(java.lang.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​(java.lang.String resourceName)
                           throws java.io.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:
        java.io.IOException
      • setPropertiesFile

        public void setPropertiesFile​(java.io.File file)
                               throws java.io.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:
        java.io.IOException
      • equals

        public boolean equals​(java.lang.Object other)
        Performs an equality check based on equality of values. Equality of Values varies if the Value is dynamic.
        Overrides:
        equals in class java.lang.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 java.lang.Object
      • toXMLName

        public static java.lang.String toXMLName​(java.lang.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​(java.io.ObjectInput in)
                          throws java.io.IOException,
                                 java.lang.ClassNotFoundException
        Implementation of the Externalizable interface to read from the properties written by writeExternal(java.io.ObjectOutput).
        Specified by:
        readExternal in interface java.io.Externalizable
        Throws:
        java.io.IOException
        java.lang.ClassNotFoundException
      • writeExternal

        public void writeExternal​(java.io.ObjectOutput out)
                           throws java.io.IOException
        Implementation of the Externalizable interface to write the properties returned by toProperties(boolean).
        Specified by:
        writeExternal in interface java.io.Externalizable
        Throws:
        java.io.IOException
      • 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​(java.lang.String property)
        Add the given value to the set of configuration properties.
      • addFile

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

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

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

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

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

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

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

        public PluginListValue addPluginList​(java.lang.String property)
        Add the given value to the set of configuration properties.
      • setUserClassLoader

        public void setUserClassLoader​(java.lang.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