public static List<PrismReferenceValue> createReferences(Collection<String> oids, RelationKindType kind, RelationRegistry relationRegistry) { List<PrismReferenceValue> rv = new ArrayList<>(); for (QName relation : relationRegistry.getAllRelationsFor(kind)) { for (String oid : oids) { rv.add(new ObjectReferenceType().oid(oid).relation(relation).asReferenceValue()); } } return rv; }
private static List<PrismReferenceValue> getPotentialAssigneesForUser(MidPointPrincipal principal, QName limitationItemName, RelationRegistry relationRegistry) { // As for relations, WorkItem.assigneeRef should contain only the default ones. QName defaultRelation = relationRegistry.getDefaultRelation(); List<PrismReferenceValue> rv = new ArrayList<>(); rv.add(ObjectTypeUtil.createObjectRef(principal.getOid(), ObjectTypes.USER).relation(defaultRelation).asReferenceValue()); for (DelegatorWithOtherPrivilegesLimitations delegator : principal.getDelegatorWithOtherPrivilegesLimitationsCollection()) { if (DeputyUtils.limitationsAllow(delegator.getLimitations(), limitationItemName)) { rv.add(ObjectTypeUtil.createObjectRef(delegator.getDelegator(), defaultRelation).asReferenceValue()); } } return rv; }
private void getDeputyAssignees(List<ObjectReferenceType> deputies, AbstractWorkItemType workItem, Set<String> oidsToSkip, Task task, OperationResult result) throws SchemaException { List<PrismReferenceValue> assigneeReferencesToQuery = workItem.getAssigneeRef().stream() .map(assigneeRef -> assigneeRef.clone().relation(PrismConstants.Q_ANY).asReferenceValue()) .collect(Collectors.toList()); ObjectQuery query = prismContext.queryFor(UserType.class) .item(UserType.F_DELEGATED_REF).ref(assigneeReferencesToQuery) .build(); SearchResultList<PrismObject<UserType>> potentialDeputies = cacheRepositoryService .searchObjects(UserType.class, query, null, result); for (PrismObject<UserType> potentialDeputy : potentialDeputies) { if (oidsToSkip.contains(potentialDeputy.getOid())) { continue; } if (determineDeputyValidity(potentialDeputy, workItem.getAssigneeRef(), workItem, OtherPrivilegesLimitationType.F_APPROVAL_WORK_ITEMS, task, result)) { deputies.add(ObjectTypeUtil.createObjectRefWithFullObject(potentialDeputy, prismContext)); oidsToSkip.add(potentialDeputy.getOid()); } } }
private void getDeputyAssigneesNoWorkItem(List<ObjectReferenceType> deputies, ObjectReferenceType assigneeRef, QName limitationItemName, Set<String> oidsToSkip, Task task, OperationResult result) throws SchemaException { PrismReferenceValue assigneeReferenceToQuery = assigneeRef.clone().relation(PrismConstants.Q_ANY).asReferenceValue(); ObjectQuery query = prismContext.queryFor(UserType.class) .item(UserType.F_DELEGATED_REF).ref(assigneeReferenceToQuery) .build(); SearchResultList<PrismObject<UserType>> potentialDeputies = cacheRepositoryService .searchObjects(UserType.class, query, null, result); for (PrismObject<UserType> potentialDeputy : potentialDeputies) { if (oidsToSkip.contains(potentialDeputy.getOid())) { continue; } if (determineDeputyValidity(potentialDeputy, Collections.singletonList(assigneeRef), null, limitationItemName, task, result)) { deputies.add(ObjectTypeUtil.createObjectRefWithFullObject(potentialDeputy, prismContext)); oidsToSkip.add(potentialDeputy.getOid()); } } }
@Test public void test100ModifyRolePirateDescription() throws Exception { final String TEST_NAME = "test100ModifyRolePirateDescription"; TestUtil.displayTestTitle(this, TEST_NAME); login(userAdministrator); ObjectDelta<RoleType> descriptionDelta = prismContext.deltaFor(RoleType.class) .item(RoleType.F_DESCRIPTION).replace("Bloody pirate") .asObjectDelta(rolePirateOid); ObjectDelta<RoleType> delta0 = prismContext.deltaFactory().object() .createModifyDelta(rolePirateOid, Collections.emptyList(), RoleType.class); //noinspection UnnecessaryLocalVariable ObjectDelta<RoleType> delta1 = descriptionDelta; ExpectedTask expectedTask = new ExpectedTask(null, "Modifying role \"pirate\""); ExpectedWorkItem expectedWorkItem = new ExpectedWorkItem(userPirateOwnerOid, null, expectedTask); modifyObject(TEST_NAME, descriptionDelta, delta0, delta1, false, true, userPirateOwnerOid, Collections.singletonList(expectedTask), Collections.singletonList(expectedWorkItem), () -> {}, () -> assertNull("Description is modified", getRoleSimple(rolePirateOid).getDescription()), () -> assertEquals("Description was NOT modified", "Bloody pirate", getRoleSimple(rolePirateOid).getDescription())); PrismObject<RoleType> roleAfter = getRole(rolePirateOid); display("pirate after", roleAfter); MetadataType metadata = roleAfter.asObjectable().getMetadata(); assertEquals("Wrong modify approver ref", singleton(ObjectTypeUtil.createObjectRef(userPirateOwnerOid, ObjectTypes.USER).relation(SchemaConstants.ORG_DEFAULT)), new HashSet<>(metadata.getModifyApproverRef())); assertEquals("Wrong modify approval comments", singleton("pirate-owner :: modification comment"), new HashSet<>(metadata.getModifyApprovalComment())); }
.oid("123") .type(OrgType.COMPLEX_TYPE) .relation(SchemaConstants.ORG_MANAGER); ObjectQuery query = prismContext.queryFor(UserType.class) .item(F_ASSIGNMENT, AssignmentType.F_TARGET_REF).ref(ort.asReferenceValue())
.oid("123") .type(OrgType.COMPLEX_TYPE) .relation(QNameUtil.nullNamespace(SchemaConstants.ORG_MANAGER)); ObjectQuery query = prismContext.queryFor(UserType.class) .item(F_ASSIGNMENT, AssignmentType.F_TARGET_REF).ref(ort.asReferenceValue())
.oid("123") .type(OrgType.COMPLEX_TYPE) .relation(auditorRelation); ObjectQuery query = prismContext.queryFor(UserType.class) .item(F_ASSIGNMENT, AssignmentType.F_TARGET_REF).ref(ort.asReferenceValue())
@Test public void testAssignmentHashcode2() { LOGGER.info("\n\n===[ testAssignmentHashcode2 ]===\n"); System.out.println("\n\n===[ testAssignmentHashcode2 ]===\n"); PrismContext prismContext = PrismTestUtil.getPrismContext(); AssignmentType a1a = new AssignmentType(prismContext).id(6L) .beginMetadata() .createApprovalComment("hi") .<AssignmentType>end() .targetRef(new ObjectReferenceType().oid("target").type(OrgType.COMPLEX_TYPE).relation(SchemaConstants.ORG_DEFAULT)) .beginActivation() .effectiveStatus(ActivationStatusType.ENABLED) .validTo("2018-01-01T00:00:00.000+01:00") .end(); AssignmentType a1b = new AssignmentType(prismContext) .targetRef(new ObjectReferenceType().oid("target").type(OrgType.COMPLEX_TYPE)) .beginActivation() .validTo("2018-01-01T00:00:00.000+01:00") .end(); // WHEN assertEquals("Wrong hashCode", a1a.hashCode(), a1b.hashCode()); }
MetadataType metadata = pirateAfter.asObjectable().getMetadata(); assertEquals("Wrong create approver ref", singleton(ObjectTypeUtil.createObjectRef(userLead1Oid, ObjectTypes.USER).relation(SchemaConstants.ORG_DEFAULT)), new HashSet<>(metadata.getCreateApproverRef())); assertEquals("Wrong create approval comments",
@Test // MID-5104 public void test350ReplaceAssignmentModifyApprover() throws Exception { final String TEST_NAME = "test350ReplaceAssignmentModifyApprover"; TestUtil.displayTestTitle(TEST_NAME); // GIVEN OperationResult result = new OperationResult(TEST_NAME); PrismObject<UserType> user = prismContext.createObjectable(UserType.class) .name("test350") .oid("oid-350") .beginAssignment() .id(123L) .targetRef("oid0", RoleType.COMPLEX_TYPE) .<UserType>end() .asPrismObject(); repositoryService.addObject(user, null, result); // WHEN ObjectReferenceType approver1 = new ObjectReferenceType() .oid("approver1-oid").type(UserType.COMPLEX_TYPE).relation(SchemaConstants.ORG_DEFAULT); List<ItemDelta<?, ?>> itemDeltas1 = prismContext.deltaFor(UserType.class) .item(UserType.F_ASSIGNMENT, 123L, AssignmentType.F_METADATA, MetadataType.F_MODIFY_APPROVER_REF).replace(approver1.clone()) .asItemDeltas(); repositoryService.modifyObject(UserType.class, user.getOid(), itemDeltas1, getModifyOptions(), result); // THEN }