FileDocCategorySizeDatePackage
WebAppImpl.javaAPI DocExample36195Thu Mar 07 09:13:52 GMT 2002javajaxb.generated.web

WebAppImpl.java

/**
 * This class was generated from a set of XML constraints
 *   by the Enhydra Zeus XML Data Binding Framework. All
 *   source code in this file is constructed specifically
 *   to work with other Zeus-generated classes. If you
 *   modify this file by hand, you run the risk of breaking
 *   this interoperation, as well as introducing errors in
 *   source code compilation.
 *
 * * * * * MODIFY THIS FILE AT YOUR OWN RISK * * * * *
 *
 * To find out more about the Enhydra Zeus framework, you
 *   can point your browser at <http://zeus.enhydra.org>
 *   where you can download releases, join and discuss Zeus
 *   on user and developer mailing lists, and access source
 *   code. Please report any bugs through that website.
 */
package javajaxb.generated.web;

// Global Implementation Import Statements
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.xml.sax.EntityResolver;
import org.xml.sax.ErrorHandler;
import org.xml.sax.InputSource;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.XMLReader;
import org.xml.sax.ext.LexicalHandler;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.helpers.XMLReaderFactory;

// Local Implementation Import Statements
import java.util.Iterator;
import java.util.List;
import java.util.LinkedList;

public class WebAppImpl extends DefaultHandler implements Unmarshallable, LexicalHandler, WebApp {

    private Icon icon;
    private String displayName;
    private boolean zeus_DisplayNameSet;
    private String description;
    private boolean zeus_DescriptionSet;
    private Distributable distributable;
    private List contextParamList;
    private List servletList;
    private List servletMappingList;
    private SessionConfig sessionConfig;
    private List mimeMappingList;
    private WelcomeFileList welcomeFileList;
    private List errorPageList;
    private List taglibList;
    private List resourceRefList;
    private List securityConstraintList;
    private LoginConfig loginConfig;
    private List securityRoleList;
    private List envEntryList;
    private List ejbRefList;
    private String id;
    private boolean zeus_IdSet;

    /** Any DOCTYPE reference/statements. */
    private String docTypeString;

    /** The encoding for the output document */
    private String outputEncoding;

    /** The current node in unmarshalling */
    private Unmarshallable zeus_currentUNode;

    /** The parent node in unmarshalling */
    private Unmarshallable zeus_parentUNode;

    /** Whether this node has been handled */
    private boolean zeus_thisNodeHandled = false;

    /** Whether a DTD exists for an unmarshal call */
    private boolean hasDTD;

    /** Whether validation is occurring */
    private boolean validate;

    /** The namespace mappings on this element */
    private Map namespaceMappings;

    /** The EntityResolver for SAX parsing to use */
    private static EntityResolver entityResolver;

    /** The ErrorHandler for SAX parsing to use */
    private static ErrorHandler errorHandler;

    public WebAppImpl() {
        zeus_DisplayNameSet = false;
        zeus_DescriptionSet = false;
        contextParamList = new LinkedList();
        servletList = new LinkedList();
        servletMappingList = new LinkedList();
        mimeMappingList = new LinkedList();
        errorPageList = new LinkedList();
        taglibList = new LinkedList();
        resourceRefList = new LinkedList();
        securityConstraintList = new LinkedList();
        securityRoleList = new LinkedList();
        envEntryList = new LinkedList();
        ejbRefList = new LinkedList();
        zeus_IdSet = false;
        docTypeString = "";
        hasDTD = false;
        validate = false;
        namespaceMappings = new HashMap();
    }

    public Icon getIcon() {
        return icon;
    }

    public void setIcon(Icon icon) {
        this.icon = icon;
    }

    public String getDisplayName() {
        return displayName;
    }

    public void setDisplayName(String displayName) {
        this.displayName = displayName;
        zeus_DisplayNameSet = true;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
        zeus_DescriptionSet = true;
    }

    public Distributable getDistributable() {
        return distributable;
    }

    public void setDistributable(Distributable distributable) {
        this.distributable = distributable;
    }

    public List getContextParamList() {
        return contextParamList;
    }

    public void setContextParamList(List contextParamList) {
        this.contextParamList = contextParamList;
    }

    public void addContextParam(ContextParam contextParam) {
        contextParamList.add(contextParam);
    }

    public void removeContextParam(ContextParam contextParam) {
        contextParamList.remove(contextParam);
    }

    public List getServletList() {
        return servletList;
    }

    public void setServletList(List servletList) {
        this.servletList = servletList;
    }

    public void addServlet(Servlet servlet) {
        servletList.add(servlet);
    }

    public void removeServlet(Servlet servlet) {
        servletList.remove(servlet);
    }

    public List getServletMappingList() {
        return servletMappingList;
    }

    public void setServletMappingList(List servletMappingList) {
        this.servletMappingList = servletMappingList;
    }

    public void addServletMapping(ServletMapping servletMapping) {
        servletMappingList.add(servletMapping);
    }

    public void removeServletMapping(ServletMapping servletMapping) {
        servletMappingList.remove(servletMapping);
    }

    public SessionConfig getSessionConfig() {
        return sessionConfig;
    }

    public void setSessionConfig(SessionConfig sessionConfig) {
        this.sessionConfig = sessionConfig;
    }

    public List getMimeMappingList() {
        return mimeMappingList;
    }

    public void setMimeMappingList(List mimeMappingList) {
        this.mimeMappingList = mimeMappingList;
    }

    public void addMimeMapping(MimeMapping mimeMapping) {
        mimeMappingList.add(mimeMapping);
    }

    public void removeMimeMapping(MimeMapping mimeMapping) {
        mimeMappingList.remove(mimeMapping);
    }

    public WelcomeFileList getWelcomeFileList() {
        return welcomeFileList;
    }

    public void setWelcomeFileList(WelcomeFileList welcomeFileList) {
        this.welcomeFileList = welcomeFileList;
    }

    public List getErrorPageList() {
        return errorPageList;
    }

    public void setErrorPageList(List errorPageList) {
        this.errorPageList = errorPageList;
    }

    public void addErrorPage(ErrorPage errorPage) {
        errorPageList.add(errorPage);
    }

    public void removeErrorPage(ErrorPage errorPage) {
        errorPageList.remove(errorPage);
    }

    public List getTaglibList() {
        return taglibList;
    }

    public void setTaglibList(List taglibList) {
        this.taglibList = taglibList;
    }

    public void addTaglib(Taglib taglib) {
        taglibList.add(taglib);
    }

    public void removeTaglib(Taglib taglib) {
        taglibList.remove(taglib);
    }

    public List getResourceRefList() {
        return resourceRefList;
    }

    public void setResourceRefList(List resourceRefList) {
        this.resourceRefList = resourceRefList;
    }

    public void addResourceRef(ResourceRef resourceRef) {
        resourceRefList.add(resourceRef);
    }

    public void removeResourceRef(ResourceRef resourceRef) {
        resourceRefList.remove(resourceRef);
    }

    public List getSecurityConstraintList() {
        return securityConstraintList;
    }

    public void setSecurityConstraintList(List securityConstraintList) {
        this.securityConstraintList = securityConstraintList;
    }

    public void addSecurityConstraint(SecurityConstraint securityConstraint) {
        securityConstraintList.add(securityConstraint);
    }

    public void removeSecurityConstraint(SecurityConstraint securityConstraint) {
        securityConstraintList.remove(securityConstraint);
    }

    public LoginConfig getLoginConfig() {
        return loginConfig;
    }

    public void setLoginConfig(LoginConfig loginConfig) {
        this.loginConfig = loginConfig;
    }

    public List getSecurityRoleList() {
        return securityRoleList;
    }

    public void setSecurityRoleList(List securityRoleList) {
        this.securityRoleList = securityRoleList;
    }

    public void addSecurityRole(SecurityRole securityRole) {
        securityRoleList.add(securityRole);
    }

    public void removeSecurityRole(SecurityRole securityRole) {
        securityRoleList.remove(securityRole);
    }

    public List getEnvEntryList() {
        return envEntryList;
    }

    public void setEnvEntryList(List envEntryList) {
        this.envEntryList = envEntryList;
    }

    public void addEnvEntry(EnvEntry envEntry) {
        envEntryList.add(envEntry);
    }

    public void removeEnvEntry(EnvEntry envEntry) {
        envEntryList.remove(envEntry);
    }

    public List getEjbRefList() {
        return ejbRefList;
    }

    public void setEjbRefList(List ejbRefList) {
        this.ejbRefList = ejbRefList;
    }

    public void addEjbRef(EjbRef ejbRef) {
        ejbRefList.add(ejbRef);
    }

    public void removeEjbRef(EjbRef ejbRef) {
        ejbRefList.remove(ejbRef);
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
        zeus_IdSet = true;
    }

    public void setDocType(String name, String publicID, String systemID) {
        try {
            startDTD(name, publicID, systemID);
        } catch (SAXException neverHappens) { }
    }

    public void setOutputEncoding(String outputEncoding) {
        this.outputEncoding = outputEncoding;
    }

    public void marshal(File file) throws IOException {
        // Delegate to the marshal(Writer) method
        marshal(new FileWriter(file));
    }

    public void marshal(OutputStream outputStream) throws IOException {
        // Delegate to the marshal(Writer) method
        marshal(new OutputStreamWriter(outputStream));
    }

    public void marshal(Writer writer) throws IOException {
        // Write out the XML declaration
        writer.write("<?xml version=\"1.0\" ");
        if (outputEncoding != null) {
            writer.write("encoding=\"");
            writer.write(outputEncoding);
            writer.write("\"?>\n\n");

        } else {
            writer.write("encoding=\"UTF-8\"?>\n\n");

        }
        // Handle DOCTYPE declaration
        writer.write(docTypeString);
        writer.write("\n");
        // Now start the recursive writing
        writeXMLRepresentation(writer, "");

        // Close up
        writer.flush();
        writer.close();
    }

    protected void writeXMLRepresentation(Writer writer,
                                          String indent)
        throws IOException {

        writer.write(indent);
        writer.write("<web-app");

        // Handle namespace mappings (if needed)
        for (Iterator i = namespaceMappings.keySet().iterator(); i.hasNext(); ) {
            String prefix = (String)i.next();
            String uri = (String)namespaceMappings.get(prefix);
            writer.write(" xmlns");
            if (!prefix.trim().equals("")) {
                writer.write(":");
                writer.write(prefix);
            }
            writer.write("=\"");
            writer.write(uri);
            writer.write("\"\n        ");
        }

        // Handle attributes (if needed)
        if (zeus_IdSet) {
            writer.write(" id=\"");
            writer.write(escapeAttributeValue(id));
            writer.write("\"");
        }
        writer.write(">");
        writer.write("\n");

        // Handle child elements
        if (icon != null) {
            ((IconImpl)icon).writeXMLRepresentation(writer,
                new StringBuffer(indent).append("  ").toString());
        }

        if (displayName != null) {
            writer.write(new StringBuffer(indent).append("  ").toString());
            writer.write("<display-name>");
            writer.write(this.displayName);
            writer.write("</display-name>\n");
        }

        if (description != null) {
            writer.write(new StringBuffer(indent).append("  ").toString());
            writer.write("<description>");
            writer.write(this.description);
            writer.write("</description>\n");
        }

        if (distributable != null) {
            ((DistributableImpl)distributable).writeXMLRepresentation(writer,
                new StringBuffer(indent).append("  ").toString());
        }

        for (Iterator i=contextParamList.iterator(); i.hasNext(); ) {
            ContextParamImpl contextParam = (ContextParamImpl)i.next();
            contextParam.writeXMLRepresentation(writer,
                new StringBuffer(indent).append("  ").toString());
        }
        for (Iterator i=servletList.iterator(); i.hasNext(); ) {
            ServletImpl servlet = (ServletImpl)i.next();
            servlet.writeXMLRepresentation(writer,
                new StringBuffer(indent).append("  ").toString());
        }
        for (Iterator i=servletMappingList.iterator(); i.hasNext(); ) {
            ServletMappingImpl servletMapping = (ServletMappingImpl)i.next();
            servletMapping.writeXMLRepresentation(writer,
                new StringBuffer(indent).append("  ").toString());
        }
        if (sessionConfig != null) {
            ((SessionConfigImpl)sessionConfig).writeXMLRepresentation(writer,
                new StringBuffer(indent).append("  ").toString());
        }

        for (Iterator i=mimeMappingList.iterator(); i.hasNext(); ) {
            MimeMappingImpl mimeMapping = (MimeMappingImpl)i.next();
            mimeMapping.writeXMLRepresentation(writer,
                new StringBuffer(indent).append("  ").toString());
        }
        if (welcomeFileList != null) {
            ((WelcomeFileListImpl)welcomeFileList).writeXMLRepresentation(writer,
                new StringBuffer(indent).append("  ").toString());
        }

        for (Iterator i=errorPageList.iterator(); i.hasNext(); ) {
            ErrorPageImpl errorPage = (ErrorPageImpl)i.next();
            errorPage.writeXMLRepresentation(writer,
                new StringBuffer(indent).append("  ").toString());
        }
        for (Iterator i=taglibList.iterator(); i.hasNext(); ) {
            TaglibImpl taglib = (TaglibImpl)i.next();
            taglib.writeXMLRepresentation(writer,
                new StringBuffer(indent).append("  ").toString());
        }
        for (Iterator i=resourceRefList.iterator(); i.hasNext(); ) {
            ResourceRefImpl resourceRef = (ResourceRefImpl)i.next();
            resourceRef.writeXMLRepresentation(writer,
                new StringBuffer(indent).append("  ").toString());
        }
        for (Iterator i=securityConstraintList.iterator(); i.hasNext(); ) {
            SecurityConstraintImpl securityConstraint = (SecurityConstraintImpl)i.next();
            securityConstraint.writeXMLRepresentation(writer,
                new StringBuffer(indent).append("  ").toString());
        }
        if (loginConfig != null) {
            ((LoginConfigImpl)loginConfig).writeXMLRepresentation(writer,
                new StringBuffer(indent).append("  ").toString());
        }

        for (Iterator i=securityRoleList.iterator(); i.hasNext(); ) {
            SecurityRoleImpl securityRole = (SecurityRoleImpl)i.next();
            securityRole.writeXMLRepresentation(writer,
                new StringBuffer(indent).append("  ").toString());
        }
        for (Iterator i=envEntryList.iterator(); i.hasNext(); ) {
            EnvEntryImpl envEntry = (EnvEntryImpl)i.next();
            envEntry.writeXMLRepresentation(writer,
                new StringBuffer(indent).append("  ").toString());
        }
        for (Iterator i=ejbRefList.iterator(); i.hasNext(); ) {
            EjbRefImpl ejbRef = (EjbRefImpl)i.next();
            ejbRef.writeXMLRepresentation(writer,
                new StringBuffer(indent).append("  ").toString());
        }
        writer.write(indent);
        writer.write("</web-app>\n");
    }

    /** Indicates if we are in the displayName element */
    private boolean zeus_inDisplayName = false;

    /** Indicates if we are in the description element */
    private boolean zeus_inDescription = false;

    private String escapeAttributeValue(String attributeValue) {
        String returnValue = attributeValue;
        for (int i = 0; i < returnValue.length(); i++) {
            char ch = returnValue.charAt(i);
            if (ch == '"') {
                returnValue = new StringBuffer()
                    .append(returnValue.substring(0, i))
                    .append(""")
                    .append(returnValue.substring(i+1))
                    .toString();
            }
        }
        return returnValue;
    }

    private String escapeTextValue(String textValue) {
        String returnValue = textValue;
        for (int i = 0; i < returnValue.length(); i++) {
            char ch = returnValue.charAt(i);
            if (ch == '<') {
                returnValue = new StringBuffer()
                    .append(returnValue.substring(0, i))
                    .append("<")
                    .append(returnValue.substring(i+1))
                    .toString();
            } else if (ch == '>') {
                returnValue = new StringBuffer()
                    .append(returnValue.substring(0, i))
                    .append(">")
                    .append(returnValue.substring(i+1))
                    .toString();
            }
        }
        return returnValue;
    }

    /**
     * <p>
     *  This sets a SAX <code>EntityResolver</code> for this unmarshalling process.
     * </p>
     *
     * @param resolver the entity resolver to use.
     */
    public static void setEntityResolver(EntityResolver resolver) {
        entityResolver = resolver;
    }

    /**
     * <p>
     *  This sets a SAX <code>ErrorHandler</code> for this unmarshalling process.
     * </p>
     *
     * @param handler the entity resolver to use.
     */
    public static void setErrorHandler(ErrorHandler handler) {
        errorHandler = handler;
    }

    public static WebApp unmarshal(File file) throws IOException {
        // Delegate to the unmarshal(Reader) method
        return unmarshal(new FileReader(file));
    }

    public static WebApp unmarshal(File file, boolean validate) throws IOException {
        // Delegate to the unmarshal(Reader) method
        return unmarshal(new FileReader(file), validate);
    }

    public static WebApp unmarshal(InputStream inputStream) throws IOException {
        // Delegate to the unmarshal(Reader) method
        return unmarshal(new InputStreamReader(inputStream));
    }

    public static WebApp unmarshal(InputStream inputStream, boolean validate) throws IOException {
        // Delegate to the unmarshal(Reader) method
        return unmarshal(new InputStreamReader(inputStream), validate);
    }

    public static WebApp unmarshal(Reader reader) throws IOException {
        // Delegate with default validation value
        return unmarshal(reader, false);
    }

    public static WebApp unmarshal(Reader reader, boolean validate) throws IOException {
        WebAppImpl webApp = new WebAppImpl();
        webApp.setValidating(validate);
        webApp.setCurrentUNode(webApp);
        webApp.setParentUNode(null);
        // Load the XML parser
        XMLReader parser = null;
        String parserClass = System.getProperty("org.xml.sax.driver",
            "org.apache.xerces.parsers.SAXParser");
        try {
            parser = XMLReaderFactory.createXMLReader(parserClass);

            // Set entity resolver, if needed
            if (entityResolver != null) {
                parser.setEntityResolver(entityResolver);
            }

            // Set error handler
            parser.setErrorHandler(webApp);

            // Register lexical handler
            parser.setProperty("http://xml.org/sax/properties/lexical-handler", webApp);

            // Register content handler
            parser.setContentHandler(webApp);
        } catch (SAXException e) {
            throw new IOException("Could not load XML parser: " + 
                e.getMessage());
        }

        InputSource inputSource = new InputSource(reader);
        try {
            parser.setFeature("http://xml.org/sax/features/validation", new Boolean(validate).booleanValue());
            parser.setFeature("http://xml.org/sax/features/namespaces", true);
            parser.setFeature("http://xml.org/sax/features/namespace-prefixes", false);
            parser.parse(inputSource);
        } catch (SAXException e) {
            throw new IOException("Error parsing XML document: " + 
                e.getMessage());
        }

        // Return the resultant object
        return webApp;
    }

    public Unmarshallable getParentUNode() {
        return zeus_parentUNode;
    }

    public void setParentUNode(Unmarshallable parentUNode) {
        this.zeus_parentUNode = parentUNode;
    }

    public Unmarshallable getCurrentUNode() {
        return zeus_currentUNode;
    }

    public void setCurrentUNode(Unmarshallable currentUNode) {
        this.zeus_currentUNode = currentUNode;
    }

    public void setValidating(boolean validate) {
        this.validate = validate;
    }

    public void startDocument() throws SAXException {
        // no-op
    }

    public void setDocumentLocator(Locator locator) {
        // no-op
    }

    public void startPrefixMapping(String prefix, String uri)
        throws SAXException {
        namespaceMappings.put(prefix, uri);
    }

    public void startElement(String namespaceURI, String localName,
                             String qName, org.xml.sax.Attributes atts)
        throws SAXException {

        // Feed this to the correct ContentHandler
        Unmarshallable current = getCurrentUNode();
        if (current != this) {
            current.startElement(namespaceURI, localName, qName, atts);
            return;
        }

        // See if we handle, or we delegate
        if ((localName.equals("web-app")) && (!zeus_thisNodeHandled)) {
            // Handle ourselves
            for (int i=0, len=atts.getLength(); i<len; i++) {
                String attName= atts.getLocalName(i);
                String attValue = atts.getValue(i);
                if (attName.equals("id")) {
                    setId(attValue);
                }
            }
            zeus_thisNodeHandled = true;
            return;
        } else {
            // Delegate handling
            if (localName.equals("icon")) {
                IconImpl icon = new IconImpl();
                current = getCurrentUNode();
                icon.setParentUNode(current);
                icon.setCurrentUNode(icon);
                this.setCurrentUNode(icon);
                icon.startElement(namespaceURI, localName, qName, atts);
                // Add this value in
                this.icon = icon;
                return;
            }
            if (localName.equals("display-name")) {
                this.zeus_inDisplayName = true;
                return;
            }
            if (localName.equals("description")) {
                this.zeus_inDescription = true;
                return;
            }
            if (localName.equals("distributable")) {
                DistributableImpl distributable = new DistributableImpl();
                current = getCurrentUNode();
                distributable.setParentUNode(current);
                distributable.setCurrentUNode(distributable);
                this.setCurrentUNode(distributable);
                distributable.startElement(namespaceURI, localName, qName, atts);
                // Add this value in
                this.distributable = distributable;
                return;
            }
            if (localName.equals("context-param")) {
                ContextParamImpl contextParam = new ContextParamImpl();
                current = getCurrentUNode();
                contextParam.setParentUNode(current);
                contextParam.setCurrentUNode(contextParam);
                this.setCurrentUNode(contextParam);
                contextParam.startElement(namespaceURI, localName, qName, atts);
                // Add this value in
                contextParamList.add(contextParam);
                return;
            }
            if (localName.equals("servlet")) {
                ServletImpl servlet = new ServletImpl();
                current = getCurrentUNode();
                servlet.setParentUNode(current);
                servlet.setCurrentUNode(servlet);
                this.setCurrentUNode(servlet);
                servlet.startElement(namespaceURI, localName, qName, atts);
                // Add this value in
                servletList.add(servlet);
                return;
            }
            if (localName.equals("servlet-mapping")) {
                ServletMappingImpl servletMapping = new ServletMappingImpl();
                current = getCurrentUNode();
                servletMapping.setParentUNode(current);
                servletMapping.setCurrentUNode(servletMapping);
                this.setCurrentUNode(servletMapping);
                servletMapping.startElement(namespaceURI, localName, qName, atts);
                // Add this value in
                servletMappingList.add(servletMapping);
                return;
            }
            if (localName.equals("session-config")) {
                SessionConfigImpl sessionConfig = new SessionConfigImpl();
                current = getCurrentUNode();
                sessionConfig.setParentUNode(current);
                sessionConfig.setCurrentUNode(sessionConfig);
                this.setCurrentUNode(sessionConfig);
                sessionConfig.startElement(namespaceURI, localName, qName, atts);
                // Add this value in
                this.sessionConfig = sessionConfig;
                return;
            }
            if (localName.equals("mime-mapping")) {
                MimeMappingImpl mimeMapping = new MimeMappingImpl();
                current = getCurrentUNode();
                mimeMapping.setParentUNode(current);
                mimeMapping.setCurrentUNode(mimeMapping);
                this.setCurrentUNode(mimeMapping);
                mimeMapping.startElement(namespaceURI, localName, qName, atts);
                // Add this value in
                mimeMappingList.add(mimeMapping);
                return;
            }
            if (localName.equals("welcome-file-list")) {
                WelcomeFileListImpl welcomeFileList = new WelcomeFileListImpl();
                current = getCurrentUNode();
                welcomeFileList.setParentUNode(current);
                welcomeFileList.setCurrentUNode(welcomeFileList);
                this.setCurrentUNode(welcomeFileList);
                welcomeFileList.startElement(namespaceURI, localName, qName, atts);
                // Add this value in
                this.welcomeFileList = welcomeFileList;
                return;
            }
            if (localName.equals("error-page")) {
                ErrorPageImpl errorPage = new ErrorPageImpl();
                current = getCurrentUNode();
                errorPage.setParentUNode(current);
                errorPage.setCurrentUNode(errorPage);
                this.setCurrentUNode(errorPage);
                errorPage.startElement(namespaceURI, localName, qName, atts);
                // Add this value in
                errorPageList.add(errorPage);
                return;
            }
            if (localName.equals("taglib")) {
                TaglibImpl taglib = new TaglibImpl();
                current = getCurrentUNode();
                taglib.setParentUNode(current);
                taglib.setCurrentUNode(taglib);
                this.setCurrentUNode(taglib);
                taglib.startElement(namespaceURI, localName, qName, atts);
                // Add this value in
                taglibList.add(taglib);
                return;
            }
            if (localName.equals("resource-ref")) {
                ResourceRefImpl resourceRef = new ResourceRefImpl();
                current = getCurrentUNode();
                resourceRef.setParentUNode(current);
                resourceRef.setCurrentUNode(resourceRef);
                this.setCurrentUNode(resourceRef);
                resourceRef.startElement(namespaceURI, localName, qName, atts);
                // Add this value in
                resourceRefList.add(resourceRef);
                return;
            }
            if (localName.equals("security-constraint")) {
                SecurityConstraintImpl securityConstraint = new SecurityConstraintImpl();
                current = getCurrentUNode();
                securityConstraint.setParentUNode(current);
                securityConstraint.setCurrentUNode(securityConstraint);
                this.setCurrentUNode(securityConstraint);
                securityConstraint.startElement(namespaceURI, localName, qName, atts);
                // Add this value in
                securityConstraintList.add(securityConstraint);
                return;
            }
            if (localName.equals("login-config")) {
                LoginConfigImpl loginConfig = new LoginConfigImpl();
                current = getCurrentUNode();
                loginConfig.setParentUNode(current);
                loginConfig.setCurrentUNode(loginConfig);
                this.setCurrentUNode(loginConfig);
                loginConfig.startElement(namespaceURI, localName, qName, atts);
                // Add this value in
                this.loginConfig = loginConfig;
                return;
            }
            if (localName.equals("security-role")) {
                SecurityRoleImpl securityRole = new SecurityRoleImpl();
                current = getCurrentUNode();
                securityRole.setParentUNode(current);
                securityRole.setCurrentUNode(securityRole);
                this.setCurrentUNode(securityRole);
                securityRole.startElement(namespaceURI, localName, qName, atts);
                // Add this value in
                securityRoleList.add(securityRole);
                return;
            }
            if (localName.equals("env-entry")) {
                EnvEntryImpl envEntry = new EnvEntryImpl();
                current = getCurrentUNode();
                envEntry.setParentUNode(current);
                envEntry.setCurrentUNode(envEntry);
                this.setCurrentUNode(envEntry);
                envEntry.startElement(namespaceURI, localName, qName, atts);
                // Add this value in
                envEntryList.add(envEntry);
                return;
            }
            if (localName.equals("ejb-ref")) {
                EjbRefImpl ejbRef = new EjbRefImpl();
                current = getCurrentUNode();
                ejbRef.setParentUNode(current);
                ejbRef.setCurrentUNode(ejbRef);
                this.setCurrentUNode(ejbRef);
                ejbRef.startElement(namespaceURI, localName, qName, atts);
                // Add this value in
                ejbRefList.add(ejbRef);
                return;
            }
        }
    }

    public void endElement(String namespaceURI, String localName,
                           String qName)
        throws SAXException {

        Unmarshallable current = getCurrentUNode();
        if (current != this) {
            current.endElement(namespaceURI, localName, qName);
            return;
        }

        if (localName.equals("display-name")) {
            this.zeus_inDisplayName = false;
            return;
        }

        if (localName.equals("description")) {
            this.zeus_inDescription = false;
            return;
        }

        Unmarshallable parent = getCurrentUNode().getParentUNode();
        if (parent != null) {
            parent.setCurrentUNode(parent);
        }
    }

    public void characters(char[] ch, int start, int len)
        throws SAXException {

        // Feed this to the correct ContentHandler
        Unmarshallable current = getCurrentUNode();
        if (current != this) {
            current.characters(ch, start, len);
            return;
        }

        String text = new String(ch, start, len);
        text = text.trim();
        if (zeus_inDisplayName) {
            if (this.displayName == null) {
                this.displayName = text;
            } else {
                this.displayName = new StringBuffer(this.displayName).append(text).toString();
            }
            return;
        }

        if (zeus_inDescription) {
            if (this.description == null) {
                this.description = text;
            } else {
                this.description = new StringBuffer(this.description).append(text).toString();
            }
            return;
        }

    }

    public void comment(char ch[], int start, int len) throws SAXException {
        // Currently no-op
    }

    public void warning(SAXParseException e) throws SAXException {
        if (errorHandler != null) {
            errorHandler.warning(e);
        }
    }

    public void error(SAXParseException e) throws SAXException {
        if ((validate) && (!hasDTD)) {
            throw new SAXException("Validation is turned on, but no DTD has been specified in the input XML document. Please supply a DTD through a DOCTYPE reference.");
        }
        if (errorHandler != null) {
            errorHandler.error(e);
        }
    }

    public void fatalError(SAXParseException e) throws SAXException {
        if ((validate) && (!hasDTD)) {
            throw new SAXException("Validation is turned on, but no DTD has been specified in the input XML document. Please supply a DTD through a DOCTYPE reference.");
        }
        if (errorHandler != null) {
            errorHandler.fatalError(e);
        }
    }

    public void startDTD(String name, String publicID, String systemID)
        throws SAXException {

        if ((name == null) || (name.equals(""))) {
            docTypeString = "";
            return;
        }

        hasDTD = true;
        StringBuffer docTypeSB = new StringBuffer();
        boolean hasPublic = false;

        docTypeSB.append("<!DOCTYPE ")
                 .append(name);

        if ((publicID != null) && (!publicID.equals(""))) {
            docTypeSB.append(" PUBLIC \"")
                     .append(publicID)
                     .append("\"");
            hasPublic = true;
        }

        if ((systemID != null) && (!systemID.equals(""))) {
            if (!hasPublic) {
                docTypeSB.append(" SYSTEM");
            }
            docTypeSB.append(" \"")
                     .append(systemID)
                     .append("\"");

        }

        docTypeSB.append(">");

        docTypeString = docTypeSB.toString();
    }

    public void endDTD() throws SAXException {
        // Currently no-op
    }

    public void startEntity(String name) throws SAXException {
        // Currently no-op
    }

    public void endEntity(String name) throws SAXException {
        // Currently no-op
    }

    public void startCDATA() throws SAXException {
        // Currently no-op
    }

    public void endCDATA() throws SAXException {
        // Currently no-op
    }

}