protected <T> T _get(String name, int index, boolean elaborate, Class<T> cls) { @SuppressWarnings("unchecked") ListOverlay<T> overlay = (ListOverlay<T>) children.get(name); return overlay.get(index); }
@Override protected JsonOverlay<List<V>> _create(JsonNode json, JsonOverlay<?> parent, ReferenceManager refMgr) { return new ListOverlay<V>(json, parent, this, refMgr); }
public Overlay(ListOverlay<V> list, int index) { this.overlay = list._getOverlay(index); }
@Override protected void _elaborate(boolean atCreation) { if (json != null) { fillWithJson(); } else { fillWithValues(); } _setChildParentPaths(); elaborated = true; }
public void add(V itemValue) { value.add(itemValue); overlays.add(itemOverlayFor(itemValue)); _setChildParentPath(overlays.size() - 1); }
private <X> void checkListUnique(Overlay<List<X>> list, boolean unique) { if (unique) { ListOverlay<X> listOverlay = Overlay.getListOverlay(list); Set<X> seen = new HashSet<>(); for (int i = 0; i < listOverlay.size(); i++) { X item = listOverlay.get(i); if (seen.contains(item)) { results.addError(msg(DuplicateValue, item, i), Overlay.of(listOverlay, i)); } else { seen.add(item); } } } }
public void insert(int index, V itemValue) { value.add(index, itemValue); overlays.add(index, itemOverlayFor(itemValue)); _setChildParentPaths(index, overlays.size()); }
@Override protected JsonNode _toJsonInternal(SerializationOptions options) { ArrayNode array = _jsonArray(); for (JsonOverlay<V> item : overlays) { // we can't have missing children, since they'd screw up the position of other // entries. So we set an option for each of chilren ensuring that they will // return empty containers. This only affects list, map, and properties // overlays. Map and properties overlays remove the keep-one option when // serializing their children. array.add(item._toJson(options.plus(Option.KEEP_ONE_EMPTY))); } return array.size() > 0 || options.isKeepThisEmpty() ? array : _jsonMissing(); }
private void _setChildParentPath(int index) { _setChildParentPaths(index, index + 1); }
protected <T> void _setList(String name, List<T> listVal, Class<T> cls) { @SuppressWarnings("unchecked") ListOverlay<T> overlay = (ListOverlay<T>) children.get(name); overlay._set(listVal); }
protected <T> void _add(String name, T val, Class<T> cls) { @SuppressWarnings("unchecked") ListOverlay<T> overlay = (ListOverlay<T>) children.get(name); overlay.add(val); }
private <X> void checkListUnique(Overlay<List<X>> list, boolean unique) { if (unique) { ListOverlay<X> listOverlay = Overlay.getListOverlay(list); Set<X> seen = new HashSet<>(); for (int i = 0; i < listOverlay.size(); i++) { X item = listOverlay.get(i); if (seen.contains(item)) { results.addError(msg(DuplicateValue, item, i), Overlay.of(listOverlay, i)); } else { seen.add(item); } } } }
public void set(int index, V itemValue) { value.set(index, itemValue); overlays.set(index, itemOverlayFor(itemValue)); _setChildParentPath(index); }
private void _setChildParentPaths() { _setChildParentPaths(0, overlays.size()); }
public void remove(int index) { value.remove(index); overlays.remove(index); _setChildParentPaths(index, overlays.size()); }
private Reference getListReference(int index) { @SuppressWarnings("unchecked") ListOverlay<V> listOverlay = (ListOverlay<V>) overlay; return getReference(listOverlay._getOverlay(index)); }
@Override protected JsonOverlay<List<V>> _create(List<V> value, JsonOverlay<?> parent, ReferenceManager refMgr) { return new ListOverlay<V>(value, parent, this, refMgr); }