## org.w3c.tools.resources
Class ContainerResource

    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

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, unsafeGetIdentifier, 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, 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
  Tags copied from class: AttributeHolder
  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
  Tags copied from 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.
  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.
  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.
  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
  Tags copied from class: AbstractContainer
  Parameters:
    `attrs` - A hashtable.

### enumerateResourceIdentifiers

    public java.util.Enumeration enumerateResourceIdentifiers(boolean all)

  Enumerate children resource identifiers.
  Overrides:
    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.
  Overrides:
    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.
  Overrides:
    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.
  Overrides:
    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

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