/** * Retrieve the currently cached value for the given document. */ public static Result get(XmlFileModel key) { String cacheKey = getKey(key); Result result = null; CacheDocument reference = map.get(cacheKey); if (reference == null) return new Result(false, null); if (reference.parseFailure) return new Result(true, null); Document document = reference.getDocument(); if (document == null) LOG.info("Cache miss on XML document: " + cacheKey); return new Result(false, document); }
if (cacheResult.isParseFailure()) Document document = cacheResult.getDocument(); if (document != null) return document;
default Document asDocument() { XMLDocumentCache.Result cacheResult = XMLDocumentCache.get(this); Document document; if (cacheResult.isParseFailure()) { throw new WindupException("Could not load " + asFile() + " due to previous parse failure"); } else if (cacheResult.getDocument() == null) { FileModel fileModel = getGraph().frameElement(getElement(), FileModel.class); try (InputStream is = fileModel.asInputStream()) { document = LocationAwareXmlReader.readXML(is); XMLDocumentCache.cache(this, document); } catch (Exception e) { XMLDocumentCache.cacheParseFailure(this); throw new WindupException("Exception reading document due to: " + e.getMessage(), e); } } else { document = cacheResult.getDocument(); } return document; } }