@Override public JsonPointer addLeaf(final JsonKey key) { return jsonPointer.addLeaf(key); }
@Override public JsonPointer addLeaf(final JsonKey key) { return jsonPointer.addLeaf(key); }
private JsonPointer getAbsolutePointer(final ResourceNode resourceNode) { final JsonPointer result = resourceNode.getParent() .filter(p -> PolicyTreeNode.Type.RESOURCE == p.getType()) .map(p -> (ResourceNode) p) .map(this::getAbsolutePointer) // Recursion! .orElseGet(JsonFactory::emptyPointer); return result.addLeaf(JsonFactory.newKey(resourceNode.getName())); }
@Override default JsonPointer getResourcePath() { final Message<?> message = getMessage(); final String box = message.getDirection() == MessageDirection.TO ? INBOX_PREFIX : OUTBOX_PREFIX; final JsonPointer pathSuffix = JsonPointer.empty() .addLeaf(JsonKey.of(box)) .addLeaf(JsonKey.of(MESSAGES_PREFIX)) .addLeaf(JsonKey.of(message.getSubject())); final JsonPointer path = message.getFeatureId().map(fId -> JsonPointer.empty() .addLeaf(JsonKey.of(FEATURES_PREFIX)) .addLeaf(JsonKey.of(fId))) .orElse(JsonPointer.empty()); return path.append(pathSuffix); }
@Override default JsonPointer getResourcePath() { final Message<?> message = getMessage(); final String box = message.getDirection() == MessageDirection.TO ? INBOX_PREFIX : OUTBOX_PREFIX; final JsonPointer pathSuffix = JsonPointer.empty() .addLeaf(JsonKey.of(box)) .addLeaf(JsonKey.of(MESSAGES_PREFIX)) .addLeaf(JsonKey.of(message.getSubject())); final JsonPointer path = message.getFeatureId().map(fId -> JsonPointer.empty() .addLeaf(JsonKey.of(FEATURES_PREFIX)) .addLeaf(JsonKey.of(fId))) .orElse(JsonPointer.empty()); return path.append(pathSuffix); }
private static Collection<ResourcePermissions> createEntriesForAttribute(final JsonPointer attributePointer, final JsonValue attributeValue, final Enforcer policyEnforcer) { final Collection<ResourcePermissions> result = new HashSet<>(3); if (attributeValue.isObject() && !attributeValue.isNull()) { final JsonObject jsonObject = attributeValue.asObject(); // Recursion! jsonObject.forEach( subField -> result.addAll(createEntriesForAttribute(attributePointer.addLeaf(subField.getKey()), subField.getValue(), policyEnforcer))); } else { result.add(AttributeResourcePermissions.getInstance(attributePointer, attributeValue, policyEnforcer)); } return result; }
private static Collection<ResourcePermissions> createEntriesForFeatureProperty(final CharSequence featureId, final JsonPointer propertyPointer, final JsonValue propertyValue, final Enforcer policyEnforcer) { final Collection<ResourcePermissions> result = new HashSet<>(3); if (propertyValue.isObject() && !propertyValue.isNull()) { final JsonObject propertyValueJsonObject = propertyValue.asObject(); // Recursion! propertyValueJsonObject.forEach(subField -> result.addAll( createEntriesForFeatureProperty(featureId, propertyPointer.addLeaf(subField.getKey()), subField.getValue(), policyEnforcer))); } else { result.add(FeaturePropertyResourcePermissions.getInstance(featureId, propertyPointer, propertyValue, policyEnforcer)); } return result; }
private static Collection<ResourcePermissions> createEntriesForAttribute(final JsonPointer attributePointer, final JsonValue attributeValue, final Enforcer policyEnforcer) { final Collection<ResourcePermissions> result = new HashSet<>(3); if (attributeValue.isObject() && !attributeValue.isNull()) { final JsonObject jsonObject = attributeValue.asObject(); // Recursion! jsonObject.forEach( subField -> result.addAll(createEntriesForAttribute(attributePointer.addLeaf(subField.getKey()), subField.getValue(), policyEnforcer))); } else { result.add(AttributeResourcePermissions.getInstance(attributePointer, attributeValue, policyEnforcer)); } return result; }
private static Collection<ResourcePermissions> createEntriesForFeatureProperty(final CharSequence featureId, final JsonPointer propertyPointer, final JsonValue propertyValue, final Enforcer policyEnforcer) { final Collection<ResourcePermissions> result = new HashSet<>(3); if (propertyValue.isObject() && !propertyValue.isNull()) { final JsonObject propertyValueJsonObject = propertyValue.asObject(); // Recursion! propertyValueJsonObject.forEach(subField -> result.addAll( createEntriesForFeatureProperty(featureId, propertyPointer.addLeaf(subField.getKey()), subField.getValue(), policyEnforcer))); } else { result.add(FeaturePropertyResourcePermissions.getInstance(featureId, propertyPointer, propertyValue, policyEnforcer)); } return result; }
/** * Collect list of individual property changes */ private static void collectChanges(List target, String thingId, String featureId, JsonPointer path, JsonValue value) { if (value.isObject()) { // on Object recursively collect all individual properties with concatenated property path JsonObject obj = value.asObject(); obj.forEach(c -> { collectChanges(target, thingId, featureId, path.addLeaf(c.getKey()), c.getValue()); }); } else { target.add(new History(thingId, featureId, path, value, LocalDateTime.now())); } }
policyTreeNode.getChildren() .forEach((s, child) -> traverseSubtreeForPermissionAccess(permission, resource.addLeaf(JsonKey.of(s)), type, child, grantedResources, revokedResources, level + 1, false));
private static List<PointerAndValue> collectFlatPointers(final JsonPointer createdPointer, final JsonField field, final List<PointerAndValue> flattenedFields) { final JsonValue fieldValue = field.getValue(); if (fieldValue.isObject()) { final JsonObject jsonObject = fieldValue.asObject(); if (!jsonObject.isEmpty()) { jsonObject.forEach(jsonField -> collectFlatPointers(createdPointer.addLeaf(jsonField.getKey()), jsonField, flattenedFields)); } else { flattenedFields.add(new PointerAndValue(createdPointer, fieldValue)); } } else { flattenedFields.add(new PointerAndValue(createdPointer, fieldValue)); } return flattenedFields; }