@Override public boolean isEmpty() { return jsonPointer.isEmpty(); }
@Override public boolean isEmpty() { return jsonPointer.isEmpty(); }
private ImmutableJsonFieldSelector(final Iterable<JsonPointer> thePointers, @Nullable final String theJsonFieldSelectorString) { final Set<JsonPointer> pointersSet = new LinkedHashSet<>(); thePointers.forEach(p -> { if (!p.isEmpty()) { pointersSet.add(p); } }); pointers = Collections.unmodifiableSet(pointersSet); jsonFieldSelectorString = theJsonFieldSelectorString != null ? theJsonFieldSelectorString : calculateFieldSelectorString(pointers); }
private ImmutableJsonFieldSelector(final Iterable<JsonPointer> thePointers, @Nullable final String theJsonFieldSelectorString) { final Set<JsonPointer> pointersSet = new LinkedHashSet<>(); thePointers.forEach(p -> { if (!p.isEmpty()) { pointersSet.add(p); } }); pointers = Collections.unmodifiableSet(pointersSet); jsonFieldSelectorString = theJsonFieldSelectorString != null ? theJsonFieldSelectorString : calculateFieldSelectorString(pointers); }
@Override public ImmutableJsonPointer append(final JsonPointer subPointer) { checkSubPointer(subPointer); final ImmutableJsonPointer result; if (subPointer.isEmpty()) { result = this; } else { final List<JsonKey> newJsonKeys = new ArrayList<>(jsonKeyHierarchy); subPointer.forEach(newJsonKeys::add); result = newInstance(newJsonKeys); } return result; }
@Override public ImmutableJsonPointer append(final JsonPointer subPointer) { checkSubPointer(subPointer); final ImmutableJsonPointer result; if (subPointer.isEmpty()) { result = this; } else { final List<JsonKey> newJsonKeys = new ArrayList<>(jsonKeyHierarchy); subPointer.forEach(newJsonKeys::add); result = newInstance(newJsonKeys); } return result; }
private static Function<JsonValue, JsonValue> transformResponse(final String serviceName, final Integer instance) { final JsonPointer transformerPointer = transformerPointer(serviceName, instance); if (transformerPointer.isEmpty()) { return resp -> resp; } else { return resp -> resp.asObject() .getValue(transformerPointer) .orElse(JsonFactory.nullObject()); } }
private JsonObject removeForPointer(final JsonPointer pointer) { final JsonObject result; final JsonKey rootKey = pointer.getRoot().orElse(ROOT_KEY); final Optional<JsonFieldDefinition> rootKeyDefinition = getDefinitionForKey(rootKey); if (pointer.isEmpty()) { result = this; } else if (1 == pointer.getLevelCount()) { result = removeValueForKey(rootKey); } else { final JsonPointer nextPointerLevel = pointer.nextLevel(); final Predicate<JsonObject> containsNextLevelRootKey = jsonObject -> nextPointerLevel.getRoot() .map(jsonObject::contains) .orElse(false); result = getValueForKey(rootKey) .filter(JsonValue::isObject) .map(JsonValue::asObject) .filter(containsNextLevelRootKey) .map(jsonObject -> jsonObject.remove(nextPointerLevel)) // Recursion .map(withoutValue -> JsonFactory.newField(rootKey, withoutValue, rootKeyDefinition.orElse(null))) .map(this::set) .orElse(this); } return result; }
/** * Converts the specified char sequence to a {@link JsonPointer} which is guaranteed to be not empty. * * @param keyOrPointer a string representation of a JSON pointer or a JsonKey. * @return the pointer. * @throws NullPointerException if {@code keyOrPointer} is {@code null}. * @throws IllegalArgumentException if {@code keyOrPointer} would lead to an empty JsonPointer. */ static JsonPointer getNonEmptyPointer(final CharSequence keyOrPointer) { requireNonNull(keyOrPointer, "The key or pointer char sequence must not be null!"); final JsonPointer result; if (isPointer(keyOrPointer)) { result = JsonFactory.newPointer(keyOrPointer); } else { final JsonKey jsonKey = JsonFactory.newKey(keyOrPointer); result = jsonKey.asPointer(); } if (result.isEmpty()) { throw new IllegalArgumentException("The key or pointer must not be empty!"); } return result; }
private JsonObject removeForPointer(final JsonPointer pointer) { final JsonObject result; final JsonKey rootKey = pointer.getRoot().orElse(ROOT_KEY); final Optional<JsonFieldDefinition> rootKeyDefinition = getDefinitionForKey(rootKey); if (pointer.isEmpty()) { result = this; } else if (1 == pointer.getLevelCount()) { result = removeValueForKey(rootKey); } else { final JsonPointer nextPointerLevel = pointer.nextLevel(); final Predicate<JsonObject> containsNextLevelRootKey = jsonObject -> nextPointerLevel.getRoot() .map(jsonObject::contains) .orElse(false); result = getValueForKey(rootKey) .filter(JsonValue::isObject) .map(JsonValue::asObject) .filter(containsNextLevelRootKey) .map(jsonObject -> jsonObject.remove(nextPointerLevel)) // Recursion .map(withoutValue -> JsonField.newInstance(rootKey, withoutValue, rootKeyDefinition.orElse(null))) .map(this::set) .orElse(this); } return result; }
private static JsonPointer checkAttributePointer(final JsonPointer pointer, final DittoHeaders dittoHeaders) { checkNotNull(pointer, "key of the attribute to be modified"); if (pointer.isEmpty()) { throw AttributePointerInvalidException.newBuilder(pointer) .dittoHeaders(dittoHeaders) .build(); } return pointer; }
/** * Converts the specified char sequence to a {@link JsonPointer} which is guaranteed to be not empty. * * @param keyOrPointer a string representation of a JSON pointer or a JsonKey. * @return the pointer. * @throws NullPointerException if {@code keyOrPointer} is {@code null}. * @throws IllegalArgumentException if {@code keyOrPointer} would lead to an empty JsonPointer. */ static JsonPointer getNonEmptyPointer(final CharSequence keyOrPointer) { requireNonNull(keyOrPointer, "The key or pointer char sequence must not be null!"); final JsonPointer result; if (isPointer(keyOrPointer)) { result = newPointer(keyOrPointer); } else { final JsonKey jsonKey = newKey(keyOrPointer); result = jsonKey.asPointer(); } if (result.isEmpty()) { throw new IllegalArgumentException("The key or pointer must not be empty!"); } return result; }
private static JsonPointer checkAttributePointer(final JsonPointer pointer, final DittoHeaders dittoHeaders) { checkNotNull(pointer, "key of the attribute to be modified"); if (pointer.isEmpty()) { throw AttributePointerInvalidException.newBuilder(pointer) .dittoHeaders(dittoHeaders) .build(); } return pointer; }
checkPointer(pointer); if (pointer.isEmpty()) { return this;
/** * Verifies that the actual JSON pointer is empty. * * @return this assert to allow method chaining. */ public JsonPointerAssert isEmpty() { isNotNull(); Assertions.assertThat(actual.isEmpty()) .overridingErrorMessage("Expected JSON object to be empty but it was not.") .isTrue(); return this; }
/** * Verifies that the actual JSON pointer is <em>not</em> empty. * * @return this assert to allow method chaining. */ public JsonPointerAssert isNotEmpty() { isNotNull(); Assertions.assertThat(actual.isEmpty()) .overridingErrorMessage("Expected JSON object not to be empty but it was.") .isFalse(); return this; }
checkPointer(pointer); if (pointer.isEmpty()) { return this;
private ImmutableJsonObjectBuilder remove(final JsonPointer pointer) { pointer.getRoot() .map(JsonKey::toString) .map(fields::get) .ifPresent(jsonField -> { final JsonValue rootValue = jsonField.getValue(); final JsonPointer nextPointerLevel = pointer.nextLevel(); if (rootValue.isObject() && !nextPointerLevel.isEmpty()) { JsonObject rootObject = rootValue.asObject(); rootObject = rootObject.remove(nextPointerLevel); set(JsonFactory.newField(jsonField.getKey(), rootObject, jsonField.getDefinition().orElse(null))); } else { fields.remove(jsonField.getKeyName()); } }); return this; }
private ImmutableJsonObjectBuilder remove(final JsonPointer pointer) { pointer.getRoot() .map(JsonKey::toString) .map(fields::get) .ifPresent(jsonField -> { final JsonValue rootValue = jsonField.getValue(); final JsonPointer nextPointerLevel = pointer.nextLevel(); if (rootValue.isObject() && !nextPointerLevel.isEmpty()) { JsonObject rootObject = rootValue.asObject(); rootObject = rootObject.remove(nextPointerLevel); set(JsonFactory.newField(jsonField.getKey(), rootObject, jsonField.getDefinition().orElse(null))); } else { fields.remove(jsonField.getKeyName()); } }); return this; }