/** * Peturn parser to pool * * @param parser */ protected void reuseParser(HtmlParser parser) { if (null != parser) { if (parser instanceof NekkoParser) { synchronized (_xhtmlParsersPool) { if (_xhtmlParsersPool.size() < STACK_SIZE) { ((NekkoParser) parser).reset(); _xhtmlParsersPool.push(parser); } } } } }
/** * Factory method for create parsing object - contain chain of parsing, transformation and * serialization of response output * * @param string Encodings for parser * @return * @throws ServletException */ protected HtmlParser getXmlParser(String mime) { // TODO make pool of parsers-transformers. NekkoParser parser; try { synchronized (_xhtmlParsersPool) { parser = (NekkoParser) _xhtmlParsersPool.pop(); } } catch (EmptyStackException e) { parser = new NekkoParser(); parser.setPublicId(getPublicid()); parser.setSystemid(getSystemid()); parser.setNamespace(getNamespace()); // If tidy not handle all requests, disable reorganising of html // parser.setMoveElements(isForcexml()); parser.init(); } parser.setMime(mime); // TODO - set header scripts/styles filter. return parser; }