private FieldType() { predicate = jsonField -> { final Optional<JsonFieldDefinition> definition = jsonField.getDefinition(); return !definition.isPresent() || jsonField.isMarkedAs(this); }; }
private FieldType() { predicate = jsonField -> { final Optional<JsonFieldDefinition> definition = jsonField.getDefinition(); return !definition.isPresent() || jsonField.isMarkedAs(this); }; }
@Override public ImmutableJsonObjectBuilder setAll(final Iterable<JsonField> fields, final Predicate<JsonField> predicate) { requireNonNull(fields, "The JSON fields to be set must not be null!"); checkPredicate(predicate); StreamSupport.stream(fields.spliterator(), false) .filter(field -> !field.getDefinition().isPresent() || predicate.test(field)) .forEach(fieldToBeSet -> this.fields.put(fieldToBeSet.getKeyName(), fieldToBeSet)); return this; }
@Override public ImmutableJsonObjectBuilder setAll(final Iterable<JsonField> fields, final Predicate<JsonField> predicate) { requireNonNull(fields, "The JSON fields to be set must not be null!"); checkPredicate(predicate); StreamSupport.stream(fields.spliterator(), false) .filter(field -> !field.getDefinition().isPresent() || predicate.test(field)) .forEach(fieldToBeSet -> this.fields.put(fieldToBeSet.getKeyName(), fieldToBeSet)); return this; }
@Override public JsonObject toJson(final JsonSchemaVersion schemaVersion, final Predicate<JsonField> thePredicate) { final Predicate<JsonField> predicate = schemaVersion.and(thePredicate); return stream() // .filter(field -> !field.getDefinition().isPresent() || predicate.test(field)) // .collect(JsonCollectors.fieldsToObject()); }
@Override public JsonObject toJson(final JsonSchemaVersion schemaVersion, final Predicate<JsonField> thePredicate) { final Predicate<JsonField> predicate = schemaVersion.and(thePredicate); return stream() // .filter(field -> !field.getDefinition().isPresent() || predicate.test(field)) // .collect(JsonCollectors.fieldsToObject()); }
@Override public JsonObject toJson(final JsonSchemaVersion schemaVersion, final Predicate<JsonField> thePredicate) { final Predicate<JsonField> predicate = schemaVersion.and(thePredicate); return stream() // .filter(field -> !field.getDefinition().isPresent() || predicate.test(field)) // .collect(JsonCollectors.fieldsToObject()); }
@Override public JsonObject toJson(final JsonSchemaVersion schemaVersion, final Predicate<JsonField> thePredicate) { final Predicate<JsonField> predicate = schemaVersion.and(thePredicate); return stream() // .filter(field -> !field.getDefinition().isPresent() || predicate.test(field)) // .collect(JsonCollectors.fieldsToObject()); }
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; }
@SuppressWarnings("unchecked") JsonObject buildJsonView(final Iterable<JsonField> jsonFields, final Set<String> subjectIds, final Permissions permissions) { final PolicyTrie defaultPolicyTrie = new PolicyTrie(grantRevokeIndex, Collections.emptyMap()); if (jsonFields instanceof JsonObject && ((JsonObject) jsonFields).isNull()) { return (JsonObject) jsonFields; } final JsonObjectBuilder outputObjectBuilder = JsonFactory.newObjectBuilder(); for (final JsonField field : jsonFields) { final JsonValue jsonView = getViewForJsonFieldOrNull(field, defaultPolicyTrie, subjectIds, permissions); if (null != jsonView) { final Optional<JsonFieldDefinition> definitionOptional = field.getDefinition(); if (definitionOptional.isPresent()) { outputObjectBuilder.set(definitionOptional.get(), jsonView); } else { outputObjectBuilder.set(field.getKey(), jsonView); } } } return outputObjectBuilder.build(); }
private static void compareFieldDefinitions(final JsonField expectedField, final JsonField actualField) { final Optional<JsonFieldDefinition> expectedFieldDefinition = expectedField.getDefinition(); final Optional<JsonFieldDefinition> actualFieldDefinition = actualField.getDefinition(); if (expectedFieldDefinition.isPresent()) { Assertions.assertThat(actualFieldDefinition) .overridingErrorMessage("Expected JsonField <%s> to have definition <%s> but it had " + "none", expectedField.getKey(), expectedFieldDefinition.get()) .isPresent(); Assertions.assertThat(expectedFieldDefinition) .as("Definitions of JsonField <%s> are equal", expectedField.getKey()) .contains(actualFieldDefinition.get()); } }
@SuppressWarnings("unchecked") private static JsonObject filterByTrie(final JsonObject self, final JsonFieldSelectorTrie trie) { if (trie.isEmpty()) { return self; } final JsonObjectBuilder builder = JsonFactory.newObjectBuilder(); for (final JsonKey key : trie.getKeys()) { self.getField(key).ifPresent(child -> { final JsonValue childValue = child.getValue(); final JsonValue filteredChildValue = childValue.isObject() ? filterByTrie(childValue.asObject(), trie.descend(key)) : childValue; final Optional<JsonFieldDefinition> childFieldDefinition = child.getDefinition(); if (childFieldDefinition.isPresent()) { builder.set(childFieldDefinition.get(), filteredChildValue); } else { builder.set(key, filteredChildValue); } }); } return builder.build(); }
@SuppressWarnings("unchecked") private static JsonObject filterByTrie(final JsonObject self, final JsonFieldSelectorTrie trie) { if (trie.isEmpty()) { return self; } final JsonObjectBuilder builder = JsonObject.newBuilder(); for (final JsonKey key : trie.getKeys()) { self.getField(key).ifPresent(child -> { final JsonValue childValue = child.getValue(); final JsonValue filteredChildValue = childValue.isObject() ? filterByTrie(childValue.asObject(), trie.descend(key)) : childValue; final Optional<JsonFieldDefinition> childFieldDefinition = child.getDefinition(); if (childFieldDefinition.isPresent()) { builder.set(childFieldDefinition.get(), filteredChildValue); } else { builder.set(key, filteredChildValue); } }); } return builder.build(); }