Interface PersistenceManager
- All Known Subinterfaces:
ExtPersistenceManager,NotCachablePersistenceManager
- All Known Implementing Classes:
CachingPersistenceManagerProxy,FilePersistenceManager,MemoryPersistenceManager,PersistenceManagerProxy
PersistenceManager interface 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.Dictionary objects 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.ranking service property - is
used. If no persistence manager service has been registered, the platform
file system based implementation is used.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringService registration property to define a unique name for the persistence manager. -
Method Summary
Modifier and TypeMethodDescriptionvoidRemoves theDictionaryfor the givenpid.booleanReturnstrueif a persistedDictionaryexists for the givenpid.Returns an enumeration of allDictionaryobjects known to this persistence manager.Returns theDictionaryfor the givenpid.voidstore(String pid, Dictionary properties) Stores theDictionaryunder the givenpid.
-
Field Details
-
PROPERTY_NAME
Service registration property to define a unique name for the persistence manager.- Since:
- 1.2
- See Also:
-
-
Method Details
-
exists
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
Returns 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:
IOException- If an error occurs loading the dictionary. AnIOExceptionmust also be thrown if no dictionary exists for the given identifier.
-
getDictionaries
Returns 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:
IOException- If an error occurs getting the dictionaries.
-
store
Stores 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:
IOException- If an error occurs storing the dictionary. If this exception is thrown, it is expected, thatexists(pidreturnsfalse.
-
delete
Removes 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:
IOException- If an error occurs deleting the dictionary. This exception must not be thrown if no dictionary with the given identifier exists.
-