Skip to content

Commit

Permalink
Temporarily disabled filling-in createApproverRef/modifyApproverRef b…
Browse files Browse the repository at this point in the history
…ecause of MID-2178.
  • Loading branch information
mederly committed Jan 29, 2015
1 parent c4210d8 commit b56c594
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 35 deletions.
Expand Up @@ -1045,7 +1045,8 @@ private <T extends ObjectType, F extends ObjectType> void applyMetadata(LensCont
metaData.setCreatorRef(ObjectTypeUtil.createObjectRef(task.getOwner()));
}
if (workflowManager != null) {
metaData.getCreateApproverRef().addAll(workflowManager.getApprovedBy(task, result));
// FIXME temporarily disabled because of MID-2178
// metaData.getCreateApproverRef().addAll(workflowManager.getApprovedBy(task, result));
}

objectTypeToAdd.setMetadata(metaData);
Expand Down Expand Up @@ -1085,37 +1086,37 @@ private <T extends ObjectType, F extends ObjectType> void applyMetadata(ObjectDe
approverReferenceValues.add(new PrismReferenceValue(approverRef.getOid()));
}
}

if (!approverReferenceValues.isEmpty()) {
ReferenceDelta refDelta = ReferenceDelta.createModificationReplace((new ItemPath(ObjectType.F_METADATA,
MetadataType.F_MODIFY_APPROVER_REF)), def, approverReferenceValues);
((Collection) change.getModifications()).add(refDelta);
} else {

// a bit of hack - we want to replace all existing values with empty set of values;
// however, it is not possible to do this using REPLACE, so we have to explicitly remove all existing values

if (objectContext != null && objectContext.getObjectOld() != null) {
// a null value of objectOld means that we execute MODIFY delta that is a part of primary ADD operation (in a wave greater than 0)
// i.e. there are NO modifyApprovers set (theoretically they could be set in previous waves, but because in these waves the data
// are taken from the same source as in this step - so there are none modify approvers).

if (objectContext.getObjectOld().asObjectable().getMetadata() != null) {
List<ObjectReferenceType> existingModifyApproverRefs = objectContext.getObjectOld().asObjectable().getMetadata().getModifyApproverRef();
LOGGER.trace("Original values of MODIFY_APPROVER_REF: {}", existingModifyApproverRefs);

if (!existingModifyApproverRefs.isEmpty()) {
List<PrismReferenceValue> valuesToDelete = new ArrayList<PrismReferenceValue>();
for (ObjectReferenceType approverRef : objectContext.getObjectOld().asObjectable().getMetadata().getModifyApproverRef()) {
valuesToDelete.add(approverRef.asReferenceValue().clone());
}
ReferenceDelta refDelta = ReferenceDelta.createModificationDelete((new ItemPath(ObjectType.F_METADATA,
MetadataType.F_MODIFY_APPROVER_REF)), def, valuesToDelete);
((Collection) change.getModifications()).add(refDelta);
}
}
}
}
// FIXME temporarily disabled because of MID-2178
// if (!approverReferenceValues.isEmpty()) {
// ReferenceDelta refDelta = ReferenceDelta.createModificationReplace((new ItemPath(ObjectType.F_METADATA,
// MetadataType.F_MODIFY_APPROVER_REF)), def, approverReferenceValues);
// ((Collection) change.getModifications()).add(refDelta);
// } else {
//
// // a bit of hack - we want to replace all existing values with empty set of values;
// // however, it is not possible to do this using REPLACE, so we have to explicitly remove all existing values
//
// if (objectContext != null && objectContext.getObjectOld() != null) {
// // a null value of objectOld means that we execute MODIFY delta that is a part of primary ADD operation (in a wave greater than 0)
// // i.e. there are NO modifyApprovers set (theoretically they could be set in previous waves, but because in these waves the data
// // are taken from the same source as in this step - so there are none modify approvers).
//
// if (objectContext.getObjectOld().asObjectable().getMetadata() != null) {
// List<ObjectReferenceType> existingModifyApproverRefs = objectContext.getObjectOld().asObjectable().getMetadata().getModifyApproverRef();
// LOGGER.trace("Original values of MODIFY_APPROVER_REF: {}", existingModifyApproverRefs);
//
// if (!existingModifyApproverRefs.isEmpty()) {
// List<PrismReferenceValue> valuesToDelete = new ArrayList<PrismReferenceValue>();
// for (ObjectReferenceType approverRef : objectContext.getObjectOld().asObjectable().getMetadata().getModifyApproverRef()) {
// valuesToDelete.add(approverRef.asReferenceValue().clone());
// }
// ReferenceDelta refDelta = ReferenceDelta.createModificationDelete((new ItemPath(ObjectType.F_METADATA,
// MetadataType.F_MODIFY_APPROVER_REF)), def, valuesToDelete);
// ((Collection) change.getModifications()).add(refDelta);
// }
// }
// }
// }

}

Expand Down
Expand Up @@ -196,12 +196,14 @@ boolean decideOnApproval(String executionId) throws Exception {

private void checkUserApprovers(String oid, List<String> expectedApprovers, OperationResult result) throws SchemaException, ObjectNotFoundException {
PrismObject<UserType> user = repositoryService.getObject(UserType.class, oid, null, result);
checkUserApprovers(user, expectedApprovers, user.asObjectable().getMetadata().getModifyApproverRef(), result);
// FIXME reenable after fixing MID-2178
// checkUserApprovers(user, expectedApprovers, user.asObjectable().getMetadata().getModifyApproverRef(), result);
}

private void checkUserApproversForCreate(String oid, List<String> expectedApprovers, OperationResult result) throws SchemaException, ObjectNotFoundException {
PrismObject<UserType> user = repositoryService.getObject(UserType.class, oid, null, result);
checkUserApprovers(user, expectedApprovers, user.asObjectable().getMetadata().getCreateApproverRef(), result);
// FIXME reenable after fixing MID-2178
// checkUserApprovers(user, expectedApprovers, user.asObjectable().getMetadata().getCreateApproverRef(), result);
}

private void checkUserApprovers(PrismObject<UserType> user, List<String> expectedApprovers, List<ObjectReferenceType> realApprovers, OperationResult result) throws SchemaException, ObjectNotFoundException {
Expand All @@ -210,7 +212,7 @@ private void checkUserApprovers(PrismObject<UserType> user, List<String> expecte
realApproversSet.add(approver.getOid());
assertEquals("Unexpected target type in approverRef", UserType.COMPLEX_TYPE, approver.getType());
}
assertEquals("Mismatch in modifyApproverRef in metadata", new HashSet(expectedApprovers), realApproversSet);
assertEquals("Mismatch in approvers in metadata", new HashSet(expectedApprovers), realApproversSet);
}

private Map<String, WorkflowResult> createResultMap(String oid, WorkflowResult result) {
Expand Down

0 comments on commit b56c594

Please sign in to comment.