public OpenApi<?> parse(JsonNode tree, URL resolutionBase, boolean validate, JsonLoader loader) { ReferenceManager manager = new ReferenceManager(resolutionBase, tree, loader); return parse(manager, validate); }
public Reference getReference(String refString) { try { URL url = new URL(docUrl, refString); String fragment = url.getRef(); ReferenceManager manager = getManagerFor(url); return new Reference(refString, fragment, normalize(url, false).toString(), manager); } catch (MalformedURLException e) { return new Reference(refString, new ResolutionException(null, e), null); } }
public RefOverlay(JsonNode json, JsonOverlay<?> parent, OverlayFactory<V> factory, ReferenceManager refMgr) { this.reference = refMgr.getReference(json); this.parent = parent; // parent of reference, not parent of referent this.factory = factory; this.refMgr = refMgr; }
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; }
private OpenApi<?> parse(ReferenceManager manager, boolean validate) { JsonNode tree; try { tree = manager.loadDoc(); if (isVersion3(tree)) { OpenApi3 model = (OpenApi3) OpenApi3Impl.factory.create(tree, null, manager); ((OpenApi3Impl) model)._setCreatingRef(manager.getDocReference()); if (validate) { model.validate(); } return model; } else { throw new OpenApiParserException( "Could not determine OpenApi version from model: no 'openapi' property"); } } catch (IOException e) { throw new OpenApiParserException("Failed to parse model", e); } }
currentJson = current.getManager().loadDoc(); } catch (IOException e) { return failResolve("Failed to load referenced documnet", e); current = manager.getReference(currentJson); if (current.isInvalid(false)) { return failResolve("Invalid reference in reference chain", current.getInvalidReason());
JsonOverlay<V> overlay; if (Reference.isReferenceNode(json)) { Reference reference = refMgr.getReference(json); RefOverlay<V> refOverlay = new RefOverlay<V>(reference, null, this, refMgr); overlay = refOverlay.getOverlay(); 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);
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); } }
/* package */ Optional<PositionInfo> _getPositionInfo() { if (positionInfo == null) { JsonPointer ptr = JsonPointer.compile(_getPathFromRoot()); positionInfo = refMgr.getPositionInfo(ptr); positionInfo.ifPresent(info -> info.setDocumentUrl(_getDocumentUrl(true))); } return positionInfo; }
/* 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; }
private OpenApi<?> parse(ReferenceManager manager, boolean validate) { JsonNode tree; try { tree = manager.loadDoc(); if (isVersion3(tree)) { OpenApi3 model = (OpenApi3) OpenApi3Impl.factory.create(tree, null, manager); ((OpenApi3Impl) model)._setCreatingRef(manager.getDocReference()); if (validate) { model.validate(); } return model; } else { throw new OpenApiParserException( "Could not determine OpenApi version from model: no 'openapi' property"); } } catch (IOException e) { throw new OpenApiParserException("Failed to parse model", e); } }
public OpenApi<?> parse(JsonNode tree, URL resolutionBase, boolean validate, JsonLoader loader) { ReferenceManager manager = new ReferenceManager(resolutionBase, tree, loader); return parse(manager, validate); }
public Reference getDocReference() { return getReference(docUrl.toString()); }
public OpenApi<?> parse(URL resolutionBase, boolean validate) throws Exception { ReferenceManager manager = new ReferenceManager(resolutionBase); return parse(manager, validate); }
public Reference getReference(JsonNode refNode) { String refString = refNode.get("$ref").asText(); return getReference(refString); }
public OpenApi<?> parse(URL resolutionBase, boolean validate) throws Exception { ReferenceManager manager = new ReferenceManager(resolutionBase); return parse(manager, validate); }
public JsonOverlay<V> build() { ReferenceManager refMgr = modelMember != null ? modelMember.refMgr : new ReferenceManager(); @SuppressWarnings("unchecked") JsonOverlay<V> castResult = (JsonOverlay<V>) factory.create(JsonOverlay._jsonObject(), null, refMgr); return castResult; } }
public RealizationModel parse(String spec, URL resolutionBase) { try { JsonLoader loader = new JsonLoader(); JsonNode tree = loader.loadString(resolutionBase, spec); validateWithSchema(tree); ReferenceManager manager = new ReferenceManager(resolutionBase, tree, loader); return (RealizationModel) ((Object) RealizationModelImpl.factory.create(tree, null, manager)); } catch (IOException e) { throw new RealizationModelParseException("Failed to parse spec as JSON or YAML", e); } }