## org.w3c.tools.resources.store
Interface ResourceStore

All Known Implementing Classes:
  jdbmResourceStore, SimpleResourceStore

public abstract interface ResourceStore

A resource store implements persistency for a set of resources. A resource store may implement a number of strategies along different axis, for example:

- It may connect to some database to get the resource attributes.
- It may restrict the classes of the resource it handles (for security reasons), by using a specific class loader.
- It may implement some caching scheme, to keep memory requirements low.
- It may be distributed (eg using a ResourceStoreStub in the client, but providing access to a server-side resource store.).

Method Summary
`boolean` | `acceptUnload()` Can this resource store be unloaded now ? This method gets called by the ResourceStoreManager before calling the `shutdown` method, when possible.
`void` | `addResource(Resource resource)` Add this resource to this resource store.
`java.util.Enumeration` | `enumerateResourceIdentifiers()` Enumerate all the resources saved in this store.
`java.lang.String` | `getIdentifier()` Get the identifier for that store.
`int` | `getVersion()` Get the version of that resource store.
`boolean` | `hasResource(java.lang.String identifier)` Check for the existence of a resource in this store.
`void` | `initialize(ResourceStoreManager manager, java.lang.Object token, java.io.File repository)` This resource store is being built, initialize it with the given arg.
`Resource` | `loadResource(java.lang.String identifier, java.util.Hashtable defs)` Restore the resource whose name is given.
`Resource` | `lookupResource(java.lang.String identifier)` Get this resource, but only if already loaded.
`void` | `markModified(Resource resource)` Mark this resource as modified.
`void` | `removeResource(java.lang.String identifier)` Remove this resource from the repository.
`void` | `renameResource(java.lang.String oldid, java.lang.String newid)` Rename a given resource.
`void` | `save()` Save this store.
`void` | `saveResource(Resource resource)` Stabilize the given resource.
`void` | `shutdown()` Shutdown this store.

Method Detail

### getVersion

    public int getVersion()

  Get the version of that resource store. Version numbers are used to distinguish between pickling format. A resource store implementator has the duty of bumping the returned number whenever it's archiving format changes. Resource stores that relies on some external archiving mechanisms (such as a database), may return a constant.
  Returns:
    An integer version number.

### getIdentifier

    public java.lang.String getIdentifier()

  Get the identifier for that store.
  Returns:
    A uniq store identifier, as a String.

### loadResource

    public Resource loadResource(java.lang.String identifier,
                                 java.util.Hashtable defs)
                          throws InvalidResourceException

  Restore the resource whose name is given. This method doesn't assume that the resource will actually be restored, it can be kept in a cache by the ResourceStore object, and the cached version of the resource may be returned.
  Parameters:
    `identifier` - The identifier of the resource to restore.
    `defs` - Default attribute values. If the resource needs to be restored from its pickled version, this Hashtable provides a set of default values for some of the attributes.
  Returns:
    A Resource instance, or null.
  Throws:
    InvalidResourceException - If the resource could not be restored from the store.

### lookupResource

    public Resource lookupResource(java.lang.String identifier)

  Get this resource, but only if already loaded. The resource store may (recommended) maintain a cache of the resource it loads from its store. If the resource having this identifier has already been loaded, return it, otherwise, return null.
  Parameters:
    `identifier` - The resource identifier.
  Returns:
    A Resource instance, or null.

### saveResource

    public void saveResource(Resource resource)

  Stabilize the given resource.
  Parameters:
    `resource` - The resource to save.

### addResource

    public void addResource(Resource resource)

  Add this resource to this resource store.
  Parameters:
    `resource` - The resource to be added.

### removeResource

    public void removeResource(java.lang.String identifier)

  Remove this resource from the repository.
  Parameters:
    `identifier` - The identifier of the resource to be removed.

### renameResource

    public void renameResource(java.lang.String oldid,
                               java.lang.String newid)

  Rename a given resource.
  Parameters:
    `oldid` - The olde resource identifier.
    `newid` - The new resource identifier.

### markModified

    public void markModified(Resource resource)

  Mark this resource as modified.
  Parameters:
    `resource` - The resource that has changed (and will have to be pickled some time latter).

### acceptUnload

    public boolean acceptUnload()

  Can this resource store be unloaded now ? This method gets called by the ResourceStoreManager before calling the `shutdown` method, when possible. An implementation of that method is responsible for checking the `acceptUnload` method of all its loaded resource before returning true, meaning that the resource store can be unloaded.
  Returns:
    A boolean true if the resource store can be unloaded.

### shutdown

    public void shutdown()

  Shutdown this store.

### save

    public void save()

  Save this store.

### enumerateResourceIdentifiers

    public java.util.Enumeration enumerateResourceIdentifiers()

  Enumerate all the resources saved in this store.
  Returns:
    An enumeration of Strings, giving the identifier for all the resources that this store knows about.

### hasResource

    public boolean hasResource(java.lang.String identifier)

  Check for the existence of a resource in this store.
  Parameters:
    `identifier` - The identifier of the resource to check.
  Returns:
    A boolean true if the resource exists in this store, false otherwise.

### initialize

    public void initialize(ResourceStoreManager manager,
                           java.lang.Object token,
                           java.io.File repository)

  This resource store is being built, initialize it with the given arg.
  Parameters:
    `manager` - The ResourceStoreManager instance that asks yourself to initialize.
    `token` - The resource store manager key to that resource store, this token should be used when calling methods from the manager that are to act on yourself.
    `repository` - A file, giving the location of the associated repository.