public ReferenceManager(URL rootUrl, JsonLoader loader) { this.registry = new ReferenceRegistry(loader); this.docUrl = rootUrl != null ? normalize(rootUrl, true) : null; if (docUrl != null) { registry.registerManager(docUrl, this); } }
public ReferenceManager getManagerFor(URL url) { URL normalized = normalize(url, true); ReferenceManager manager = registry.getManager(normalized); if (manager == null) { manager = new ReferenceManager(normalized, registry); registry.registerManager(normalized, manager); } return manager; }
public Optional<PositionInfo> getPositionInfo(JsonPointer pointer) { if (!positions.containsKey(pointer)) { positions.put(pointer, registry.getPositionInfo(docUrl.toString(), pointer)); } return positions.get(pointer); }
/* package */JsonOverlay<V> getOverlay() { if (!reference.isResolved()) { reference.resolve(); } if (target == null && reference.isValid()) { ReferenceRegistry registry = refMgr.getRegistry(); { @SuppressWarnings("unchecked") JsonOverlay<V> castTarget = (JsonOverlay<V>) registry.getOverlay(reference.getNormalizedRef(), factory.getSignature()); this.target = castTarget; } if (target == null) { @SuppressWarnings("unchecked") JsonOverlay<V> castTarget = (JsonOverlay<V>) registry.getOverlay(reference.getJson(), factory.getSignature()); this.target = castTarget; } if (target == null) { target = factory.create(reference.getJson(), null, reference.getManager()); target._setCreatingRef(reference); refMgr.getRegistry().register(reference.getNormalizedRef(), factory.getSignature(), target); } } return target; }
public JsonNode loadDoc() throws IOException { if (doc == null) { doc = registry.loadDoc(docUrl); } return doc; }
JsonOverlay<?> existing = refMgr.getRegistry().getOverlay(json, getSignature()); if (existing != null) { overlay = (JsonOverlay<V>) existing; overlay = _create(json, parent, refMgr); overlay._setParent(parent); refMgr.getRegistry().register(json, getSignature(), overlay); if (!overlay._isElaborated()) { overlay._elaborate(true);