Interface PersistenceManager
-
- All Known Subinterfaces:
NotCachablePersistenceManager
- All Known Implementing Classes:
FilePersistenceManager
@ConsumerType public interface PersistenceManagerThePersistenceManagerinterface defines the API to be implemented to support persisting configuration data. This interface may be implemented by bundles, which support storing configuration data in different locations.The Apache Felix Configuration Admin Service bundles provides an implementation of this interface using the platform file system to store configuration data.
Implementations of this interface must support loading and storing
java.util.Dictionaryobjects as defined in section 104.4.2, Configuration Properties, of the Configuration Admin Service Specification Version 1.2.To make implementations of this interface available to the Configuration Admin Service they must be registered as service for this interface. The Configuration Admin Service will consider all registered services plus the default platform file system based implementation to load configuration data. To store new configuration data, the persistence manager service with the highest rank value - the
service.rankingservice property - is used. If no persistence manager service has been registered, the platform file system based implementation is used.
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringPROPERTY_NAMEService registration property to define a unique name for the persistence manager.
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description voiddelete(java.lang.String pid)Removes theDictionaryfor the givenpid.booleanexists(java.lang.String pid)Returnstrueif a persistedDictionaryexists for the givenpid.java.util.EnumerationgetDictionaries()Returns an enumeration of allDictionaryobjects known to this persistence manager.java.util.Dictionaryload(java.lang.String pid)Returns theDictionaryfor the givenpid.voidstore(java.lang.String pid, java.util.Dictionary properties)Stores theDictionaryunder the givenpid.
-
-
-
Field Detail
-
PROPERTY_NAME
static final java.lang.String PROPERTY_NAME
Service registration property to define a unique name for the persistence manager.- Since:
- 1.2
- See Also:
- Constant Field Values
-
-
Method Detail
-
exists
boolean exists(java.lang.String pid)
Returnstrueif a persistedDictionaryexists for the givenpid.- Parameters:
pid- The identifier for the dictionary to test.- Returns:
trueif a persisted dictionary exists for the pid.
-
load
java.util.Dictionary load(java.lang.String pid) throws java.io.IOExceptionReturns theDictionaryfor the givenpid.Implementations are expected to return dictionary instances which may be modified by the caller without affecting any underlying data or affecting future calls to this method with the same PID. In other words the reference equation
load(pid) != load(pid)must holdtrue.- Parameters:
pid- The identifier for the dictionary to load.- Returns:
- The dictionary for the identifier. This must not be
nullbut may be empty. - Throws:
java.io.IOException- If an error occurs loading the dictionary. AnIOExceptionmust also be thrown if no dictionary exists for the given identifier.
-
getDictionaries
java.util.Enumeration getDictionaries() throws java.io.IOExceptionReturns an enumeration of allDictionaryobjects known to this persistence manager.Implementations of this method are allowed to return lazy enumerations. That is, it is allowable for the enumeration to not return a dictionary if loading it results in an error.
Implementations are expected to return dictionary instances which may be modified by the caller without affecting any underlying data or affecting future calls to this method.
The
Enumerationreturned from this method must be stable against concurrent calls to either of theload(String),store(String, Dictionary), anddelete(String)methods.- Returns:
- A possibly empty Enumeration of all dictionaries.
- Throws:
java.io.IOException- If an error occurs getting the dictionaries.
-
store
void store(java.lang.String pid, java.util.Dictionary properties) throws java.io.IOExceptionStores theDictionaryunder the givenpid.The dictionary provided to this method must be considered private to the caller. Any modification by the caller after this method finishes must not influence any internal storage of the provided data. Implementations must not modify the dictionary.
- Parameters:
pid- The identifier of the dictionary.properties- TheDictionaryto store.- Throws:
java.io.IOException- If an error occurs storing the dictionary. If this exception is thrown, it is expected, thatexists(pidreturnsfalse.
-
delete
void delete(java.lang.String pid) throws java.io.IOExceptionRemoves theDictionaryfor the givenpid. If such a dictionary does not exist, this method has no effect.- Parameters:
pid- The identifier of the dictionary to delete.- Throws:
java.io.IOException- If an error occurs deleting the dictionary. This exception must not be thrown if no dictionary with the given identifier exists.
-
-