FileDocCategorySizeDatePackage
WebResourceCollectionNode.javaAPI DocGlassfish v2 API6194Fri May 04 22:31:48 BST 2007com.sun.enterprise.deployment.node.web

WebResourceCollectionNode

public class WebResourceCollectionNode extends com.sun.enterprise.deployment.node.DeploymentDescriptorNode
This nodes handles the web-collection xml tag element
author
Jerome Dochez
version

Fields Summary
private com.sun.enterprise.deployment.WebResourceCollectionImpl
descriptor
private static com.sun.enterprise.util.LocalStringManagerImpl
localStrings
Constructors Summary
Methods Summary
public java.lang.ObjectgetDescriptor()

return
the descriptor instance to associate with this XMLNode


                 
       
        if (descriptor==null) {
            descriptor = (WebResourceCollectionImpl) DescriptorFactory.getDescriptor(getXMLPath());
        }
        return descriptor;
    
protected java.util.MapgetDispatchTable()
all sub-implementation of this class can use a dispatch table to map xml element to method name on the descriptor class for setting the element value.

return
the map with the element name as a key, the setter method as a value

    
        Map table = super.getDispatchTable();
        table.put(WebTagNames.WEB_RESOURCE_NAME, "setName");
        table.put(WebTagNames.HTTP_METHOD, "addHttpMethod");        
        return table;
    
protected com.sun.enterprise.deployment.node.XMLElementgetXMLRootTag()

return
the XML tag associated with this XMLNode

        return new XMLElement(WebTagNames.WEB_RESOURCE_COLLECTION);
    
public voidsetElementValue(com.sun.enterprise.deployment.node.XMLElement element, java.lang.String value)
receives notiification of the value for a particular tag

param
element the xml element
param
value it's associated value

        if (WebTagNames.URL_PATTERN.equals(element.getQName())) {
            // If URL Pattern does not start with "/" then
            // prepend it (for Servlet2.2 Web apps)
            Object parent = getParentNode().getParentNode().getDescriptor();
            if (parent instanceof WebBundleDescriptor &&
                ((WebBundleDescriptor) parent).getSpecVersion().equals("2.2"))
            {
                if(!value.startsWith("/") && !value.startsWith("*.")) {
                    value = "/" + value;
                }
            }
            if (!URLPattern.isValid(value)) {
                throw new IllegalArgumentException(localStrings.getLocalString(
                "enterprise.deployment.invalidurlpattern",
                "Invalid URL Pattern: [{0}]",
                new Object[] {value}));
            }
            descriptor.addUrlPattern(value);
        } else super.setElementValue(element, value);
    
public org.w3c.dom.NodewriteDescriptor(org.w3c.dom.Node parent, java.lang.String nodeName, com.sun.enterprise.deployment.WebResourceCollectionImpl descriptor)
write the descriptor class to a DOM tree and return it

param
parent node in the DOM tree
param
node name for the root element of this xml fragment
param
the descriptor to write
return
the DOM tree top node

       
        Node myNode = appendChild(parent, nodeName);
        appendTextChild(myNode, WebTagNames.WEB_RESOURCE_NAME, descriptor.getName());
        writeLocalizedDescriptions(myNode, descriptor);
        
        // url-pattern*
        for (Enumeration urlPatterns = descriptor.getUrlPatterns();urlPatterns.hasMoreElements();) {
            appendTextChild(myNode, WebTagNames.URL_PATTERN, (String) urlPatterns.nextElement());
        }
                
        // http-method*
        for (Enumeration httpMethods = descriptor.getHttpMethods();httpMethods.hasMoreElements();) {
            appendTextChild(myNode, WebTagNames.HTTP_METHOD, (String) httpMethods.nextElement());
        }        
        return myNode;