Example usage for org.xml.sax XMLReader setEntityResolver

List of usage examples for org.xml.sax XMLReader setEntityResolver

Introduction

In this page you can find the example usage for org.xml.sax XMLReader setEntityResolver.

Prototype

public void setEntityResolver(EntityResolver resolver);

Source Link

Document

Allow an application to register an entity resolver.

Usage

From source file:org.springframework.oxm.support.AbstractMarshaller.java

/**
 * Create an {@code XMLReader} that this marshaller will when passed an empty {@code SAXSource}.
 * @return the XMLReader/*from   w w  w . j  av a 2  s.c  o  m*/
 * @throws SAXException if thrown by JAXP methods
 */
@SuppressWarnings("deprecation") // on JDK 9
protected XMLReader createXmlReader() throws SAXException {
    XMLReader xmlReader = org.xml.sax.helpers.XMLReaderFactory.createXMLReader();
    xmlReader.setFeature("http://apache.org/xml/features/disallow-doctype-decl", !isSupportDtd());
    xmlReader.setFeature("http://xml.org/sax/features/external-general-entities", isProcessExternalEntities());
    if (!isProcessExternalEntities()) {
        xmlReader.setEntityResolver(NO_OP_ENTITY_RESOLVER);
    }
    return xmlReader;
}

From source file:org.theospi.portfolio.shared.control.ContentResourceUriResolver.java

public Source resolve(String href, String base) throws TransformerException {
    try {//from  w  ww  .  j  a  v a2 s  .com
        String accessUrl = getServerConfigurationService().getAccessUrl();
        String url = href.replaceAll(accessUrl, "");

        // We depend on these resolving as content entities (e.g., /content/group/<site> or /content/user/<user>),
        // so provide some assistance and consistency with metaobj resolution.

        // Check if this already resolves as a content entity and, if not, try again by prepending /content/.
        Reference ref = getEntityManager().newReference(url);
        Object entity = ref.getEntity();
        if (entity == null || !(entity instanceof ContentResource)) {
            if (!url.startsWith("/content/")) {
                url = "/content" + (url.startsWith("/") ? "" : "/") + url;
                ref = getEntityManager().newReference(url);
                entity = ref.getEntity();
            }
            if (entity == null || !(entity instanceof ContentResource)) {
                String msg = "Could not resolve URI as a content resource: " + href;
                logger.info(msg);
                throw new TransformerException(msg);
            }
        }

        ContentResource res = (ContentResource) entity;
        StreamSource strs = new StreamSource(res.streamContent());
        SAXSource ss = new SAXSource(new InputSource(strs.getInputStream()));
        CatalogResolver resolver = new CatalogResolver();
        String appUrl = getServerConfigurationService().getServerUrl();
        try {
            resolver.getCatalog().parseCatalog(appUrl + "/osp-common-tool/dtd/catalog.xml");
            XMLReader xread = XMLReaderFactory.createXMLReader();
            xread.setEntityResolver(resolver);
            ss.setXMLReader(xread);
        } catch (MalformedURLException e) {
            logger.error(e);
        } catch (IOException e) {
            logger.error(e);
        } catch (SAXException e) {
            logger.error(e);
        }

        return ss;
    } catch (ServerOverloadException e) {
        logger.error("", e);
    }
    return null;
}

From source file:org.topazproject.xml.transform.EntityResolvingSource.java

private static XMLReader createXMLReader(EntityResolver resolver) throws SAXException {
    try {/*from  w w  w .j av a2  s .  c  o m*/
        XMLReader rdr = XMLReaderFactory.createXMLReader(xmlReaderCName);
        rdr.setEntityResolver(resolver);
        return rdr;
    } catch (SAXException se) {
        log.error("Unable to create XMLReader from " + xmlReaderCName, se);
        throw se;
    }
}

From source file:org.wyona.yanel.impl.resources.TestingControlResource.java

/**
 * //from   w w w. ja v a2  s  . c o  m
 */
public View getView(String viewId) {
    if (request.getHeader("User-Agent").indexOf("rv:1.7") < 0) {
        ajaxBrowser = true;
    }
    try {
        setLocations();
    } catch (Exception e) {
        // sb.append("<p>Could not get the Locations: " + e + "</p>");
        log.error(e.getMessage(), e);
    }
    View view = new View();
    String mimeType = getMimeType(viewId);
    view.setMimeType(mimeType);

    try {
        org.wyona.yarep.core.Repository repo = getRealm().getRepository();

        if (viewId != null && viewId.equals("source")) {
            view.setInputStream(new java.io.StringBufferInputStream(getScreen()));
            view.setMimeType("application/xml");
            return view;
        }

        String[] xsltPath = getXSLTPath(getPath());
        if (xsltPath != null) {

            // create reader:
            XMLReader xmlReader = XMLReaderFactory.createXMLReader();
            CatalogResolver catalogResolver = new CatalogResolver();
            xmlReader.setEntityResolver(catalogResolver);

            // create xslt transformer:
            SAXTransformerFactory tf = (SAXTransformerFactory) TransformerFactory.newInstance();

            TransformerHandler[] xsltHandlers = new TransformerHandler[xsltPath.length];
            for (int i = 0; i < xsltPath.length; i++) {
                xsltHandlers[i] = tf
                        .newTransformerHandler(new StreamSource(repo.getNode(xsltPath[i]).getInputStream()));
                xsltHandlers[i].getTransformer().setParameter("yanel.path.name",
                        org.wyona.commons.io.PathUtil.getName(getPath()));
                xsltHandlers[i].getTransformer().setParameter("yanel.path", getPath());
                xsltHandlers[i].getTransformer().setParameter("yanel.back2context",
                        PathUtil.backToContext(realm, getPath()));
                xsltHandlers[i].getTransformer().setParameter("yarep.back2realm",
                        PathUtil.backToRealm(getPath()));

                xsltHandlers[i].getTransformer().setParameter("language", getRequestedLanguage());
            }

            // create i18n transformer:
            I18nTransformer2 i18nTransformer = new I18nTransformer2("global", getRequestedLanguage(),
                    getRealm().getDefaultLanguage());
            i18nTransformer.setEntityResolver(catalogResolver);

            // create xinclude transformer:
            XIncludeTransformer xIncludeTransformer = new XIncludeTransformer();
            ResourceResolver resolver = new ResourceResolver(this);
            xIncludeTransformer.setResolver(resolver);

            // create serializer:
            Serializer serializer = SerializerFactory.getSerializer(SerializerFactory.XHTML_STRICT);
            ByteArrayOutputStream baos = new ByteArrayOutputStream();

            // chain everything together (create a pipeline):
            xmlReader.setContentHandler(xsltHandlers[0]);
            for (int i = 0; i < xsltHandlers.length - 1; i++) {
                xsltHandlers[i].setResult(new SAXResult(xsltHandlers[i + 1]));
            }
            xsltHandlers[xsltHandlers.length - 1].setResult(new SAXResult(xIncludeTransformer));
            xIncludeTransformer.setResult(new SAXResult(i18nTransformer));
            i18nTransformer.setResult(new SAXResult(serializer.asContentHandler()));
            serializer.setOutputStream(baos);

            // execute pipeline:
            xmlReader.parse(new InputSource(new java.io.StringBufferInputStream(getScreen())));

            // write result into view:
            view.setInputStream(new ByteArrayInputStream(baos.toByteArray()));
            return view;
        }
        log.debug("Mime-Type: " + mimeType);
        view.setInputStream(new java.io.StringBufferInputStream(getScreen()));
        return view;
    } catch (Exception e) {
        log.error(e + " (" + getPath() + ", " + getRealm() + ")", e);
    }
    view.setInputStream(new java.io.StringBufferInputStream(getScreen()));
    return view;
}

From source file:petascope.util.XMLUtil.java

private static Builder newBuilder(boolean ignoreDTD) {
    XMLReader xmlReader = null;
    try {/*from  w  w  w  . ja  v a  2s. co  m*/
        xmlReader = factory.newSAXParser().getXMLReader();
        if (ignoreDTD) {
            xmlReader.setEntityResolver(new EntityResolver() {

                public InputSource resolveEntity(String publicId, String systemId)
                        throws SAXException, IOException {
                    return new InputSource(new StringReader(""));
                }
            });
            xmlReader.setErrorHandler(new ErrorHandler() {

                @Override
                public void warning(SAXParseException saxpe) throws SAXException {
                    log.warn("XML parser warning: ", saxpe.getMessage());
                }

                @Override
                public void error(SAXParseException saxpe) throws SAXException {
                    throw saxpe;
                }

                @Override
                public void fatalError(SAXParseException saxpe) throws SAXException {
                    throw saxpe;
                }
            });
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return new Builder(xmlReader);
}

From source file:xbird.xquery.dm.instance.DocumentTableModel.java

private static final XMLReader getXMLReader(final DocumentTableBuilder handler, final boolean parseAsHtml,
        final boolean resolveEntity) {
    final XMLReader myReader;
    try {/*from  ww w.  j a  v a 2 s  . co m*/
        if (parseAsHtml) {
            Class clazz = ClassResolver.get(HTML_PARSER_CLASS);
            assert (clazz != null);
            myReader = ObjectUtils.<XMLReader>instantiate(clazz);
        } else {
            final SAXParserFactory factory;
            if (hasSunXerces) {
                factory = ObjectUtils
                        .instantiate("com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl", null);
            } else {
                factory = SAXParserFactory.newInstance();
            }
            factory.setNamespaceAware(true);
            SAXParser parser = factory.newSAXParser();
            myReader = parser.getXMLReader();
        }
    } catch (Exception e) {
        throw new XQRTException("Creating SAX XMLReader failed", e);
    }
    // setup handlers (requires saxHandler)
    myReader.setContentHandler(handler);
    try {
        myReader.setProperty("http://xml.org/sax/properties/lexical-handler", handler);
        myReader.setFeature("http://xml.org/sax/features/validation", true); // Validate the document and report validity errors.
        if (!parseAsHtml) {
            myReader.setFeature("http://apache.org/xml/features/validation/dynamic", true); // The parser will validate the document only if a grammar is specified.   
            myReader.setFeature("http://apache.org/xml/features/validation/schema", true); // Turn on XML Schema validation by inserting an XML Schema validator into the pipeline.   
        }
    } catch (Exception e) {
        throw new XQRTException("Configuaring SAX XMLReader failed.", e);
    }
    // setup entity resolver
    if (resolveEntity) {
        org.apache.xml.resolver.CatalogManager catalog = org.apache.xml.resolver.CatalogManager
                .getStaticManager();
        catalog.setIgnoreMissingProperties(true);
        catalog.setPreferPublic(true);
        catalog.setUseStaticCatalog(false);
        EntityResolver resolver = new org.apache.xml.resolver.tools.CatalogResolver(catalog);
        myReader.setEntityResolver(resolver);
    }
    return myReader;
}