## org.w3c.tools.resources
Class DirectoryResource

    java.lang.Object
      |
      +--org.w3c.tools.resources.AttributeHolder
            |
            +--org.w3c.tools.resources.Resource
                  |
                  +--org.w3c.tools.resources.FramedResource
                        |
                        +--org.w3c.tools.resources.AbstractContainer
                              |
                              +--org.w3c.tools.resources.ContainerResource
                                    |
                                    +--org.w3c.tools.resources.DirectoryResource

Direct Known Subclasses:
  DirectoryResource, PassDirectory, ZipDirectoryResource

public class DirectoryResource
extends ContainerResource

A simple, and reasonably efficient directory resource.

Field Summary
`protected static int` | `ATTR_DIRECTORY` Attribute index - The index for our directory attribute.
`protected static int` | `ATTR_DIRSTAMP` Attribute index - The last time we physically visited the directory.
`protected static int` | `ATTR_EXTENSIBLE` Attribute index - The index of wether we are extensible.
`protected static int` | `ATTR_INDEXER` Attribute index - The indexer to use for that directory, if any.

Fields inherited from class org.w3c.tools.resources.ContainerResource
`acquired, ATTR_KEY`

Fields inherited from class org.w3c.tools.resources.FramedResource
`ATTR_OID, attrListener, debugEvent, event_disabled, framesRef, structListener`

Fields inherited from class org.w3c.tools.resources.Resource
`ATTR_CONTEXT, ATTR_HELP_URL, ATTR_IDENTIFIER, ATTR_LAST_MODIFIED, ATTR_PARENT, ATTR_RESOURCE_FRAMES, ATTR_STORE_ENTRY, ATTR_URL`

Fields inherited from class org.w3c.tools.resources.AttributeHolder
`attributes, slowpickle, values`

Constructor Summary
`DirectoryResource()`

Method Summary
`ResourceReference` | `createDefaultResource(java.lang.String name)`
`protected ResourceReference` | `createDefaultResource(java.lang.String name, RequestInterface req)` Try creating a default resource having the given name.
`ResourceReference` | `createDirectoryResource(java.lang.String name)` Create a DirectoryResource and the physical directory too.
`ResourceReference` | `createResource(java.lang.String name)` Create a Resource and the physical file too.
`ResourceReference` | `createResource(java.lang.String name, RequestInterface req)` Create a Resource and the physical file too.
`void` | `delete()` Delete this directory resource, for ever.
`protected java.util.Enumeration` | `enumerateAllResourceIdentifiers()` Enumerate all available children resource identifiers.
`java.util.Enumeration` | `enumerateResourceIdentifiers(boolean all)` Enumerate all available children resource identifiers.
`java.io.File` | `getDirectory()` Get the physical directory exported by this resource.
`long` | `getDirStamp()` Get the absolute time at which we examined the physicall directory.
`boolean` | `getExtensibleFlag()` Get the extensible flag value.
`protected java.lang.String` | `getIndexedName(java.lang.String name)` Get the name of the resource relative to the given filename.
`protected ResourceReference` | `getIndexer(ResourceContext c)` Get the indexer out of the given context.
`protected Resource` | `index(java.lang.String name, java.util.Hashtable defs, RequestInterface req)` Index a Resource.
`void` | `initialize(java.lang.Object[] values)` Initialize this directory resource with the given set of attributes.
`ResourceReference` | `lookup(java.lang.String name)` Lookup the resource having the given name in this directory.
`void` | `reindex()` Reindex recursivly all the resources from this DirectoryResource.
`void` | `resourceRemoved(StructureChangedEvent evt)` A resource is about to be removed This handles the `RESOURCE_REMOVED` kind of events.
`void` | `setValue(int idx, java.lang.Object value)`
`protected ResourceContext` | `updateDefaultChildAttributes(java.util.Hashtable attrs)` Initialize and register a new resource into this directory.
`boolean` | `verify()` Was return false (don't khow why)

Methods inherited from class org.w3c.tools.resources.ContainerResource
`acquireChildren, addResource, delete, deleteChildren, getChildrenSpaceEntry, getClone, getKey, getMatchingCharsCount, getSpaceEntry, internalLookup, lookup, notifyUnload, registerResource, replace, resourceCreated, resourceModified`

Methods inherited from class org.w3c.tools.resources.AbstractContainer
`attributeChanged, enumerateResourceIdentifiers, resourceUnloaded`

Methods inherited from class org.w3c.tools.resources.FramedResource

`addAttributeChangedListener, addStructureChangedListener, collectFramesReference, disableEvent, displayEvent, enableEvent, eventDisabled, fireAttributeChangeEvent, fireStructureChangedEvent, fireStructureChangedEvent, frameAdded, frameModified, frameRemoved, getFrame, getFrame, getFrameReference, getFrameReference, getFramesReference, getOid, markModified, perform, performFrames, postAttributeChangeEvent, postEvent, postStructureChangedEvent, postStructureChangedEvent, processEvent, registerFrame, registerFrameIfNone, removeAttributeChangedListener, removeStructureChangedListener, unregisterFrame`

Methods inherited from class org.w3c.tools.resources.Resource
`acceptUnload, checkMultipleLock, collectFrames, getContext, getFrame, getFrames, getHelpURL, getHelpURL, getIdentifier, getLastModified, getParent, getResourceReference, getServer, getSpace, getStoreEntry, getURLPath, getValue, getValue, isInitialized, isUnloaded, setContext, setContext, setValue, updateAttributes`

Methods inherited from class org.w3c.tools.resources.AttributeHolder
`definesAttribute, definesAttribute, getAttributes, getBoolean, getChar, getClone, getClone, getDouble, getFloat, getInt, getLong, getString, getValue, initialize, lookupAttribute, pickle, print, setBoolean, setChar, setDouble, setFloat, setInt, setLong, setString, setValue, unpickle, unpickle, unpickle, unpickleInstance, unpickleInstance`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### ATTR_DIRECTORY

    protected static int ATTR_DIRECTORY

  Attribute index - The index for our directory attribute.

### ATTR_DIRSTAMP

    protected static int ATTR_DIRSTAMP

  Attribute index - The last time we physically visited the directory.

### ATTR_INDEXER

    protected static int ATTR_INDEXER

  Attribute index - The indexer to use for that directory, if any.

### ATTR_EXTENSIBLE

    protected static int ATTR_EXTENSIBLE

  Attribute index - The index of wether we are extensible.

Constructor Detail

### DirectoryResource

    public DirectoryResource()

Method Detail

### getIndexer

    protected ResourceReference getIndexer(ResourceContext c)

  Get the indexer out of the given context.
  Returns:
    A ResourceIndexer instance, guaranteeed not to be null.

### setValue

    public void setValue(int idx,
                         java.lang.Object value)

  Overrides:
    setValue in class FramedResource

### getDirectory

    public java.io.File getDirectory()

  Get the physical directory exported by this resource.
  Returns:
    A non-null File object giving the directory of this resource.

### getDirStamp

    public long getDirStamp()

  Get the absolute time at which we examined the physicall directory.
  Returns:
    The date (as a long number of ms since Java epoch), or -1 if we never examined it before.

### 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.

### resourceRemoved

    public void resourceRemoved(StructureChangedEvent evt)

  A resource is about to be removed This handles the `RESOURCE_REMOVED` kind of events.
  Parameters:
    `evt` - The event describing the change.
  Overrides:
    resourceRemoved in class ContainerResource

### createDirectoryResource

    public ResourceReference createDirectoryResource(java.lang.String name)

  Create a DirectoryResource and the physical directory too.
  Parameters:
    `name` - the name of the resource.
  Returns:
    A ResourceReference instance.

### createResource

    public ResourceReference createResource(java.lang.String name)

  Create a Resource and the physical file too.
  Parameters:
    `name` - the name of the resource.
  Returns:
    A ResourceReference instance.

### createResource

    public ResourceReference createResource(java.lang.String name,
                                            RequestInterface req)

  Create a Resource and the physical file too.
  Parameters:
    `name` - the name of the resource.
    `req` - the protocol request.
  Returns:
    A ResourceReference instance.

### index

    protected Resource index(java.lang.String name,
                             java.util.Hashtable defs,
                             RequestInterface req)

  Index a Resource. Call the indexer.
  Parameters:
    `name` - The name of the resource to index.
    `defs` - The defaults attributes.
    `req` - The protocol request.
  Returns:
    A resource instance.
  See Also:
    `SampleResourceIndexer`

### getIndexedName

    protected java.lang.String getIndexedName(java.lang.String name)

  Get the name of the resource relative to the given filename.
  Parameters:
    `name` - The name of the file.
  Returns:
    a String, the resource name.
  See Also:
    `SampleResourceIndexer`

### createDefaultResource

    public ResourceReference createDefaultResource(java.lang.String name)

  Overrides:
    createDefaultResource in class ContainerResource

### createDefaultResource

    protected ResourceReference createDefaultResource(java.lang.String name,
                                                      RequestInterface req)

  Try creating a default resource having the given name. This method will make its best effort to create a default resource having this name in the directory. If a file with this name exists, it will check the pre-defined admin extensions and look for a match. If a directory with this name exists, and admin allows to do so, it will create a sub-directory resource.
  Parameters:
    `name` - The name of the resource to try to create.
    `req` - The incomming request
  Returns:
    A Resource instance, if possible, null otherwise.

### updateDefaultChildAttributes

    protected ResourceContext updateDefaultChildAttributes(java.util.Hashtable attrs)

  Initialize and register a new resource into this directory.
  Parameters:
    `resource` - The uninitialized resource to be added.
  Overrides:
    updateDefaultChildAttributes in class ContainerResource

### reindex

    public void reindex()

  Reindex recursivly all the resources from this DirectoryResource.

### enumerateAllResourceIdentifiers

    protected java.util.Enumeration enumerateAllResourceIdentifiers()

  Enumerate all available children resource identifiers. This method requires that we create all our pending resources.
  Returns:
    An enumeration of all our resources.

### enumerateResourceIdentifiers

    public java.util.Enumeration enumerateResourceIdentifiers(boolean all)

  Enumerate all available children resource identifiers. This method requires that we create all our pending resources if we are in the extensible mode...too bad !
  Returns:
    An enumeration of all our resources.
  Overrides:
    enumerateResourceIdentifiers in class ContainerResource

### lookup

    public ResourceReference lookup(java.lang.String name)

  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

### delete

    public void delete()
                throws MultipleLockException

  Delete this directory resource, for ever. This method will delete the directory resource, and its associated store, along with any of the sub-resources it contains. Deleting the root directory of your server might take sometime...

  Once the resource is deleted, it isx1 removed from its inital store and will not be unpickleable any more.

  Throws:
    MultipleLockException - if someone has locked this resource.
  Overrides:
    delete in class ContainerResource

### verify

    public boolean verify()

  Was return false (don't khow why)

### initialize

    public void initialize(java.lang.Object[] values)

  Initialize this directory resource with the given set of attributes.
  Parameters:
    `values` - The attribute values.
  Overrides:
    initialize in class ContainerResource