in scim-core/src/main/java/org/apache/directory/scim/core/repository/UpdateRequest.java [534:560]
public void traverseObjectsInArray(String pathPart, Type patchOpType) {
int index = Integer.parseInt(pathPart);
Attribute attr = (Attribute) ac;
Integer addRemoveOffset = addRemoveOffsetMap.getOrDefault(attr, 0);
switch (patchOpType) {
case ADD:
addRemoveOffsetMap.put(attr, addRemoveOffset - 1);
break;
case REMOVE:
addRemoveOffsetMap.put(attr, addRemoveOffset + 1);
break;
case REPLACE:
default:
// Do Nothing
break;
}
int newindex = index + addRemoveOffset;
if (newindex < 0) {
log.error("Attempting to retrieve a negative index:{} on pathPath: {}", newindex, pathPart);
}
originalObject = lookupIndexInArray(originalObject, newindex);
resourceObject = lookupIndexInArray(resourceObject, index);
}