public final class ClientSetting extends java.lang.Object implements Copyable
ClientSetting
class provides a default object
store that can be used to save and open extension specific data.
Extensions should never set their specific settings on the
IdeSettings
object. They must use a ClientSetting instance
to initialize their settings. The ClientSetting object makes sure that
the extension data can be accessed through the IdeSettings object.
Extensions get a ClientSetting
instance by calling the
findOrCreate(java.lang.String)
method.
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
FILENAME |
static java.lang.String |
NAMESPACE_URI |
static java.lang.String |
ROOT_TAG |
Modifier | Constructor and Description |
---|---|
protected |
ClientSetting(java.net.URL url) |
Modifier and Type | Method and Description |
---|---|
java.lang.Object |
copyTo(java.lang.Object object)
Copies the internal state of
this object to the
specified copy . |
protected void |
copyToImpl(ClientSetting copy) |
static void |
deregisterUI(Navigable ui) |
protected void |
ensureOpen() |
boolean |
equals(java.lang.Object o) |
protected boolean |
equalsImpl(ClientSetting setting)
This is a helper method for
equals(Object) that can
also be used by subclasses that implement equals(Object) . |
static ClientSetting |
findOrCreate(java.lang.String extensionID)
Finds or creates an extension specific settings object where the
extension stores its settings.
|
static ClientSetting |
findOrCreate(java.lang.String extensionID,
java.lang.String filename)
Finds or creates an extension specific settings object where the
extension stores its settings.
|
java.lang.ClassLoader |
getClassLoader() |
protected java.util.Map |
getClientData() |
Copyable |
getData(java.lang.String key)
Gets the data object associated with the specified
dataKey . |
java.lang.String |
getExtensionID() |
protected ObjectStore |
getObjectStore()
Get the object store used to save and open the client data file.
|
java.net.URL |
getURL()
Get the URL where to save or load client data.
|
boolean |
hasData(java.lang.String dataKey)
Checks if a data object associated with the specified
dataKey
exists. |
int |
hashCode() |
boolean |
isNew() |
boolean |
isOpen() |
void |
open()
Loads the client data.
|
void |
putData(java.lang.String key,
Copyable data)
Sets the data object associated with the specified
dataKey . |
void |
putExtensionID(java.lang.String extensionID) |
static void |
registerUI(Navigable ui) |
void |
save()
Saves the client data.
|
void |
setClassLoader(java.lang.ClassLoader classloader) |
void |
setURL(java.net.URL url) |
public static final java.lang.String ROOT_TAG
public static final java.lang.String NAMESPACE_URI
public static final java.lang.String FILENAME
public boolean hasData(java.lang.String dataKey)
dataKey
exists. This method does not cause the loading of the settings, therefore
it should be used to check for data existance instead of calling
getData for that purpose.
If not yet open, this implementation considers all keys to be had if the URL of this object exists. That is to say that either all keys are present, or the file does not exist.
dataKey
- unique key identifying the data.public Copyable getData(java.lang.String key) throws TransientMarker
dataKey
.
Don't use this method to check for the existance of the data. Instead
use the hasData method.key
- unique key identifying the data.TransientMarker
public void putData(java.lang.String key, Copyable data)
dataKey
.key
- dataKey unique key identifying the data.data
- the data.public void save() throws java.io.IOException
java.io.IOException
- Signals that an I/O exception of some sort
occurred.public void open() throws java.io.IOException
java.io.IOException
- Signals that an I/O exception of some sort
occurred.public java.net.URL getURL()
public void setURL(java.net.URL url)
public boolean isNew()
public boolean isOpen()
public java.lang.String getExtensionID()
public void putExtensionID(java.lang.String extensionID)
public java.lang.Object copyTo(java.lang.Object object)
Copyable
this
object to the
specified copy
. If copy
is
null
, then this method should create a new instance
of this
class and proceed to copy the internal state
to the newly created object. Generally, only the persistent
state of the object should be copied, but whether or not it is
appropriate to copy transient properties is at the discretion
of the individual implementor.
Regardless of whether the copy occurs to an existing object or to
a newly created object, the return value is object to which
this
object's state was copied.
There is a standard implementation pattern for the
copyTo
method that helps avoid problems that arise
when a Copyable
object is subclassed. The pattern
is:
The parameter passed into thepublic Object copyTo( Object target ) { final <this_class> copy = target != null ? (<this_class>) target : new <this_class>(); copyToImpl( copy ); return copy; } protected final void copyToImpl( <this_class> copy ) { super.copyToImpl( copy ); // if necessary // put code here for copying the properties of <this_class> }
copyToImpl
method is
the same type of this
class. The responsibility of
copyToImpl
is to copy the state of this
class through direct access of the fields. The
copyToImpl
method should not use getters and setters
since these may be overridden, causing the state of
this
class to be incompletely copied.copyTo
in interface Copyable
object
- The target object to which the state of
this
object should be copied. If target
is null
, then the copyTo
method will
return a new instance of this
class.this
object was copied. If the target
was
non-null
, then the return value is the same as the
target
object that was passed in; otherwise, the
return value is a new instance of this
class.protected final void copyToImpl(ClientSetting copy)
public boolean equals(java.lang.Object o)
equals
in class java.lang.Object
public int hashCode()
hashCode
in class java.lang.Object
public static void registerUI(Navigable ui)
public static void deregisterUI(Navigable ui)
public static ClientSetting findOrCreate(java.lang.String extensionID)
extensionID
- the extension unique identifier.public static ClientSetting findOrCreate(java.lang.String extensionID, java.lang.String filename)
extensionID
- the extension unique identifier.filename
- the file where the setting data is saved.protected final boolean equalsImpl(ClientSetting setting)
equals(Object)
that can
also be used by subclasses that implement equals(Object)
.
It assumes that the argument is not null
.protected ObjectStore getObjectStore()
protected void ensureOpen() throws java.io.IOException
java.io.IOException
protected java.util.Map getClientData()
public java.lang.ClassLoader getClassLoader()
public void setClassLoader(java.lang.ClassLoader classloader)