    All Packages  Class Hierarchy  This Package  Previous  Next  Index

# Class w3c.jigsaw.resources.StoreContainer

    java.lang.Object
       |
       +----w3c.tools.store.AttributeHolder
               |
               +----w3c.tools.store.Resource
                       |
                       +----w3c.jigsaw.resources.HTTPResource
                               |
                               +----w3c.jigsaw.resources.FilteredResource
                                       |
                                       +----w3c.jigsaw.resources.ContainerResource
                                               |
                                               +----w3c.jigsaw.resources.StoreContainer

public abstract class StoreContainer
extends ContainerResource
implements ResourceStoreHolder

The abstract, store container resource class.

This class extends the basic ResourceContainer class to provide the management of the storage of children resources.

It provides means to add/remove children resources, and implement a basic lookup functionality. If marked extensible it will callback the `createDefaultResource` method to create them.

##

ATTR_EXTENSIBLE
  Attribute index - The index of wether we are extensible.
ATTR_INDEX
  Attribute index - our index resource name.
ATTR_RELOCATE
  Attribute index - The index for our relocate attribute.
ATTR_REPOSITORY
  Attribute index - The index of our store identifier.
children
  Our children resource store.

##

StoreContainer()

##

acceptStoreUnload(ResourceStore)
  ResourceStoreHolder implementation - Get rid of our store.
acquireChildren()
  Acquire the resource store.
addResource(Resource)
  Add an initialized resource into this store container instance.
delete()
  Delete that resource store.
delete(String)
  Delete a given child of this directory resource.
enumerateResourceIdentifiers(boolean)
  Enumerate the name (ie identifiers) of our children.
getClone(Object[])
  Clone a store container.
getExtensibleFlag()
  Get the extensible flag value.
getIndex()
  Get the optinal index name for this directory listing.
getRelocateFlag()
  Should we relocate invalid requests to this directory.
getRepository()
  Get our children resource store file.
getResourceStore(ResourceStoreHolder)
  ContainerInterface implementation - Hold underlying resource store.
hasResourceStore()
  ContainerInterface implementation - Do we manage a store ?
initialize(Object[])
  Initialize ourself.
lookup(LookupState, LookupResult)
  Lookup the next component of this lookup state in here.
lookup(String)
  Lookup the resource having the given name in this directory.
lookupStore(String)
  Lookup our store for a child of the given name.
lookupStore(String, Hashtable)
  Lookup our store for a child of the given name.
notifyStoreShutdown(ResourceStore)
  ResourceStoreHolder implementation - Shutdown our associated store.
notifyStoreStabilize(ResourceStore)
  ResourceStoreHolder implementation - Save our store.
notifyUnload()
  We are being unloaded.
registerResource(String, Resource, Hashtable)
  Initialize and register the given resource under the given name.
save()
  Save the current store to disk.
setValue(int, Object)
  Keep our cached repository value in sync.
updateDefaultChildAttributes(Hashtable)
  Update default child attributes.

##

ATTR_REPOSITORY

     protected static int ATTR_REPOSITORY

  Attribute index - The index of our store identifier.

ATTR_EXTENSIBLE

     protected static int ATTR_EXTENSIBLE

  Attribute index - The index of wether we are extensible.

ATTR_RELOCATE

     protected static int ATTR_RELOCATE

  Attribute index - The index for our relocate attribute.

ATTR_INDEX

     protected static int ATTR_INDEX

  Attribute index - our index resource name.

children

     protected ResourceStore children

  Our children resource store.

##

StoreContainer

     public StoreContainer()

##

acquireChildren

     protected synchronized void acquireChildren()

  Acquire the resource store. Should only be called from a synchronized method.

addResource

     protected synchronized void addResource(Resource resource)

  Add an initialized resource into this store container instance.

  Parameters:
    resource - The resource to be added to the store.

save

     protected synchronized void save()

  Save the current store to disk. This store container relies on its resource store for this operation.

hasResourceStore

     public final boolean hasResourceStore()

  ContainerInterface implementation - Do we manage a store ?

  Returns:
    Always true.
  Overrides:
    hasResourceStore in class ContainerResource

getResourceStore

     public synchronized ResourceStore getResourceStore(ResourceStoreHolder h)

  ContainerInterface implementation - Hold underlying resource store.

  Parameters:
    h - The resource store holder.
  Returns:
    A pointer to our underlying store.
  Overrides:
    getResourceStore in class ContainerResource

getClone

     public Object getClone(Object values[])

  Clone a store container. Cloning a store container doesn't clone the associated resource store. The clone gets a new, empty resource store by default.

  Parameters:
    values - The initial attribute values for the clone.
  Returns:
    A StoreContainer resource, having an empty store, but otherwise similar to its master.
  Overrides:
    getClone in class Resource

setValue

     public synchronized void setValue(int idx,
                                       Object value)

  Keep our cached repository value in sync.

  Parameters:
    idx - The index of the attribute to set.
    value - The new value for the attribute.
  Overrides:
    setValue in class HTTPResource

getRepository

     public synchronized File getRepository()

  Get our children resource store file. If we haven't created yet our backup file, we create it right now.

  Returns:
    A non-null File instance giving the location of the file used to dump our store.

getExtensibleFlag

     public boolean getExtensibleFlag()

  Get the extensible flag value. A DirectoryResource is extensible, if it is allowed to create new resources out of the file system knowledge on the fly.

  Setting this flag might slow down the server. It unfortunatelly defaults to true until I have a decent admin program.

  Returns:
    A boolean true if the directory is extensible.

getRelocateFlag

     public boolean getRelocateFlag()

  Should we relocate invalid requests to this directory.

  Returns:
    A boolean true if we should relocate.

getIndex

     public String getIndex()

  Get the optinal index name for this directory listing.

  Returns:
    The name of the resource responsible to list that container.

acceptStoreUnload

     public synchronized boolean acceptStoreUnload(ResourceStore store)

  ResourceStoreHolder implementation - Get rid of our store. The resource store manager has decided that our store hasn't been used enough in the past to be worth keeping around.

  We can still defer this operation by returning false in case a user is editing the store for example.

  Parameters:
    store - The store that to be freed.
  Returns:
    A boolean true if the resource store has been shutdown properly, false otherwise.

notifyStoreShutdown

     public synchronized void notifyStoreShutdown(ResourceStore store)

  ResourceStoreHolder implementation - Shutdown our associated store.

  Parameters:
    store - The store to shutdown.

notifyStoreStabilize

     public void notifyStoreStabilize(ResourceStore store)

  ResourceStoreHolder implementation - Save our store. Our store has probably been modified recently, save it.

  Parameters:
    store - The store to save.
  Returns:
    A boolean true if success.

updateDefaultChildAttributes

     protected void updateDefaultChildAttributes(Hashtable attrs)

  Update default child attributes. A parent can often pass default attribute values to its children, such as a pointer to itself (the parent attribute).

  This is the method to overide when you want your container to provide these kinds of attributes. By default this method will set the following attributes:

  name
    The name of the child (it's identifier) - String instance.
  parent
    The parent of the child (ie ourself here) - a ContainerResource instance.
  resource-store
    This child store - a ResourceStore instance.
  server
    The server context of the child - a httpd instance.
  url
    If a identifier attribute is defined, that attribute is set to the full URL path of the children.

registerResource

     public synchronized void registerResource(String identifier,
                                               Resource resource,
                                               Hashtable defs)

  Initialize and register the given resource under the given name.

  Overrides:
    registerResource in class ContainerResource

lookupStore

     protected synchronized HTTPResource lookupStore(String name,
                                                     Hashtable defs) throws InvalidResourceException

  Lookup our store for a child of the given name. This methods may trigger, on its first call, the creation of the children ResourceStore wich is done is a lazy way, so that areas not often visited don't get their store loaded.

  Parameters:
    name - The name of the child to lookup.
    defs - A set of default attribute values.
  Returns:
    A Resource instance, or null if no match was found.
  Throws: InvalidResourceException
    If the resource exists, but cannot be unloaded from the store.

lookupStore

     protected HTTPResource lookupStore(String name) throws InvalidResourceException

  Lookup our store for a child of the given name. This methods may trigger, on its first call, the creation of the children ResourceStore wich is done is a lazy way, so that areas not often visited don't get their store loaded.

  Parameters:
    name - The name of the child to lookup.
  Returns:
    A HTTPResource instance, or null if no match was found.

lookup

     public Resource lookup(String name) throws InvalidResourceException

  Lookup the resource having the given name in this directory.

  Parameters:
    name - The name of the resource.
  Returns:
    A resource instance, or null.
  Overrides:
    lookup in class ContainerResource

lookup

     public boolean lookup(LookupState ls,
                           LookupResult lr) throws HTTPException

  Lookup the next component of this lookup state in here.

  Parameters:
    ls - The current lookup state.
    lr - The lookup result under construction.
  Returns:
    A boolean, true if lookup has completed, false if it should be continued by the caller.
  Throws: HTTPException
    If an error occurs.
  Overrides:
    lookup in class ContainerResource

notifyUnload

     public synchronized void notifyUnload()

  We are being unloaded. Cleanup-up our attribute values, and make sure our store is closed.

  Overrides:
    notifyUnload in class Resource

delete

     public synchronized void delete()

  Delete that resource store. This also removes the store we are managing.

  Overrides:
    delete in class HTTPResource

delete

     public void delete(String child)

  Delete a given child of this directory resource.

  Parameters:
    child - The identifier of the child to delete.
  Overrides:
    delete in class ContainerResource

enumerateResourceIdentifiers

     public synchronized Enumeration enumerateResourceIdentifiers(boolean all)

  Enumerate the name (ie identifiers) of our children.

  Parameters:
    all - Should all resources be listed.
  Returns:
    An enumeration, providing one element per child, which is the name of the child, as a String.
  Overrides:
    enumerateResourceIdentifiers in class ContainerResource

initialize

     public void initialize(Object values[])

  Initialize ourself. As we are a container resource that really contains something, we make sure our URL ends properly with a slash.

  Parameters:
    values - Our default attribute values.
  Overrides:
    initialize in class FilteredResource

    All Packages  Class Hierarchy  This Package  Previous  Next  Index