@Override public Object getDocument(String uri) throws FunctionCallException { try { Template raw = getTemplate(uri); Document doc = (Document) FM_DOM_NAVIAGOTOR_CACHED_DOM.get(raw); if (doc == null) { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(true); DocumentBuilder builder = factory.newDocumentBuilder(); FmEntityResolver er = new FmEntityResolver(); builder.setEntityResolver(er); doc = builder.parse(createInputSource(null, raw)); // If the entity resolver got called 0 times, the document // is standalone, so we can safely cache it if (er.getCallCount() == 0) { FM_DOM_NAVIAGOTOR_CACHED_DOM.set(doc, raw); } } return doc; } catch (Exception e) { throw new FunctionCallException("Failed to parse document for URI: " + uri, e); } } };
public Object getDocument(String uri) throws FunctionCallException { try { Template raw = getTemplate(uri); Document doc = (Document)cachedTree.get(raw); if(doc == null) { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(true); DocumentBuilder builder = factory.newDocumentBuilder(); FmEntityResolver er = new FmEntityResolver(); builder.setEntityResolver(er); doc = builder.parse(createInputSource(null, raw)); // If the entity resolver got called 0 times, the document // is standalone, so we can safely cache it if(er.getCallCount() == 0) { cachedTree.set(doc, raw); } } return doc; } catch (Exception e) { throw new FunctionCallException("Failed to parse document for URI: " + uri, e); } } };
@Override public Object getDocument(String uri) throws FunctionCallException { try { Template raw = getTemplate(uri); Document doc = (Document) FM_DOM_NAVIAGOTOR_CACHED_DOM.get(raw); if (doc == null) { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(true); DocumentBuilder builder = factory.newDocumentBuilder(); FmEntityResolver er = new FmEntityResolver(); builder.setEntityResolver(er); doc = builder.parse(createInputSource(null, raw)); // If the entity resolver got called 0 times, the document // is standalone, so we can safely cache it if (er.getCallCount() == 0) { FM_DOM_NAVIAGOTOR_CACHED_DOM.set(doc, raw); } } return doc; } catch (Exception e) { throw new FunctionCallException("Failed to parse document for URI: " + uri, e); } } };
@Override public Object getDocument(String uri) throws FunctionCallException { try { Template raw = getTemplate(uri); Document doc = (Document) FM_DOM_NAVIAGOTOR_CACHED_DOM.get(raw); if (doc == null) { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(true); DocumentBuilder builder = factory.newDocumentBuilder(); FmEntityResolver er = new FmEntityResolver(); builder.setEntityResolver(er); doc = builder.parse(createInputSource(null, raw)); // If the entity resolver got called 0 times, the document // is standalone, so we can safely cache it if (er.getCallCount() == 0) { FM_DOM_NAVIAGOTOR_CACHED_DOM.set(doc, raw); } } return doc; } catch (Exception e) { throw new FunctionCallException("Failed to parse document for URI: " + uri, e); } } };