Search in sources :

Example 1 with SaxParserHandler

use of com.sun.enterprise.deployment.node.SaxParserHandler in project Payara by payara.

the class DeploymentDescriptorFile method read.

/**
 * read and parse a J2EE Deployment Descriptor input file and
 * return the constructed DOL descriptors for the J2EE Module
 *
 * @param descriptor if the read is incremental, the descriptor to apply the DDs to
 * @param is the input stream for the XML file
 * @return the DOL descriptor for the J2EE Module
 */
@SuppressWarnings("unchecked")
public T read(T descriptor, InputStream is) throws IOException, SAXParseException {
    errorReportingString = FileUtils.revertFriendlyFilenameExtension(errorReportingString);
    String error = (errorReportingString == null) ? errorReportingString : new File(errorReportingString).getName();
    String errorReporting = localStrings.getLocalString("enterprise.deployment.io.errorcontext", "archive {0} and deployment descriptor file {1}", error, getDeploymentDescriptorPath());
    SAXParser sp = getSAXParser(getXMLValidation());
    SaxParserHandler dh = SaxParserHandlerFactory.newInstance();
    if (validationLevel.equals(FULL_VALIDATION)) {
        dh.setStopOnError(true);
    }
    if (descriptor != null) {
        dh.setTopNode(getRootXMLNode(descriptor));
    }
    dh.setErrorReportingString(errorReporting);
    InputSource input = new InputSource(is);
    try {
        sp.parse(input, dh);
    } catch (SAXParseException e) {
        DOLUtils.getDefaultLogger().log(Level.SEVERE, "enterprise.deployment.backend.saxParserError", new Object[] { e.getMessage() });
        errorReporting += "  " + e.getLocalizedMessage();
        SAXParseException spe = new SAXParseException(errorReporting, e.getSystemId(), e.getPublicId(), e.getLineNumber(), e.getColumnNumber(), e);
        throw spe;
    } catch (SAXException e) {
        DOLUtils.getDefaultLogger().log(Level.SEVERE, "enterprise.deployment.backend.saxParserError", new Object[] { e.getMessage() });
        DOLUtils.getDefaultLogger().log(Level.SEVERE, "Error occurred", e);
        return null;
    } catch (IOException e) {
        DOLUtils.getDefaultLogger().log(Level.SEVERE, "enterprise.deployment.backend.saxParserError", e.getMessage() == null ? "" : new Object[] { e.getMessage() });
        // access to the internet (proxy setting etc).
        for (StackTraceElement stElement : e.getStackTrace()) {
            if (stElement.getClassName().equals("java.net.Socket") && stElement.getMethodName().equals("connect")) {
                String msg = localStrings.getLocalString("enterprise.deployment.can_not_locate_dtd", "Unable to locate the DTD to validate your deployment descriptor file [{1}] in archive [{0}]. Please make sure the DOCTYPE is correct (no typo in public ID or system ID) and you have proper access to the Internet.", error, getDeploymentDescriptorPath());
                IOException ioe = new IOException(msg);
                ioe.initCause(e);
                throw ioe;
            }
        }
        IOException ioe = new IOException(localStrings.getLocalString("enterprise.deployment.backend.error_parsing_descr", "Error parsing descriptor: {0}", errorReporting));
        ioe.initCause(e);
        throw ioe;
    }
    if (dh.getTopNode() != null) {
        return ((RootXMLNode<T>) dh.getTopNode()).getDescriptor();
    }
    return null;
}
Also used : InputSource(org.xml.sax.InputSource) SaxParserHandler(com.sun.enterprise.deployment.node.SaxParserHandler) SAXParseException(org.xml.sax.SAXParseException) SAXParser(javax.xml.parsers.SAXParser) IOException(java.io.IOException) RootXMLNode(com.sun.enterprise.deployment.node.RootXMLNode) File(java.io.File) SAXException(org.xml.sax.SAXException)

Aggregations

RootXMLNode (com.sun.enterprise.deployment.node.RootXMLNode)1 SaxParserHandler (com.sun.enterprise.deployment.node.SaxParserHandler)1 File (java.io.File)1 IOException (java.io.IOException)1 SAXParser (javax.xml.parsers.SAXParser)1 InputSource (org.xml.sax.InputSource)1 SAXException (org.xml.sax.SAXException)1 SAXParseException (org.xml.sax.SAXParseException)1