Package com.biglybt.core.config.impl
Class ConfigurationManager
- java.lang.Object
-
- com.biglybt.core.config.impl.ConfigurationManager
-
- All Implemented Interfaces:
AEDiagnosticsEvidenceGenerator
public class ConfigurationManager extends java.lang.Object implements AEDiagnosticsEvidenceGenerator
A singleton used to store configuration into a bencoded file.
-
-
Field Summary
Fields Modifier and Type Field Description private static AEMonitor
class_mon
private static ConfigurationManager
config
static java.lang.String
CONFIG_FILENAME
private static ConfigurationManager
config_temp
private static boolean
DEBUG_PARAMETER_LISTENERS
private static FrequencyLimitedDispatcher
dirty_dispatcher
private ParameterListener
exportable_parameter_listener
private java.util.Map<java.lang.String,java.lang.String[]>
exported_parameters
private boolean
exported_parameters_dirty
private java.util.Map<java.lang.String,java.lang.String>
imported_parameters
private java.util.List<COConfigurationListener>
listenerz
private java.util.Map<java.lang.String,ParameterListener[]>
parameterListenerz
private ConcurrentHashMapWrapper<java.lang.String,java.lang.Object>
propertiesMap
private java.util.List<COConfigurationManager.ResetToDefaultsListener>
reset_to_def_listeners
private java.util.List
transient_properties
private java.util.Map<java.lang.String,java.util.List<java.lang.ref.WeakReference<ParameterListener>>>
weakParameterListenerz
-
Constructor Summary
Constructors Modifier Constructor Description private
ConfigurationManager()
private
ConfigurationManager(java.util.Map data)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addAndFireListener(COConfigurationListener listener)
void
addListener(COConfigurationListener listener)
void
addParameterListener(java.lang.String parameter, ParameterListener new_listener)
void
addResetToDefaultsListener(COConfigurationManager.ResetToDefaultsListener l)
void
addWeakParameterListener(java.lang.String parameter, ParameterListener new_listener)
protected static java.lang.String
bytesToString(byte[] bytes)
boolean
doesParameterNonDefaultExist(java.lang.String parameter)
Does the given parameter exist.void
dumpConfigChanges(IndentWriter writer)
(package private) void
exportParameters()
void
generate(IndentWriter writer)
boolean
getBooleanParameter(java.lang.String parameter)
boolean
getBooleanParameter(java.lang.String parameter, boolean defaultValue)
byte[]
getByteParameter(java.lang.String parameter)
byte[]
getByteParameter(java.lang.String parameter, byte[] defaultValue)
private byte[]
getByteParameterRaw(java.lang.String parameter)
java.util.Set<java.lang.String>
getDefinedParameters()
java.lang.String
getDirectoryParameter(java.lang.String parameter)
float
getFloatParameter(java.lang.String parameter)
float
getFloatParameter(java.lang.String parameter, float def_val)
static ConfigurationManager
getInstance()
static ConfigurationManager
getInstance(java.util.Map data)
int
getIntParameter(java.lang.String parameter)
int
getIntParameter(java.lang.String parameter, int defaultValue)
java.util.List
getListParameter(java.lang.String parameter, java.util.List def)
long
getLongParameter(java.lang.String parameter)
long
getLongParameter(java.lang.String parameter, long defaultValue)
private java.lang.Long
getLongParameterRaw(java.lang.String parameter)
java.util.Map
getMapParameter(java.lang.String parameter, java.util.Map def)
java.lang.Object
getParameter(java.lang.String name)
int[]
getRGBParameter(java.lang.String parameter)
java.util.List<java.lang.String>
getStringListParameter(java.lang.String parameter)
java.lang.String
getStringParameter(java.lang.String parameter)
private java.lang.String
getStringParameter(java.lang.String parameter, byte[] defaultValue)
java.lang.String
getStringParameter(java.lang.String parameter, java.lang.String defaultValue)
boolean
hasParameter(java.lang.String key, boolean explicit)
Returns true if a parameter with the given name exists.private boolean
ignoreKeyForDump(java.lang.String key)
protected void
initialise()
boolean
isNewInstall()
void
load()
void
load(java.lang.String filename)
private void
loadExportedParameters()
private void
notifyParameterListeners(java.lang.String parameter)
private boolean
notifyParameterListenersIfChanged(java.lang.String parameter, byte[] newValue, byte[] oldValue)
private boolean
notifyParameterListenersIfChanged(java.lang.String parameter, java.lang.Long newValue, java.lang.Long oldValue)
void
registerExportedParameter(java.lang.String name, java.lang.String key)
void
registerTransientParameter(java.lang.String param)
Use this method to record a parameter as one which can be stored here, but shouldn't be saved in the .config file.void
removeListener(COConfigurationListener listener)
boolean
removeParameter(java.lang.String parameter)
Remove the given configuration parameter completely.void
removeParameterListener(java.lang.String parameter, ParameterListener listener)
boolean
removeRGBParameter(java.lang.String parameter)
void
removeWeakParameterListener(java.lang.String parameter, ParameterListener listener)
Explicitly removing a weak ParameterListener prevents it from being fired after being de-referenced, but before GC'dvoid
resetToDefaults()
void
save()
void
save(java.lang.String filename)
void
setDirty()
boolean
setParameter(java.lang.String parameter, boolean value)
boolean
setParameter(java.lang.String parameter, byte[] defaultValue)
boolean
setParameter(java.lang.String parameter, float defaultValue)
boolean
setParameter(java.lang.String parameter, int defaultValue)
boolean
setParameter(java.lang.String parameter, long defaultValue)
boolean
setParameter(java.lang.String parameter, java.lang.String defaultValue)
boolean
setParameter(java.lang.String parameter, java.util.List value)
boolean
setParameter(java.lang.String parameter, java.util.Map value)
void
setParameterRawNoNotify(java.lang.String parameter, java.lang.Object value)
Set the raw parameter value to store in the properties map.boolean
setRGBParameter(java.lang.String parameter, int[] rgb, java.lang.Boolean override)
boolean
setRGBParameter(java.lang.String parameter, int red, int green, int blue, java.lang.Boolean override)
protected static byte[]
stringToBytes(java.lang.String str)
(package private) void
updateExportableParameter(java.lang.String key)
boolean
verifyParameter(java.lang.String parameter, java.lang.String value)
-
-
-
Field Detail
-
DEBUG_PARAMETER_LISTENERS
private static final boolean DEBUG_PARAMETER_LISTENERS
- See Also:
- Constant Field Values
-
CONFIG_FILENAME
public static final java.lang.String CONFIG_FILENAME
- See Also:
- Constant Field Values
-
config_temp
private static ConfigurationManager config_temp
-
config
private static ConfigurationManager config
-
class_mon
private static final AEMonitor class_mon
-
propertiesMap
private ConcurrentHashMapWrapper<java.lang.String,java.lang.Object> propertiesMap
-
transient_properties
private final java.util.List transient_properties
-
listenerz
private final java.util.List<COConfigurationListener> listenerz
-
parameterListenerz
private final java.util.Map<java.lang.String,ParameterListener[]> parameterListenerz
-
weakParameterListenerz
private final java.util.Map<java.lang.String,java.util.List<java.lang.ref.WeakReference<ParameterListener>>> weakParameterListenerz
-
reset_to_def_listeners
private final java.util.List<COConfigurationManager.ResetToDefaultsListener> reset_to_def_listeners
-
dirty_dispatcher
private static final FrequencyLimitedDispatcher dirty_dispatcher
-
exportable_parameter_listener
private final ParameterListener exportable_parameter_listener
-
exported_parameters
private final java.util.Map<java.lang.String,java.lang.String[]> exported_parameters
-
imported_parameters
private final java.util.Map<java.lang.String,java.lang.String> imported_parameters
-
exported_parameters_dirty
private volatile boolean exported_parameters_dirty
-
-
Method Detail
-
getInstance
public static ConfigurationManager getInstance()
-
getInstance
public static ConfigurationManager getInstance(java.util.Map data)
-
initialise
protected void initialise()
-
load
public void load(java.lang.String filename)
-
load
public void load()
-
save
public void save(java.lang.String filename)
-
save
public void save()
-
setDirty
public void setDirty()
-
isNewInstall
public boolean isNewInstall()
-
getDefinedParameters
public java.util.Set<java.lang.String> getDefinedParameters()
-
getBooleanParameter
public boolean getBooleanParameter(java.lang.String parameter, boolean defaultValue)
-
getBooleanParameter
public boolean getBooleanParameter(java.lang.String parameter)
-
setParameter
public boolean setParameter(java.lang.String parameter, boolean value)
-
getLongParameterRaw
private java.lang.Long getLongParameterRaw(java.lang.String parameter)
-
getIntParameter
public int getIntParameter(java.lang.String parameter, int defaultValue)
-
getIntParameter
public int getIntParameter(java.lang.String parameter)
-
getLongParameter
public long getLongParameter(java.lang.String parameter, long defaultValue)
-
getLongParameter
public long getLongParameter(java.lang.String parameter)
-
getByteParameterRaw
private byte[] getByteParameterRaw(java.lang.String parameter)
-
getByteParameter
public byte[] getByteParameter(java.lang.String parameter)
-
getByteParameter
public byte[] getByteParameter(java.lang.String parameter, byte[] defaultValue)
-
getStringParameter
private java.lang.String getStringParameter(java.lang.String parameter, byte[] defaultValue)
-
getStringParameter
public java.lang.String getStringParameter(java.lang.String parameter, java.lang.String defaultValue)
-
getStringParameter
public java.lang.String getStringParameter(java.lang.String parameter)
-
getStringListParameter
public java.util.List<java.lang.String> getStringListParameter(java.lang.String parameter)
-
getListParameter
public java.util.List getListParameter(java.lang.String parameter, java.util.List def)
-
setParameter
public boolean setParameter(java.lang.String parameter, java.util.List value)
-
getMapParameter
public java.util.Map getMapParameter(java.lang.String parameter, java.util.Map def)
-
setParameter
public boolean setParameter(java.lang.String parameter, java.util.Map value)
-
getDirectoryParameter
public java.lang.String getDirectoryParameter(java.lang.String parameter) throws java.io.IOException
- Throws:
java.io.IOException
-
getFloatParameter
public float getFloatParameter(java.lang.String parameter)
-
getFloatParameter
public float getFloatParameter(java.lang.String parameter, float def_val)
-
setParameter
public boolean setParameter(java.lang.String parameter, float defaultValue)
-
setParameter
public boolean setParameter(java.lang.String parameter, int defaultValue)
-
setParameter
public boolean setParameter(java.lang.String parameter, long defaultValue)
-
setParameter
public boolean setParameter(java.lang.String parameter, byte[] defaultValue)
-
setParameter
public boolean setParameter(java.lang.String parameter, java.lang.String defaultValue)
-
hasParameter
public boolean hasParameter(java.lang.String key, boolean explicit)
Returns true if a parameter with the given name exists.- Parameters:
key
- The name of the parameter to check.explicit
- If true, we only check for a value which is definitely stored explicitly, false means that we'll also check against configuration defaults too.
-
verifyParameter
public boolean verifyParameter(java.lang.String parameter, java.lang.String value)
-
setRGBParameter
public boolean setRGBParameter(java.lang.String parameter, int red, int green, int blue, java.lang.Boolean override)
-
setRGBParameter
public boolean setRGBParameter(java.lang.String parameter, int[] rgb, java.lang.Boolean override)
-
getRGBParameter
public int[] getRGBParameter(java.lang.String parameter)
-
getParameter
public java.lang.Object getParameter(java.lang.String name)
-
setParameterRawNoNotify
public void setParameterRawNoNotify(java.lang.String parameter, java.lang.Object value)
Set the raw parameter value to store in the properties map. This should only be used by trusted callers, and has been added to support external plugin config files.- Parameters:
parameter
- Parameter name.value
- A bencode-ably safe value.
-
registerTransientParameter
public void registerTransientParameter(java.lang.String param)
Use this method to record a parameter as one which can be stored here, but shouldn't be saved in the .config file. Instead, some external object should be responsible for the parameter's persistency (if it should have any at all).
-
removeParameter
public boolean removeParameter(java.lang.String parameter)
Remove the given configuration parameter completely.- Parameters:
parameter
- to remove- Returns:
- true if found and removed, false if not
-
removeRGBParameter
public boolean removeRGBParameter(java.lang.String parameter)
-
doesParameterNonDefaultExist
public boolean doesParameterNonDefaultExist(java.lang.String parameter)
Does the given parameter exist.- Parameters:
parameter
- to check- Returns:
- true if exists, false if not present
-
notifyParameterListenersIfChanged
private boolean notifyParameterListenersIfChanged(java.lang.String parameter, java.lang.Long newValue, java.lang.Long oldValue)
-
notifyParameterListenersIfChanged
private boolean notifyParameterListenersIfChanged(java.lang.String parameter, byte[] newValue, byte[] oldValue)
-
addResetToDefaultsListener
public void addResetToDefaultsListener(COConfigurationManager.ResetToDefaultsListener l)
-
registerExportedParameter
public void registerExportedParameter(java.lang.String name, java.lang.String key)
-
updateExportableParameter
void updateExportableParameter(java.lang.String key)
-
exportParameters
void exportParameters()
-
loadExportedParameters
private void loadExportedParameters()
-
resetToDefaults
public void resetToDefaults()
-
notifyParameterListeners
private void notifyParameterListeners(java.lang.String parameter)
-
addWeakParameterListener
public void addWeakParameterListener(java.lang.String parameter, ParameterListener new_listener)
-
removeWeakParameterListener
public void removeWeakParameterListener(java.lang.String parameter, ParameterListener listener)
Explicitly removing a weak ParameterListener prevents it from being fired after being de-referenced, but before GC'd
-
addParameterListener
public void addParameterListener(java.lang.String parameter, ParameterListener new_listener)
-
removeParameterListener
public void removeParameterListener(java.lang.String parameter, ParameterListener listener)
-
addListener
public void addListener(COConfigurationListener listener)
-
addAndFireListener
public void addAndFireListener(COConfigurationListener listener)
-
removeListener
public void removeListener(COConfigurationListener listener)
-
ignoreKeyForDump
private boolean ignoreKeyForDump(java.lang.String key)
-
generate
public void generate(IndentWriter writer)
- Specified by:
generate
in interfaceAEDiagnosticsEvidenceGenerator
-
dumpConfigChanges
public void dumpConfigChanges(IndentWriter writer)
-
bytesToString
protected static java.lang.String bytesToString(byte[] bytes)
-
stringToBytes
protected static byte[] stringToBytes(java.lang.String str)
-
-