FileDocCategorySizeDatePackage
ServletImpl.javaAPI DocExample25822Thu Mar 07 09:13:52 GMT 2002javajaxb.generated.web

ServletImpl.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 ServletImpl extends DefaultHandler implements Unmarshallable, LexicalHandler, Servlet {

    private Icon icon;
    private String servletName;
    private boolean zeus_ServletNameSet;
    private String displayName;
    private boolean zeus_DisplayNameSet;
    private String description;
    private boolean zeus_DescriptionSet;
    private String servletClass;
    private boolean zeus_ServletClassSet;
    private String jspFile;
    private boolean zeus_JspFileSet;
    private List initParamList;
    private String loadOnStartup;
    private boolean zeus_LoadOnStartupSet;
    private List securityRoleRefList;
    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 ServletImpl() {
        zeus_ServletNameSet = false;
        zeus_DisplayNameSet = false;
        zeus_DescriptionSet = false;
        zeus_ServletClassSet = false;
        zeus_JspFileSet = false;
        initParamList = new LinkedList();
        zeus_LoadOnStartupSet = false;
        securityRoleRefList = 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 getServletName() {
        return servletName;
    }

    public void setServletName(String servletName) {
        this.servletName = servletName;
        zeus_ServletNameSet = true;
    }

    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 String getServletClass() {
        return servletClass;
    }

    public void setServletClass(String servletClass) {
        this.servletClass = servletClass;
        zeus_ServletClassSet = true;
    }

    public String getJspFile() {
        return jspFile;
    }

    public void setJspFile(String jspFile) {
        this.jspFile = jspFile;
        zeus_JspFileSet = true;
    }

    public List getInitParamList() {
        return initParamList;
    }

    public void setInitParamList(List initParamList) {
        this.initParamList = initParamList;
    }

    public void addInitParam(InitParam initParam) {
        initParamList.add(initParam);
    }

    public void removeInitParam(InitParam initParam) {
        initParamList.remove(initParam);
    }

    public String getLoadOnStartup() {
        return loadOnStartup;
    }

    public void setLoadOnStartup(String loadOnStartup) {
        this.loadOnStartup = loadOnStartup;
        zeus_LoadOnStartupSet = true;
    }

    public List getSecurityRoleRefList() {
        return securityRoleRefList;
    }

    public void setSecurityRoleRefList(List securityRoleRefList) {
        this.securityRoleRefList = securityRoleRefList;
    }

    public void addSecurityRoleRef(SecurityRoleRef securityRoleRef) {
        securityRoleRefList.add(securityRoleRef);
    }

    public void removeSecurityRoleRef(SecurityRoleRef securityRoleRef) {
        securityRoleRefList.remove(securityRoleRef);
    }

    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("<servlet");

        // 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 (servletName != null) {
            writer.write(new StringBuffer(indent).append("  ").toString());
            writer.write("<servlet-name>");
            writer.write(this.servletName);
            writer.write("</servlet-name>\n");
        }

        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 (servletClass != null) {
            writer.write(new StringBuffer(indent).append("  ").toString());
            writer.write("<servlet-class>");
            writer.write(this.servletClass);
            writer.write("</servlet-class>\n");
        }

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

        for (Iterator i=initParamList.iterator(); i.hasNext(); ) {
            InitParamImpl initParam = (InitParamImpl)i.next();
            initParam.writeXMLRepresentation(writer,
                new StringBuffer(indent).append("  ").toString());
        }
        if (loadOnStartup != null) {
            writer.write(new StringBuffer(indent).append("  ").toString());
            writer.write("<load-on-startup>");
            writer.write(this.loadOnStartup);
            writer.write("</load-on-startup>\n");
        }

        for (Iterator i=securityRoleRefList.iterator(); i.hasNext(); ) {
            SecurityRoleRefImpl securityRoleRef = (SecurityRoleRefImpl)i.next();
            securityRoleRef.writeXMLRepresentation(writer,
                new StringBuffer(indent).append("  ").toString());
        }
        writer.write(indent);
        writer.write("</servlet>\n");
    }

    /** Indicates if we are in the servletName element */
    private boolean zeus_inServletName = false;

    /** 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;

    /** Indicates if we are in the servletClass element */
    private boolean zeus_inServletClass = false;

    /** Indicates if we are in the jspFile element */
    private boolean zeus_inJspFile = false;

    /** Indicates if we are in the loadOnStartup element */
    private boolean zeus_inLoadOnStartup = 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 Servlet unmarshal(File file) throws IOException {
        // Delegate to the unmarshal(Reader) method
        return unmarshal(new FileReader(file));
    }

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

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

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

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

    public static Servlet unmarshal(Reader reader, boolean validate) throws IOException {
        ServletImpl servlet = new ServletImpl();
        servlet.setValidating(validate);
        servlet.setCurrentUNode(servlet);
        servlet.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(servlet);

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

            // Register content handler
            parser.setContentHandler(servlet);
        } 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 servlet;
    }

    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("servlet")) && (!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("servlet-name")) {
                this.zeus_inServletName = true;
                return;
            }
            if (localName.equals("display-name")) {
                this.zeus_inDisplayName = true;
                return;
            }
            if (localName.equals("description")) {
                this.zeus_inDescription = true;
                return;
            }
            if (localName.equals("servlet-class")) {
                this.zeus_inServletClass = true;
                return;
            }
            if (localName.equals("jsp-file")) {
                this.zeus_inJspFile = true;
                return;
            }
            if (localName.equals("init-param")) {
                InitParamImpl initParam = new InitParamImpl();
                current = getCurrentUNode();
                initParam.setParentUNode(current);
                initParam.setCurrentUNode(initParam);
                this.setCurrentUNode(initParam);
                initParam.startElement(namespaceURI, localName, qName, atts);
                // Add this value in
                initParamList.add(initParam);
                return;
            }
            if (localName.equals("load-on-startup")) {
                this.zeus_inLoadOnStartup = true;
                return;
            }
            if (localName.equals("security-role-ref")) {
                SecurityRoleRefImpl securityRoleRef = new SecurityRoleRefImpl();
                current = getCurrentUNode();
                securityRoleRef.setParentUNode(current);
                securityRoleRef.setCurrentUNode(securityRoleRef);
                this.setCurrentUNode(securityRoleRef);
                securityRoleRef.startElement(namespaceURI, localName, qName, atts);
                // Add this value in
                securityRoleRefList.add(securityRoleRef);
                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("servlet-name")) {
            this.zeus_inServletName = false;
            return;
        }

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

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

        if (localName.equals("servlet-class")) {
            this.zeus_inServletClass = false;
            return;
        }

        if (localName.equals("jsp-file")) {
            this.zeus_inJspFile = false;
            return;
        }

        if (localName.equals("load-on-startup")) {
            this.zeus_inLoadOnStartup = 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_inServletName) {
            if (this.servletName == null) {
                this.servletName = text;
            } else {
                this.servletName = new StringBuffer(this.servletName).append(text).toString();
            }
            return;
        }

        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;
        }

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

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

        if (zeus_inLoadOnStartup) {
            if (this.loadOnStartup == null) {
                this.loadOnStartup = text;
            } else {
                this.loadOnStartup = new StringBuffer(this.loadOnStartup).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
    }

}