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.dhatim.delivery.AbstractParser.java

private void setHandlers(XMLReader reader) throws SAXException {
    if (saxDriverConfig != null) {
        List<Parameter> handlers;

        handlers = saxDriverConfig.getParameters("sax-handler");
        if (handlers != null) {
            for (Parameter handler : handlers) {
                Object handlerObj = createHandler(handler.getValue());

                if (handlerObj instanceof EntityResolver) {
                    reader.setEntityResolver((EntityResolver) handlerObj);
                }//from   w  w  w.  ja  v  a 2 s  . c o m
                if (handlerObj instanceof DTDHandler) {
                    reader.setDTDHandler((DTDHandler) handlerObj);
                }
                if (handlerObj instanceof ErrorHandler) {
                    reader.setErrorHandler((ErrorHandler) handlerObj);
                }
            }
        }
    }
}

From source file:org.dita.dost.reader.TestGenListModuleReader.java

private XMLReader initXMLReader(final File ditaDir, final boolean validate, final File rootFile)
        throws SAXException, IOException {
    final XMLReader parser = XMLUtils.getXMLReader();
    if (validate == true) {
        parser.setFeature(FEATURE_VALIDATION, true);
        try {/*from   ww  w  .  j  a  va 2 s .c o m*/
            parser.setFeature(FEATURE_VALIDATION_SCHEMA, true);
        } catch (final SAXNotRecognizedException e) {
            // Not Xerces, ignore exception
        }
    } else {
        final String msg = MessageUtils.getInstance().getMessage("DOTJ037W").toString();
    }
    CatalogUtils.setDitaDir(ditaDir);
    parser.setEntityResolver(CatalogUtils.getCatalogResolver());

    return parser;
}

From source file:org.dita.dost.TestUtils.java

/**
 * Read XML file contents into a string.
 * /*from   w  ww  . jav a2s . c  o m*/
 * @param file XML file to read
 * @param normalize normalize whitespace
 * @return contents of the file
 * @throws Exception if parsing the file failed
 */
public static String readXmlToString(final File file, final boolean normalize, final boolean clean)
        throws Exception {
    final Writer std = new CharArrayWriter();
    InputStream in = null;
    try {
        in = new BufferedInputStream(new FileInputStream(file));
        final Transformer t = TransformerFactory.newInstance().newTransformer();
        XMLReader p = XMLReaderFactory.createXMLReader();
        p.setEntityResolver(CatalogUtils.getCatalogResolver());
        if (normalize) {
            t.setOutputProperty(OutputKeys.INDENT, "yes");
            p = new NormalizingXMLFilterImpl(p);
        }
        if (clean) {
            p = new CleaningXMLFilterImpl(p);
        }
        t.transform(new SAXSource(p, new InputSource(in)), new StreamResult(std));
    } finally {
        if (in != null) {
            in.close();
        }
    }
    return std.toString();
}

From source file:org.dita.dost.TestUtils.java

/**
 * Normalize XML file.//from  w  w w  .  j a va2s.  c  om
 * 
 * @param src source XML file
 * @param dst destination XML file
 * @throws Exception if parsing or serializing failed
 */
public static void normalize(final File src, final File dst) throws Exception {
    CatalogUtils.setDitaDir(new File("src" + File.separator + "main").getAbsoluteFile());
    final Transformer serializer = TransformerFactory.newInstance().newTransformer();
    final XMLReader parser = XMLReaderFactory.createXMLReader();
    parser.setEntityResolver(CatalogUtils.getCatalogResolver());
    InputStream in = null;
    OutputStream out = null;
    try {
        in = new BufferedInputStream(new FileInputStream(src));
        out = new BufferedOutputStream(new FileOutputStream(dst));
        serializer.transform(new SAXSource(parser, new InputSource(in)), new StreamResult(out));
    } finally {
        if (in != null) {
            in.close();
        }
        if (out != null) {
            out.close();
        }
    }
}

From source file:org.entcore.feeder.aaf.BaseImportProcessing.java

protected void parse(final Handler<Message<JsonObject>> handler, final ImportProcessing importProcessing) {
    final String[] files = vertx.fileSystem().readDirSync(path, getFileRegex());
    final VoidHandler[] handlers = new VoidHandler[files.length + 1];
    handlers[handlers.length - 1] = new VoidHandler() {
        @Override/*from   w ww  .j a  va 2  s.  c o m*/
        protected void handle() {
            next(handler, importProcessing);
        }
    };
    Arrays.sort(files);
    for (int i = files.length - 1; i >= 0; i--) {
        final int j = i;
        handlers[i] = new VoidHandler() {
            @Override
            protected void handle() {
                try {
                    String file = files[j];
                    log.info("Parsing file : " + file);
                    byte[] encoded = Files.readAllBytes(Paths.get(file));
                    String content = UNESCAPE_AAF.translate(new String(encoded, "UTF-8"));
                    InputSource in = new InputSource(new StringReader(content));
                    AAFHandler sh = new AAFHandler(BaseImportProcessing.this);
                    XMLReader xr = XMLReaderFactory.createXMLReader();
                    xr.setContentHandler(sh);
                    xr.setEntityResolver(new EntityResolver2() {
                        @Override
                        public InputSource getExternalSubset(String name, String baseURI)
                                throws SAXException, IOException {
                            return null;
                        }

                        @Override
                        public InputSource resolveEntity(String name, String publicId, String baseURI,
                                String systemId) throws SAXException, IOException {
                            return resolveEntity(publicId, systemId);
                        }

                        @Override
                        public InputSource resolveEntity(String publicId, String systemId)
                                throws SAXException, IOException {
                            if (systemId.equals("ficAlimMENESR.dtd")) {
                                Reader reader = new FileReader(path + File.separator + "ficAlimMENESR.dtd");
                                return new InputSource(reader);
                            } else {
                                return null;
                            }
                        }
                    });
                    xr.parse(in);
                    importer.flush(new Handler<Message<JsonObject>>() {
                        @Override
                        public void handle(Message<JsonObject> message) {
                            if ("ok".equals(message.body().getString("status"))) {
                                handlers[j + 1].handle(null);
                            } else {
                                error(message, handler);
                            }
                        }
                    });
                } catch (Exception e) {
                    error(e, handler);
                }
            }
        };
    }
    handlers[0].handle(null);
}

From source file:org.getobjects.foundation.NSXMLPropertyListParser.java

public Object parse(InputStream _in) {
    if (_in == null)
        return null;

    final SAXParserFactory factory = SAXParserFactory.newInstance();

    try {/*from  w w w .j  a v  a2s.  c  om*/
        final NSXMLPlistHandler handler = new NSXMLPlistHandler();
        final XMLReader reader = factory.newSAXParser().getXMLReader();
        final InputSource input = new InputSource(_in);
        reader.setContentHandler(handler);
        reader.setEntityResolver(handler);
        try {
            reader.setFeature("http://xml.org/sax/features/validation", false);
            reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
        } catch (Exception e) {
            log.error("Couldn't turn validation off: " + e);
        }
        reader.parse(input);
        return handler.rootObject();
    } catch (ParserConfigurationException e) {
        log.error("error during parser instantiation: " + e);
    } catch (SAXException e) {
        log.error("error during parsing: " + e);
    } catch (IOException e) {
        log.error("error during parsing: " + e);
    }
    return null;
}

From source file:org.infoscoop.request.filter.DetectTypeFilter.java

public static void main(String[] args) throws Exception {
    new DetectTypeFilter();

    DetectManager h = new DetectTypeFilter.DetectManager();
    XMLReader reader = factory.newSAXParser().getXMLReader();
    reader.setEntityResolver(NoOpEntityResolver.getInstance());
    reader.setContentHandler(h);/*  ww  w  . j  a v  a  2  s  .c o m*/
    reader.parse(new InputSource(new FileInputStream("src/main/webapp/generalMessages_rss.xml")));

}

From source file:org.infoscoop.request.filter.DetectTypeFilter.java

protected InputStream postProcess(ProxyRequest request, InputStream responseStream) throws IOException {
    JSONArray result = new JSONArray();
    //BufferedInputStream responseStream = new BufferedInputStream(_responseStream);

    String contentType = request.getResponseHeader("Content-Type");

    String encoding = getContentTypeCharset(contentType);
    responseStream = new ByteArrayInputStream(ProxyRequest.stream2Bytes(responseStream)); //FIXME
    XMLFilter.skipEmptyLine(responseStream);

    try {/*from w  w w.j  a v a2 s . c  o  m*/
        DetectManager handler = null;
        if (isXml(contentType, responseStream)) {
            try {
                DetectManager h = new DetectManager();
                XMLReader reader = factory.newSAXParser().getXMLReader();
                reader.setEntityResolver(NoOpEntityResolver.getInstance());
                reader.setContentHandler(h);
                reader.parse(new InputSource(responseStream));

                handler = h;
            } catch (SAXException e) {
                log.warn("parse error", e);

                responseStream.reset();
            }
        }

        if (handler == null) {
            handler = new DetectManager();

            if (encoding == null) {
                encoding = findEncoding(responseStream);//TODO:
                responseStream.reset();
            }

            org.cyberneko.html.parsers.SAXParser nekoParser = new org.cyberneko.html.parsers.SAXParser();
            nekoParser.setProperty("http://cyberneko.org/html/properties/names/elems", "lower");
            nekoParser.setProperty("http://cyberneko.org/html/properties/names/attrs", "lower");

            if (encoding != null)
                nekoParser.setProperty("http://cyberneko.org/html/properties/default-encoding", encoding);

            Transformer transformer = TransformerFactory.newInstance().newTransformer();
            SAXSource source = new SAXSource(nekoParser, new InputSource(responseStream));
            SAXResult saxResult = new SAXResult(handler);
            transformer.transform(source, saxResult);
        }

        result = handler.getResult(request);
    } catch (Exception e) {
        log.error("Url: [" + request.getTargetURL() + "] detect widget type failed.", e);
        //return 500;TODO:
        return null;
    }
    byte[] resultBytes = result.toString().getBytes("UTF-8");
    request.putResponseHeader("Content-Type", "text/plain; charset=UTF-8");
    request.putResponseHeader("Content-Length", String.valueOf(resultBytes.length));
    //request.setResponseBody(new ByteArrayInputStream( resultBytes ));
    return new ByteArrayInputStream(resultBytes);
}

From source file:org.infoscoop.request.filter.ical.ICalendarUtil.java

public static Reader convertRdf2Ics(InputStream is) throws SAXException, IOException {
    SAXParserFactory factory = SAXParserFactory.newInstance();
    factory.setValidating(false);//from  ww  w .  j  a v a2  s  .c om
    factory.setNamespaceAware(true);
    XMLReader reader = null;
    try {
        reader = factory.newSAXParser().getXMLReader();
        reader.setEntityResolver(NoOpEntityResolver.getInstance());
    } catch (ParserConfigurationException e) {
        log.error("", e);
    }

    Rdf2IcsHandler xmlHandler = new Rdf2IcsHandler();

    reader.setContentHandler(xmlHandler);
    reader.parse(new InputSource(is));
    return new StringReader(xmlHandler.getResult());
}

From source file:org.infoscoop.request.filter.RssFilter.java

public static byte[] process(ProxyRequest request, InputStream responseStream) throws IOException {

    String dateTimeFormat = request.getRequestHeader("X-IS-DATETIMEFORMAT");
    if (dateTimeFormat != null) {
        dateTimeFormat = URLDecoder.decode(dateTimeFormat, "UTF-8");
    }//  w ww  .j  a  v  a 2 s .c  o m
    String freshTime = request.getRequestHeader("X-IS-FRESHTIME");
    String maxCountString = request.getRequestHeader("X-IS-RSSMAXCOUNT");
    int maxCount = Integer.MAX_VALUE;
    if (maxCountString != null) {
        try {
            int paramMaxCount = Integer.parseInt(maxCountString);
            if (paramMaxCount > 0) {
                maxCount = paramMaxCount;
            }
        } catch (NumberFormatException e) {
            log.warn("rssmaxcount \"" + maxCountString + "\" isn't integer value.");
        }
    }

    // Filtering
    String titleFilter = request.getRequestHeader("X-IS-TITLEFILTER");
    if (titleFilter != null)
        titleFilter = URLDecoder.decode(titleFilter, "UTF-8");
    String creatorFilter = request.getRequestHeader("X-IS-CREATORFILTER");
    if (creatorFilter != null)
        creatorFilter = URLDecoder.decode(creatorFilter, "UTF-8");
    String categoryFilter = request.getRequestHeader("X-IS-CATEGORYFILTER");
    if (categoryFilter != null)
        categoryFilter = URLDecoder.decode(categoryFilter, "UTF-8");

    //      String freshDays = request.getRequestHeader("_freshdays");
    //      String logoffDateTime = request.getRequestHeader("_logoffdatetime");

    BufferedInputStream bis = new BufferedInputStream(responseStream);

    boolean isAtom = isAtom(bis);

    XMLFilter.skipEmptyLine(bis);

    String pageSizeStr = request.getRequestHeader("X-IS-PAGESIZE");
    int pageSize = -1;
    if (pageSizeStr != null) {
        try {
            pageSize = Integer.parseInt(pageSizeStr);
        } catch (NumberFormatException ex) {
            log.warn("init parameter \"rssPageSize\" has illegal value");
        }
    }
    //if( pageSize < 0 )
    //   pageSize = 20;

    long start = System.currentTimeMillis();
    RssResultBuilder resultBuilder = new RssJsonResultBuilder(pageSize);
    RssHandler handler;
    if (isAtom) {
        handler = new AtomHandler(resultBuilder, dateTimeFormat, freshTime, maxCount, titleFilter,
                creatorFilter, categoryFilter);
    } else {
        handler = new RssHandler(resultBuilder, dateTimeFormat, freshTime, maxCount, titleFilter, creatorFilter,
                categoryFilter);
    }
    try {
        XMLReader reader = factory.newSAXParser().getXMLReader();
        reader.setProperty("http://xml.org/sax/properties/lexical-handler", handler);
        reader.setEntityResolver(NoOpEntityResolver.getInstance());
        reader.setContentHandler(handler);
        reader.parse(new InputSource(bis));

        if (log.isDebugEnabled()) {
            long end = System.currentTimeMillis();
            log.debug("Rss parse duration:" + (end - start));
        }
        int pageCount = resultBuilder.getPageCount();
        if (pageCount > 1) {
            String uid = request.getPortalUid();
            if (uid == null)
                uid = request.getRequestHeader("MSDPortal-SessionId");
            for (int pageNum = 0; pageNum < pageCount; pageNum++) {
                RssCacheDAO.newInstance().insertCache(uid, request.getTargetURL(), pageNum,
                        resultBuilder.getResult(pageNum));
            }
        }

        return resultBuilder.getResult(0).getBytes("UTF-8");
    } catch (SAXException e) {
        log.error("Xml file at URL [ " + request.getTargetURL() + "] is failed to be analysed.["
                + e.getLocalizedMessage() + "]", e);
        resultBuilder.setStatusCode(1);
        resultBuilder.setMessage("Failed to analyse xml.: " + e.getLocalizedMessage());
        return resultBuilder.getResult().getBytes("UTF-8");
    } catch (IOException e) {
        log.error("Xml file at URL [ " + request.getTargetURL() + "] is failed to be analysed.["
                + e.getLocalizedMessage() + "]", e);
        resultBuilder.setStatusCode(1);
        resultBuilder.setMessage("Failed to analyse xml.: " + e.getLocalizedMessage());
        return resultBuilder.getResult().getBytes("UTF-8");
    } catch (ParserConfigurationException e) {
        log.error("Xml file at URL [ " + request.getTargetURL() + "] is failed to be analysed.["
                + e.getLocalizedMessage() + "]", e);
        resultBuilder.setStatusCode(1);
        resultBuilder.setMessage("Failed to analyse xml.: " + e.getLocalizedMessage());
        return resultBuilder.getResult().getBytes("UTF-8");
    } finally {
        bis.close();
    }

}