org.w3c.tools.resources.indexer
Class SampleResourceIndexer

java.lang.Object
  |
  +--org.w3c.tools.resources.AttributeHolder
        |
        +--org.w3c.tools.resources.Resource
              |
              +--org.w3c.tools.resources.indexer.SampleResourceIndexer
Direct Known Subclasses:
ContentTypeIndexer, GhostResourceIndexer, ServletIndexer, ZipIndexer

public class SampleResourceIndexer
extends Resource
implements ContainerInterface, ResourceIndexer

A container for directories and templates.


Field Summary
protected static int ATTR_CONTEXT
          Attribute index - the context (a nasty hack)
protected static int ATTR_LAST_MODIFIED
          Attribute index - Date of last modification.
protected static int ATTR_SUPER_INDEXER
          Attribute index - the super indexer, if any.
protected  ResourceReference contentTypes
           
protected static java.lang.String defname
           
protected  ResourceReference directories
           
protected static boolean extCaseSensitive
           
protected  ResourceReference extensions
           
 
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
SampleResourceIndexer()
           
SampleResourceIndexer(ResourceContext ctxt)
           
 
Method Summary
protected  Resource createDirectoryResource(java.io.File directory, RequestInterface req, java.lang.String name, java.util.Hashtable defs)
          Create a default container resource for this directory (that exists).
protected  Resource createFileResource(java.io.File directory, RequestInterface req, java.lang.String name, java.util.Hashtable defs)
          Create a default file resource for this file (that exists).
 Resource createResource(ContainerResource container, RequestInterface request, java.io.File directory, java.lang.String name, java.util.Hashtable defs)
          Try to create a resource for the given file.
protected  Resource createVirtualResource(java.io.File directory, RequestInterface req, java.lang.String name, java.util.Hashtable defs)
          Try to create a virtual resource if the real (physical) resource is not there.
 void delete()
          Delete this inexer
 void delete(java.lang.String name)
           
 java.util.Enumeration enumerateResourceIdentifiers(boolean all)
           
protected  ResourceContext getContext()
           
protected  ResourceReference getDirectories()
           
protected  ResourceReference getExtensions()
           
protected  java.lang.String[] getFileExtensions(java.lang.String name)
           
protected  java.lang.String getIndexedDirName(java.lang.String name)
           
protected  java.lang.String getIndexedFileName(java.lang.String name)
           
 java.lang.String getIndexedName(java.io.File directory, java.lang.String name)
          Get the name of the resource relative to the given filename.
 java.lang.String getSuperIndexer()
           
protected  ResourceReference getTemplateFor(java.lang.String ext)
          Return the class (if any) that our store defines for given extension.
 long lastModified()
           
 ResourceReference loadDirectory(java.lang.String name)
          Load a given directory template from the store.
 ResourceReference loadExtension(java.lang.String name)
           
 ResourceReference lookup(java.lang.String name)
           
protected  java.util.Hashtable mergeDefaultAttributes(Resource template, java.lang.String ext, java.util.Hashtable into)
          Merge the attributes this extension defines, with the provided ones.
protected  void mergeFrameAttributes(ResourceFrame origFrame, java.lang.String ext, ResourceReference frameref)
          Merge the attributes this extension defines, with the provided ones.
 void registerResource(java.lang.String name, Resource resource, java.util.Hashtable defs)
           
 
Methods inherited from class org.w3c.tools.resources.Resource
acceptUnload, checkMultipleLock, collectFrames, getClone, getFrame, getFrames, getHelpURL, getHelpURL, getIdentifier, getLastModified, getParent, getResourceReference, getServer, getSpace, getSpaceEntry, getStoreEntry, getURLPath, getValue, getValue, initialize, isInitialized, isUnloaded, markModified, notifyUnload, registerFrame, setContext, setContext, setValue, setValue, unregisterFrame, 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

extCaseSensitive

protected static final boolean extCaseSensitive

defname

protected static final java.lang.String defname

ATTR_LAST_MODIFIED

protected static int ATTR_LAST_MODIFIED
Attribute index - Date of last modification.

ATTR_CONTEXT

protected static int ATTR_CONTEXT
Attribute index - the context (a nasty hack)

ATTR_SUPER_INDEXER

protected static int ATTR_SUPER_INDEXER
Attribute index - the super indexer, if any.

directories

protected ResourceReference directories

extensions

protected ResourceReference extensions

contentTypes

protected ResourceReference contentTypes
Constructor Detail

SampleResourceIndexer

public SampleResourceIndexer(ResourceContext ctxt)

SampleResourceIndexer

public SampleResourceIndexer()
Method Detail

getContext

protected ResourceContext getContext()
Overrides:
getContext in class Resource

getDirectories

protected ResourceReference getDirectories()

getExtensions

protected ResourceReference getExtensions()

lastModified

public long lastModified()
Specified by:
lastModified in interface ResourceIndexer

getSuperIndexer

public java.lang.String getSuperIndexer()

enumerateResourceIdentifiers

public java.util.Enumeration enumerateResourceIdentifiers(boolean all)
Specified by:
enumerateResourceIdentifiers in interface ContainerInterface

lookup

public ResourceReference lookup(java.lang.String name)
Specified by:
lookup in interface ContainerInterface

delete

public void delete()
            throws MultipleLockException
Delete this inexer
Throws:
MultipleLockException - if someone else has locked the indexer.
Overrides:
delete in class Resource

delete

public void delete(java.lang.String name)
Specified by:
delete in interface ContainerInterface

registerResource

public void registerResource(java.lang.String name,
                             Resource resource,
                             java.util.Hashtable defs)
Specified by:
registerResource in interface ContainerInterface

loadExtension

public ResourceReference loadExtension(java.lang.String name)

getTemplateFor

protected ResourceReference getTemplateFor(java.lang.String ext)
Return the class (if any) that our store defines for given extension.
Parameters:
ext - The extension we want a class for.
Returns:
A Class instance, or null.

mergeDefaultAttributes

protected java.util.Hashtable mergeDefaultAttributes(Resource template,
                                                     java.lang.String ext,
                                                     java.util.Hashtable into)
Merge the attributes this extension defines, with the provided ones.
Parameters:
attrs - The attributes we want to fill with default values.
ext - The extension name.
into - The already built set of default values.
Returns:
A Hashtable, containing the augmented set of default attribute values.

mergeFrameAttributes

protected void mergeFrameAttributes(ResourceFrame origFrame,
                                    java.lang.String ext,
                                    ResourceReference frameref)
Merge the attributes this extension defines, with the provided ones.
Parameters:
origFrame - The original frame
ext - The extension name
into - The ResourceReference of the frame to be merged

getFileExtensions

protected java.lang.String[] getFileExtensions(java.lang.String name)

createFileResource

protected Resource createFileResource(java.io.File directory,
                                      RequestInterface req,
                                      java.lang.String name,
                                      java.util.Hashtable defs)
Create a default file resource for this file (that exists).
Parameters:
directory - The directory of the file.
name - The name of the file.
defs - A set of default attribute values.
Returns:
An instance of Resource, or null if we were unable to create it.

loadDirectory

public ResourceReference loadDirectory(java.lang.String name)
Load a given directory template from the store.
Parameters:
name - The name of the template to load.
Returns:
An instance of ResourceReference, or null.

createDirectoryResource

protected Resource createDirectoryResource(java.io.File directory,
                                           RequestInterface req,
                                           java.lang.String name,
                                           java.util.Hashtable defs)
Create a default container resource for this directory (that exists).
Parameters:
directory - The parent directory.
req - the request that triggered this creation
name - The name of its sub-directory to index.
defaults - A set of default atribute values.
Returns:
A Resource instance, or null if the indexer was unable to build a default resource for the directory.

createVirtualResource

protected Resource createVirtualResource(java.io.File directory,
                                         RequestInterface req,
                                         java.lang.String name,
                                         java.util.Hashtable defs)
Try to create a virtual resource if the real (physical) resource is not there.
Parameters:
directory - The directory the file is in.
req - the request that triggered this creation
name - The name of the file.
defs - Any default attribute values that should be provided to the created resource at initialization time.
Returns:
A Resource instance, or null if the given file can't be truned into a resource given our configuration database.

createResource

public Resource createResource(ContainerResource container,
                               RequestInterface request,
                               java.io.File directory,
                               java.lang.String name,
                               java.util.Hashtable defs)
Try to create a resource for the given file. This method makes its best efforts to try to build a default resource out of a file.
Specified by:
createResource in interface ResourceIndexer
Parameters:
directory - The directory the file is in.
name - The name of the file.
defs - Any default attribute values that should be provided to the created resource at initialization time.
Returns:
A Resource instance, or null if the given file can't be truned into a resource given our configuration database.

getIndexedName

public java.lang.String getIndexedName(java.io.File directory,
                                       java.lang.String name)
Get the name of the resource relative to the given filename.
Specified by:
getIndexedName in interface ResourceIndexer
Parameters:
name - The name of the file.
Returns:
a String, the resource name.

getIndexedFileName

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

getIndexedDirName

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