    All Packages  Class Hierarchy  This Package  Previous  Next  Index

# Class w3c.jigsaw.resources.DirectoryResource

    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
                                                       |
                                                       +----w3c.jigsaw.resources.DirectoryResource

public class DirectoryResource
extends StoreContainer

A simple, and reasonably efficient directory resource. This directory resource embeds its own resource store object to keep track of its next children (wich might themselves be DirectoryResource). It is reasonably efficient in the sense that it won't overload the memory with unused informations. However, stay tuned for a really efficient file based directory resource (tuned to serve only files).

##

ATTR_DIRECTORY
  Attribute index - The index for our directory attribute.
ATTR_DIRSTAMP
  Attribute index - The last we we physically visited the directory.
ATTR_ICONDIR
  Attribute index - The icon directory to use in dir listing.
ATTR_INDEXER
  Attribute index - The indexer to use for that directory, if any.
ATTR_NEGOTIABLE
  Attribute index - Should this directory support content negotiation.
listing
  Our current (cached) directory listing.
listing_stamp
  The time at which we generated the directory index.

##

DirectoryResource()

##

checkIfModifiedSince(Request)
  Check the `If-Modified-Since` condition of that request.
createDefaultResource(String)
  Try creating a default resource having the given name.
delete()
  Delete this directory resource, for ever.
enumerateResourceIdentifiers(boolean)
  Enumerate all available children resource identifiers.
get(Request)
  GET on a directory, generate a directory listing.
getDirectory()
  Get the physical directory exported by this resource.
getDirectoryListing(Request)
  Reply with an HTML doc listing the resources of this directory.
getDirStamp()
  Get the absolute time at which we examined the physicall directory.
getIconDirectory()
  Get the optional icon directory.
getIndexer(ResourceContext)
  Get the indexer out of the given context.
getNegotiableFlag()
  Get the negotiable flag for this directory.
initialize(Object[])
  Initialize this directory resource with the given set of attributes.
main(String[])
  Create an empty resource store, and store a default resource directory in it.
setValue(int, Object)
  Keep our cached repository value in sync.
updateDefaultChildAttributes(Hashtable)
  Initialize and register a new resource into this directory.
updateNegotiableResource(String)
  Update a negotiable resource.
verify()
  Verify that resource.

##

ATTR_DIRECTORY

     protected static int ATTR_DIRECTORY

  Attribute index - The index for our directory attribute.

ATTR_ICONDIR

     protected static int ATTR_ICONDIR

  Attribute index - The icon directory to use in dir listing.

ATTR_DIRSTAMP

     protected static int ATTR_DIRSTAMP

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

ATTR_NEGOTIABLE

     protected static int ATTR_NEGOTIABLE

  Attribute index - Should this directory support content negotiation.

ATTR_INDEXER

     protected static int ATTR_INDEXER

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

listing

     protected HtmlGenerator listing

  Our current (cached) directory listing.

listing_stamp

     protected long listing_stamp

  The time at which we generated the directory index.

##

DirectoryResource

     public DirectoryResource()

##

updateNegotiableResource

     public synchronized void updateNegotiableResource(String name)

  Update a negotiable resource. Given the name of a resource that exists, create or update the attributes of a resource that allows to negotiate its content.

  I hate this part here: it has nothing to do within the directory resource itself, and the indexer shouldn't know that much about directory resource, so I am stuck.

  Parameters:
    name - The name of the newly created resource.

getIndexer

     protected ResourceIndexer 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,
                          Object value)

  Keep our cached repository value in sync.

  Overrides:
    setValue in class StoreContainer

createDefaultResource

     public synchronized HTTPResource createDefaultResource(String name)

  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.
  Returns:
    A HTTPResource instance, if possible, null otherwise.
  Overrides:
    createDefaultResource in class ContainerResource

updateDefaultChildAttributes

     protected void updateDefaultChildAttributes(Hashtable attrs)

  Initialize and register a new resource into this directory.

  Parameters:
    resource - The uninitialized resource to be added.
  Overrides:
    updateDefaultChildAttributes in class StoreContainer

getDirectory

     public File getDirectory()

  Get the physical directory exported by this resource.

  Returns:
    A non-null File object giving the directory of this resource.

getIconDirectory

     public String getIconDirectory()

  Get the optional icon directory.

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.

getNegotiableFlag

     public boolean getNegotiableFlag()

  Get the negotiable flag for this directory. When turned to true, this flag indicates to the directory resource that it should automatically build negotiated resources ont op of all existing resources.

  You should know, at least, that turning this flag on has some not so small cost in terms of the size of the index files, and some not so small costs in CPU time when detecting not found documents. Otherwise, in all other situations its cost is probably negligible.

  Returns:
    A boolean, true if the directory is extensible false otherwise.

initialize

     public void initialize(Object values[])

  Initialize this directory resource with the given set of attributes.

  Parameters:
    values - The attribute values.
  Overrides:
    initialize in class StoreContainer

enumerateResourceIdentifiers

     public 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 StoreContainer

getDirectoryListing

     public synchronized Reply getDirectoryListing(Request request) throws HTTPException

  Reply with an HTML doc listing the resources of this directory. This function takes special care not to regenerate a directory listing when one is available. It also caches the date of the directory listing, so that it can win big with NOT_MODIFIED.

  Using a modem, I know that each place I can reply with an NOT_MODIFIED, is a big win.

  Parameters:
    request - The request to handle.
  Throws: HTTPException
    If processsing the request failed.

checkIfModifiedSince

     public int checkIfModifiedSince(Request request)

  Check the `If-Modified-Since` condition of that request.

  Parameters:
    request - The request to check.
  Returns:
    An integer, either `COND_FAILED if condition was checked, but failed, `COND_OK` if condition was checked and succeeded, or 0 if the condition was not checked at all (eg because the resource or the request didn't support it).`
  Overrides:
    checkIfModifiedSince in class HTTPResource

get

     public Reply get(Request request) throws HTTPException

  GET on a directory, generate a directory listing.

  Parameters:
    request - The request to handle.
  Overrides:
    get in class HTTPResource

delete

     public synchronized void delete()

  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 is removed from its inital store and will not be unpickleable any more.

  Overrides:
    delete in class StoreContainer

verify

     public synchronized boolean verify()

  Verify that resource.

  Overrides:
    verify in class HTTPResource

main

     public static void main(String args[]) throws Exception

  Create an empty resource store, and store a default resource directory in it.

    All Packages  Class Hierarchy  This Package  Previous  Next  Index