org.w3c.tools.resources
Class ContainerResource

java.lang.Object
  extended by org.w3c.tools.resources.AttributeHolder
      extended by org.w3c.tools.resources.Resource
          extended by org.w3c.tools.resources.FramedResource
              extended by org.w3c.tools.resources.AbstractContainer
                  extended by org.w3c.tools.resources.ContainerResource
All Implemented Interfaces:
java.lang.Cloneable, java.util.EventListener, ContainerInterface, AttributeChangedListener, FrameEventListener, StructureChangedListener
Direct Known Subclasses:
CvsEntryResource, DirectoryResource, ExternalContainer, VirtualHostResource

public class ContainerResource
extends AbstractContainer

This resource manage children resources.


Field Summary
protected  boolean acquired
           
protected static int ATTR_KEY
          Attribute index - The index of the resource key.
static boolean debug
           
 
Fields inherited from class org.w3c.tools.resources.AbstractContainer
ur
 
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, co, id
 
Fields inherited from class org.w3c.tools.resources.AttributeHolder
attributes, values
 
Constructor Summary
ContainerResource()
           
 
Method Summary
protected  void acquireChildren()
          Acquire our children.
protected  ResourceReference addResource(Resource resource, java.util.Hashtable defs)
          Add an initialized resource into this store container instance.
 ResourceReference createDefaultResource(java.lang.String name)
          Create a default child resource in that container.
 void delete()
          Delete that resource container.
 void delete(java.lang.String name)
          Remove a child resource from that container.
protected  void deleteChildren()
           
 java.util.Enumeration enumerateResourceIdentifiers(boolean all)
          Enumerate children resource identifiers.
protected  SpaceEntry getChildrenSpaceEntry()
          Get the SpaceEntry of our children resources.
 java.lang.Object getClone(java.lang.Object[] values)
          Clone this attribute holder, and init it with the given attributes.
 java.lang.Integer getKey()
          Get the container Key.
protected  int getMatchingCharsCount(java.lang.String s1, java.lang.String s2)
          Get the number of matching character (case sensitive).
protected  SpaceEntry getSpaceEntry()
          Get the space entry for that resource.
 void initialize(java.lang.Object[] values)
          Initialize ourself.
protected  ResourceReference internalLookup(java.lang.String name, SpaceEntry sp, ResourceSpace space)
           
 boolean lookup(LookupState ls, LookupResult lr)
          Lookup the next component of this lookup state in here.
 ResourceReference lookup(java.lang.String name)
          Lookup a children in the container.
 void notifyUnload()
          This resource is being unloaded.
 void registerResource(java.lang.String name, Resource resource, java.util.Hashtable defs)
          Initialize and register the given resource within that container.
 void replace(DirectoryResource newdir)
          Delete that container and its children if children is true
 void resourceCreated(StructureChangedEvent evt)
          A new resource has been created in some space.
 void resourceModified(StructureChangedEvent evt)
          This handles the RESOURCE_MODIFIED kind of events.
 void resourceRemoved(StructureChangedEvent evt)
          A resource is about to be removed This handles the RESOURCE_REMOVED kind of events.
protected  ResourceContext updateDefaultChildAttributes(java.util.Hashtable attrs)
          Update default child attributes.
 
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, setSilentValue, setSilentValue, setValue, 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, initialize, isInitialized, isUnloaded, pickleValues, setContext, setContext, setValue, unsafeGetContext, unsafeGetFrame, unsafeGetFrames, unsafeGetIdentifier, unsafeGetResourceReference, unsafeGetURLPath, unsafeGetValue, updateAttributes
 
Methods inherited from class org.w3c.tools.resources.AttributeHolder
definesAttribute, definesAttribute, getAttributes, getBoolean, getChar, getClone, getClone, getDouble, getFloat, getInt, getLong, getString, getValue, lookupAttribute, print, setBoolean, setChar, setDouble, setFloat, setInt, setLong, setString, setValue, unsafeDefinesAttribute, unsafeGetDouble, unsafeGetString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

debug

public static boolean debug

ATTR_KEY

protected static int ATTR_KEY
Attribute index - The index of the resource key.


acquired

protected boolean acquired
Constructor Detail

ContainerResource

public ContainerResource()
Method Detail

getClone

public java.lang.Object getClone(java.lang.Object[] values)
Description copied from class: AttributeHolder
Clone this attribute holder, and init it with the given attributes.

Overrides:
getClone in class FramedResource
Parameters:
values - Attribute values to overide in the clone.
Returns:
A clone of this resource.

getKey

public java.lang.Integer getKey()
Get the container Key. This key must be unique and unchanged during the container life.

Returns:
a String instance.

getSpaceEntry

protected SpaceEntry getSpaceEntry()
Description copied from class: Resource
Get the space entry for that resource. This Object is use to retrieve the resource in the resource space.

Overrides:
getSpaceEntry in class Resource
Returns:
A spaceEntry instance.

getChildrenSpaceEntry

protected SpaceEntry getChildrenSpaceEntry()
Get the SpaceEntry of our children resources.

Returns:
A SpaceEntry instance.

resourceModified

public void resourceModified(StructureChangedEvent evt)
This handles the RESOURCE_MODIFIED kind of events.

Specified by:
resourceModified in interface StructureChangedListener
Overrides:
resourceModified in class AbstractContainer
Parameters:
evt - The StructureChangeEvent.

resourceCreated

public void resourceCreated(StructureChangedEvent evt)
A new resource has been created in some space. This handles the RESOURCE_CREATED kind of events.

Specified by:
resourceCreated in interface StructureChangedListener
Overrides:
resourceCreated in class AbstractContainer
Parameters:
evt - The event describing the change.

resourceRemoved

public void resourceRemoved(StructureChangedEvent evt)
A resource is about to be removed This handles the RESOURCE_REMOVED kind of events.

Specified by:
resourceRemoved in interface StructureChangedListener
Overrides:
resourceRemoved in class AbstractContainer
Parameters:
evt - The event describing the change.

updateDefaultChildAttributes

protected ResourceContext updateDefaultChildAttributes(java.util.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.
url
If a identifier attribute is defined, that attribute is set to the full URL path of the children.

Overrides:
updateDefaultChildAttributes in class AbstractContainer
Parameters:
attrs - A hashtable.

enumerateResourceIdentifiers

public java.util.Enumeration enumerateResourceIdentifiers(boolean all)
Enumerate children resource identifiers.

Specified by:
enumerateResourceIdentifiers in interface ContainerInterface
Specified by:
enumerateResourceIdentifiers in class AbstractContainer
Parameters:
all - Should all resources be enumerated ? Resources are often created on demand only, this flag allows the caller to tell the container about wether it is interested only in already created resources, or in all resources (even the one that have not yet been created).
Returns:
An String enumeration, one element per child.

createDefaultResource

public ResourceReference createDefaultResource(java.lang.String name)
Create a default child resource in that container. This method is called by the editor to add a default resource in the container under the given name. The meaning of default is left up to the container here.

Specified by:
createDefaultResource in class AbstractContainer
Parameters:
name - The identifier for the new resource.

getMatchingCharsCount

protected int getMatchingCharsCount(java.lang.String s1,
                                    java.lang.String s2)
Get the number of matching character (case sensitive). ex getMatchingCharsCount("index.html", "Index.html") = 10.

Parameters:
s1 - the first string.
s2 - the second string.
Returns:
-1 if s1 and s2 are not equals (ignoring case), otherwise the number of matching character (case sensitive).

lookup

public ResourceReference lookup(java.lang.String name)
Lookup a children in the container.

Specified by:
lookup in interface ContainerInterface
Specified by:
lookup in class AbstractContainer
Parameters:
name - The name of the children to lookup.

internalLookup

protected ResourceReference internalLookup(java.lang.String name,
                                           SpaceEntry sp,
                                           ResourceSpace space)

lookup

public boolean lookup(LookupState ls,
                      LookupResult lr)
               throws ProtocolException
Lookup the next component of this lookup state in here.

Overrides:
lookup in class FramedResource
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:
ProtocolException - If an error occurs.

delete

public void delete(java.lang.String name)
            throws MultipleLockException
Remove a child resource from that container.

Specified by:
delete in interface ContainerInterface
Specified by:
delete in class AbstractContainer
Parameters:
name - The name of the child to remove.
Throws:
MultipleLockException - If somone else has locked the resource.

replace

public void replace(DirectoryResource newdir)
             throws MultipleLockException
Delete that container and its children if children is true

Throws:
MultipleLockException - If somone else has locked one of the resource child.

delete

public void delete()
            throws MultipleLockException
Delete that resource container.

Overrides:
delete in class FramedResource
Throws:
MultipleLockException - If somone else has locked the resource.

deleteChildren

protected void deleteChildren()
                       throws MultipleLockException
Throws:
MultipleLockException

notifyUnload

public void notifyUnload()
This resource is being unloaded. The resource is being unloaded from memory, perform any additional cleanup required.

Overrides:
notifyUnload in class FramedResource

acquireChildren

protected void acquireChildren()
Acquire our children. Must be called before all child manipulation.


addResource

protected ResourceReference addResource(Resource resource,
                                        java.util.Hashtable defs)
Add an initialized resource into this store container instance.

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

registerResource

public void registerResource(java.lang.String name,
                             Resource resource,
                             java.util.Hashtable defs)
                      throws InvalidResourceException
Initialize and register the given resource within that container.

Specified by:
registerResource in interface ContainerInterface
Specified by:
registerResource in class AbstractContainer
Parameters:
name - The identifier for the resource.
resource - An unitialized resource instance.
defs - A default set of init attribute values (may be null).
Throws:
InvalidResourceException - If an error occurs during the registration.

initialize

public void initialize(java.lang.Object[] values)
Initialize ourself. As we are a container resource that really contains something, we make sure our URL ends properly with a slash.

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