in scim-core/src/main/java/org/apache/directory/scim/core/repository/UpdateRequest.java [460:494]
private Object determineValue(PatchOperation.Type patchOpType, JsonNode valueNode, ParseData parseData) throws JsonProcessingException {
if (patchOpType == PatchOperation.Type.REMOVE) {
return null;
}
if (valueNode != null) {
if (valueNode instanceof TextNode) {
return valueNode.asText();
} else if (valueNode instanceof BooleanNode) {
return valueNode.asBoolean();
} else if (valueNode instanceof DoubleNode || valueNode instanceof FloatNode) {
return valueNode.asDouble();
} else if (valueNode instanceof IntNode) {
return valueNode.asInt();
} else if (valueNode instanceof NullNode) {
return null;
} else if (valueNode instanceof ObjectNode) {
return parseData.resourceObject;
} else if (valueNode instanceof POJONode) {
POJONode pojoNode = (POJONode) valueNode;
return pojoNode.getPojo();
} else if (valueNode instanceof ArrayNode) {
ArrayNode arrayNode = (ArrayNode) valueNode;
List<Object> objectList = new ArrayList<>();
for(int i = 0; i < arrayNode.size(); i++) {
Object subObject = determineValue(patchOpType, arrayNode.get(i), parseData);
if (subObject != null) {
objectList.add(subObject);
}
}
return objectList;
}
}
return null;
}