Interface ConfigurationService

  • All Implemented Interfaces:

    
    public interface ConfigurationService
    
                        

    The configuration services provides a centralized approach of storing persistent configuration data.

    Author:

    Emil Ivov

    Lyubomir Marinov

    Dmitri Melnikov

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
    • Field Summary

      Fields 
      Modifier and Type Field Description
    • Constructor Summary

      Constructors 
      Constructor Description
    • Enum Constant Summary

      Enum Constants 
      Enum Constant Description
    • Method Summary

      Modifier and Type Method Description
      abstract void setProperty(String propertyName, Object property) Sets the property with the specified name to the specified value.
      abstract void setProperty(String propertyName, Object property, boolean isSystem) Sets the property with the specified name to the specified value.
      abstract void setProperties(Map<String, Object> properties) Sets a set of specific properties to specific values as a batch operation meaning that first VetoableChangeListeners are asked to approve the modifications of the specified properties to the specified values, then the modifications are performed if no complaints have been raised in the form of PropertyVetoException and finally PropertyChangeListeners are notified about the changes of each of the specified properties.
      abstract Object getProperty(String propertyName) Returns the value of the property with the specified name or null if no such property exists.
      abstract void removeProperty(String propertyName) Removes the property with the specified name.
      abstract List<String> getAllPropertyNames() Returns a List of Strings containing all property names.
      abstract List<String> getPropertyNamesByPrefix(String prefix, boolean exactPrefixMatch) Returns a List of Strings containing all property names that have the specified prefix.
      abstract List<String> getPropertyNamesBySuffix(String suffix) Returns a List of Strings containing the property names that have the specified suffix.
      abstract String getString(String propertyName) Returns the String value of the specified property and null in case no property value was mapped against the specified propertyName, or in case the returned property string had zero length or contained whitespaces only.
      abstract String getString(String propertyName, String defaultValue) Returns the String value of the specified property and null in case no property value was mapped against the specified propertyName, or in case the returned property string had zero length or contained whitespaces only.
      abstract boolean getBoolean(String propertyName, boolean defaultValue) Gets the value of a specific property as a boolean.
      abstract int getInt(String propertyName, int defaultValue) Gets the value of a specific property as a signed decimal integer.
      abstract double getDouble(String propertyName, double defaultValue) Gets the value of a specific property as a double.
      abstract long getLong(String propertyName, long defaultValue) Gets the value of a specific property as a signed decimal long integer.
      abstract void addPropertyChangeListener(PropertyChangeListener listener) Adds a PropertyChangeListener to the listener list.
      abstract void removePropertyChangeListener(PropertyChangeListener listener) Removes a PropertyChangeListener from the listener list.
      abstract void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) Adds a PropertyChangeListener to the listener list for a specific property.
      abstract void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) Removes a PropertyChangeListener from the listener list for a specific property.
      abstract void addVetoableChangeListener(ConfigVetoableChangeListener listener) Adds a VetoableChangeListener to the listener list.
      abstract void removeVetoableChangeListener(ConfigVetoableChangeListener listener) Removes a VetoableChangeListener from the listener list.
      abstract void addVetoableChangeListener(String propertyName, ConfigVetoableChangeListener listener) Adds a VetoableChangeListener to the listener list for a specific property.
      abstract void removeVetoableChangeListener(String propertyName, ConfigVetoableChangeListener listener) Removes a VetoableChangeListener from the listener list for a specific property.
      abstract void storeConfiguration() Store the current set of properties back to the configuration file.
      abstract void reloadConfiguration() Deletes the current configuration and reloads it from the configuration file.
      abstract void purgeStoredConfiguration() Removes all locally stored properties leaving an empty configuration.
      abstract void logConfigurationProperties(String passwordPattern) Prints all configuration properties on 'INFO' logging level *except* that properties which name matches given regular expression will have their values masked with ***.
      abstract String getScHomeDirName() Returns the name of the directory where Jitsi is to store user specific data such as configuration files, message and call history as well as is bundle repository.
      abstract String getScHomeDirLocation() Returns the location of the directory where Jitsi is to store user specific data such as configuration files, message and call history as well as is bundle repository.
      abstract String getConfigurationFilename() Use with caution!
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

    • Method Detail

      • setProperty

         abstract void setProperty(String propertyName, Object property)

        Sets the property with the specified name to the specified value. Calling this method would first trigger a PropertyChangeEvent that will be dispatched to all VetoableChangeListeners. In case no complaints (PropertyVetoException) have been received, the property will be actually changed and a PropertyChangeEvent will be dispatched.

        Parameters:
        propertyName - the name of the property to change.
        property - the new value of the specified property.
      • setProperty

         abstract void setProperty(String propertyName, Object property, boolean isSystem)

        Sets the property with the specified name to the specified value. Calling this method would first trigger a PropertyChangeEvent that will be dispatched to all VetoableChangeListeners. In case no complaints (PropertyVetoException) have been received, the property will be actually changed and a PropertyChangeEvent will be dispatched. This method also allows the caller to specify whether or not the specified property is a system one.

        Parameters:
        propertyName - the name of the property to change.
        property - the new value of the specified property.
        isSystem - specifies whether or not the property being set is a System property and should be resolved against the system property set.
      • setProperties

         abstract void setProperties(Map<String, Object> properties)

        Sets a set of specific properties to specific values as a batch operation meaning that first VetoableChangeListeners are asked to approve the modifications of the specified properties to the specified values, then the modifications are performed if no complaints have been raised in the form of PropertyVetoException and finally PropertyChangeListeners are notified about the changes of each of the specified properties. The batch operations allows the ConfigurationService implementations to optimize, for example, the saving of the configuration which in this case can be performed only once for the setting of multiple properties.

        Parameters:
        properties - a Map of property names to their new values to be set.
      • getProperty

         abstract Object getProperty(String propertyName)

        Returns the value of the property with the specified name or null if no such property exists.

        Parameters:
        propertyName - the name of the property that is being queried.
        Returns:

        the value of the property with the specified name.

      • removeProperty

         abstract void removeProperty(String propertyName)

        Removes the property with the specified name. Calling this method would first trigger a PropertyChangeEvent that will be dispatched to all VetoableChangeListeners. In case no complaints (PropertyVetoException) have been received, the property will be actually changed and a PropertyChangeEvent will be dispatched. All properties with prefix propertyName will also be removed.

        Parameters:
        propertyName - the name of the property to change.
      • getPropertyNamesByPrefix

         abstract List<String> getPropertyNamesByPrefix(String prefix, boolean exactPrefixMatch)

        Returns a List of Strings containing all property names that have the specified prefix. The return value will include property names that have prefixes longer than specified, unless the exactPrefixMatch parameter is true.

        Example:

        Imagine a configuration service instance containing 2 properties only: net.java.sip.communicator.PROP1=value1 net.java.sip.communicator.service.protocol.PROP1=value2

        A call to this method with a prefix="net.java.sip.communicator" and exactPrefixMatch=true would only return the first property - net.java.sip.communicator.PROP1, whereas the same call with exactPrefixMatch=false would return both properties as the second prefix includes the requested prefix string.

        Parameters:
        prefix - a String containing the prefix (the non dotted non-caps part of a property name) that we're looking for.
        exactPrefixMatch - a boolean indicating whether the returned property names should all have a prefix that is an exact match of the the prefix param or whether properties with prefixes that contain it but are longer than it are also accepted.
        Returns:

        a java.util.Listcontaining all property name String-s matching the specified conditions.

      • getPropertyNamesBySuffix

         abstract List<String> getPropertyNamesBySuffix(String suffix)

        Returns a List of Strings containing the property names that have the specified suffix. A suffix is considered to be everything after the last dot in the property name.

        For example, imagine a configuration service instance containing two properties only:

        net.java.sip.communicator.PROP1=value1 net.java.sip.communicator.service.protocol.PROP1=value2

        A call to this method with suffix equal to "PROP1" will return both properties, whereas the call with suffix equal to "communicator.PROP1" or "PROP2" will return an empty List. Thus, if the suffix argument contains a dot, nothing will be found.

        Parameters:
        suffix - the suffix for the property names to be returned
        Returns:

        a List of Strings containing the property names which contain the specified suffix

      • getString

         abstract String getString(String propertyName)

        Returns the String value of the specified property and null in case no property value was mapped against the specified propertyName, or in case the returned property string had zero length or contained whitespaces only.

        Parameters:
        propertyName - the name of the property that is being queried.
        Returns:

        the result of calling the property's toString method and null in case there was no value mapped against the specified propertyName, or the returned string had zero length or contained whitespaces only.

      • getString

         abstract String getString(String propertyName, String defaultValue)

        Returns the String value of the specified property and null in case no property value was mapped against the specified propertyName, or in case the returned property string had zero length or contained whitespaces only.

        Parameters:
        propertyName - the name of the property that is being queried.
        defaultValue - the value to be returned if the specified property name is not associated with a value in this ConfigurationService
        Returns:

        the result of calling the property's toString method and defaultValue in case there was no value mapped against the specified propertyName, or the returned string had zero length or contained whitespaces only.

      • getBoolean

         abstract boolean getBoolean(String propertyName, boolean defaultValue)

        Gets the value of a specific property as a boolean. If the specified property name is associated with a value in this ConfigurationService, the string representation of the value is parsed into a boolean according to the rules of parseBoolean . Otherwise, defaultValue is returned.

        Parameters:
        propertyName - the name of the property to get the value of as a boolean
        defaultValue - the value to be returned if the specified property name is not associated with a value in this ConfigurationService
        Returns:

        the value of the property with the specified name in this ConfigurationService as a boolean; defaultValue if the property with the specified name is not associated with a value in this ConfigurationService

      • getInt

         abstract int getInt(String propertyName, int defaultValue)

        Gets the value of a specific property as a signed decimal integer. If the specified property name is associated with a value in this ConfigurationService, the string representation of the value is parsed into a signed decimal integer according to the rules of parseInt . If parsing the value as a signed decimal integer fails or there is no value associated with the specified property name, defaultValue is returned.

        Parameters:
        propertyName - the name of the property to get the value of as a signed decimal integer
        defaultValue - the value to be returned if parsing the value of the specified property name as a signed decimal integer fails or there is no value associated with the specified property name in this ConfigurationService
        Returns:

        the value of the property with the specified name in this ConfigurationService as a signed decimal integer; defaultValue if parsing the value of the specified property name fails or no value is associated in this ConfigurationServicewith the specified property name

      • getDouble

         abstract double getDouble(String propertyName, double defaultValue)

        Gets the value of a specific property as a double. If the specified property name is associated with a value in this ConfigurationService, the string representation of the value is parsed into a double according to the rules of parseDouble. If there is no value, or parsing of the value fails, defaultValue is returned.

        Parameters:
        propertyName - the name of the property.
        defaultValue - the default value to be returned.
        Returns:

        the value of the property with the specified name in this ConfigurationService as a double, or defaultValue.

      • getLong

         abstract long getLong(String propertyName, long defaultValue)

        Gets the value of a specific property as a signed decimal long integer. If the specified property name is associated with a value in this ConfigurationService, the string representation of the value is parsed into a signed decimal long integer according to the rules of parseLong . If parsing the value as a signed decimal long integer fails or there is no value associated with the specified property name, defaultValue is returned.

        Parameters:
        propertyName - the name of the property to get the value of as a signed decimal long integer
        defaultValue - the value to be returned if parsing the value of the specified property name as a signed decimal long integer fails or there is no value associated with the specified property name in this ConfigurationService
        Returns:

        the value of the property with the specified name in this ConfigurationService as a signed decimal long integer; defaultValue if parsing the value of the specified property name fails or no value is associated in this ConfigurationServicewith the specified property name

      • addPropertyChangeListener

         abstract void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)

        Adds a PropertyChangeListener to the listener list for a specific property. In case a property with the specified name does not exist the listener is still added and would only be taken into account from the moment such a property is set by someone.

        Parameters:
        propertyName - one of the property names listed above
        listener - the PropertyChangeListener to be added
      • removePropertyChangeListener

         abstract void removePropertyChangeListener(String propertyName, PropertyChangeListener listener)

        Removes a PropertyChangeListener from the listener list for a specific property. This method should be used to remove PropertyChangeListeners that were registered for a specific property. The method has no effect when called for a listener that was not registered for that specific property.

        Parameters:
        propertyName - a valid property name
        listener - the PropertyChangeListener to be removed
      • addVetoableChangeListener

         abstract void addVetoableChangeListener(ConfigVetoableChangeListener listener)

        Adds a VetoableChangeListener to the listener list. The listener is registered for all properties in the configuration.

        Parameters:
        listener - the VetoableChangeListener to be added
      • addVetoableChangeListener

         abstract void addVetoableChangeListener(String propertyName, ConfigVetoableChangeListener listener)

        Adds a VetoableChangeListener to the listener list for a specific property.

        Parameters:
        propertyName - one of the property names listed above
        listener - the VetoableChangeListener to be added
      • removeVetoableChangeListener

         abstract void removeVetoableChangeListener(String propertyName, ConfigVetoableChangeListener listener)

        Removes a VetoableChangeListener from the listener list for a specific property.

        Parameters:
        propertyName - a valid property name
        listener - the VetoableChangeListener to be removed
      • storeConfiguration

         abstract void storeConfiguration()

        Store the current set of properties back to the configuration file. The name of the configuration file is queried from the system property net.java.sip.communicator.PROPERTIES_FILE_NAME, and is set to sip-communicator.xml in case the property does not contain a valid file name. The location might be one of three possible, checked in the following order: 1. The current directory. 2. The sip-communicator directory in the user.home ($HOME/.sip-communicator) 3. A location in the classpath (such as the sip-communicator jar file).

        In the last case the file is copied to the sip-communicator configuration directory right after being extracted from the classpath location.

      • reloadConfiguration

         abstract void reloadConfiguration()

        Deletes the current configuration and reloads it from the configuration file. The name of the configuration file is queried from the system property net.java.sip.communicator.PROPERTIES_FILE_NAME, and is set to sip-communicator.xml in case the property does not contain a valid file name. The location might be one of three possible, checked in the following order: 1. The current directory. 2. The sip-communicator directory in the user.home ($HOME/.sip-communicator) 3. A location in the classpath (such as the sip-communicator jar file).

        In the last case the file is copied to the sip-communicator configuration directory right after being extracted from the classpath location.

      • purgeStoredConfiguration

         abstract void purgeStoredConfiguration()

        Removes all locally stored properties leaving an empty configuration. Implementations that use a file for storing properties may simply delete it when this method is called.

      • logConfigurationProperties

         abstract void logConfigurationProperties(String passwordPattern)

        Prints all configuration properties on 'INFO' logging level *except* that properties which name matches given regular expression will have their values masked with ***.

        Parameters:
        passwordPattern - regular expression which detects properties which values should be masked.
      • getScHomeDirName

         abstract String getScHomeDirName()

        Returns the name of the directory where Jitsi is to store user specific data such as configuration files, message and call history as well as is bundle repository.

        Returns:

        the name of the directory where Jitsi is to store user specific data such as configuration files, message and call history as well as is bundle repository.

      • getScHomeDirLocation

         abstract String getScHomeDirLocation()

        Returns the location of the directory where Jitsi is to store user specific data such as configuration files, message and call history as well as is bundle repository.

        Returns:

        the location of the directory where Jitsi is to store user specific data such as configuration files, message and call history as well as is bundle repository.