protected void _ensureElaborated() { if (!_isElaborated() && refOverlay == null) { _elaborate(false); } }
/* package */ V _get(boolean elaborate) { if (_isValidRef()) { return refOverlay._get(elaborate); } else if (_isReference()) { return null; } else { if (elaborate) { _ensureElaborated(); } return value; } }
public static <V, OV extends JsonOverlay<V>> JsonOverlay<?> find(OV overlay, String path) { return overlay._find(path); }
overlay = ((OverlayFactory<V>) overlay._getFactory())._create((V) null, parent, refMgr); overlay._setReference(refOverlay); overlay = (JsonOverlay<V>) existing; if (parent != null) { overlay._setParent(parent); overlay._setParent(parent); refMgr.getRegistry().register(json, getSignature(), overlay); if (!overlay._isElaborated()) { overlay._elaborate(true);
public final V get() { return overlay._get(); }
/* package */ JsonOverlay<?> _find(JsonPointer path) { return path.matches() ? thisOrRefTarget() : _findInternal(path); }
public String getJsonReference() { return overlay._getJsonReference(); }
private void fillWithJson() { value.clear(); overlays.clear(); for (Iterator<Entry<String, JsonNode>> iter = json.fields(); iter.hasNext();) { Entry<String, JsonNode> entry = iter.next(); if (keyPattern == null || keyPattern.matcher(entry.getKey()).matches()) { JsonOverlay<V> valOverlay = valueFactory.create(entry.getValue(), this, refMgr); overlays.put(entry.getKey(), valOverlay); valOverlay._setPathInParent(entry.getKey()); value.put(entry.getKey(), valOverlay._get(false)); } } }
/* package */String _getJsonReference(boolean forRef) { if (creatingRef != null) { return creatingRef.getNormalizedRef(); } if (_isReference() && refOverlay._getReference().isValid() && !forRef) { return refOverlay.getOverlay()._getJsonReference(false); } if (parent != null) { String ref = parent._getJsonReference(); return ref + (ref.contains("#") ? "" : "#") + "/" + pathInParent; } else { return "#"; } }
/* 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; }
private void _elaborateValue() { @SuppressWarnings("unchecked") PropertiesOverlay<V> overlay = (PropertiesOverlay<V>) elaborationValue; children.clear(); for (Entry<String, JsonOverlay<?>> entry : overlay.children.entrySet()) { children.put(entry.getKey(), entry.getValue()._copy()); } childOrder.clear(); childOrder.addAll(overlay.childOrder); this.elaborationValue = null; }
public JsonOverlay<V> create(V value, JsonOverlay<?> parent, ReferenceManager refMgr) { JsonOverlay<V> overlay = _create(value, parent, refMgr); overlay._elaborate(true); return overlay; }
public Builder<V> builder() { return new Builder<V>(_getFactory(), this); }
protected JsonOverlay(JsonNode json, JsonOverlay<?> parent, OverlayFactory<V> factory, ReferenceManager refMgr) { this.json = json; if (Reference.isReferenceNode(json)) { this.refOverlay = new RefOverlay<V>(json, parent, factory, refMgr); } else { this.value = _fromJson(json); } this.parent = parent; this.factory = factory; this.refMgr = refMgr; this.present = !json.isMissingNode(); }
public static <V> V get(JsonOverlay<V> overlay) { return overlay._get(); }
public static String getJsonReference(JsonOverlay<?> overlay) { return overlay._getJsonReference(); }
/* package */ V _get() { return _get(true); }
public JsonOverlay<?> find(JsonPointer path) { return overlay._find(path); }
public String getJsonReference(boolean forRef) { return overlay._getJsonReference(forRef); }
public V get(int index) { JsonOverlay<V> valOverlay = overlays.get(index); return valOverlay != null ? valOverlay._get() : null; }