@NotNull public static ObjectReferenceType stringToRef(@NotNull String s) { String[] parts = s.split(CommonProcessVariableNames.TYPE_NAME_SEPARATOR); if (parts.length == 0 || parts.length > 2) { throw new IllegalArgumentException("Incorrect reference string representation: " + s); } else if (parts.length == 1) { return new ObjectReferenceType().oid(parts[0]).type(UserType.COMPLEX_TYPE); } else { // TODO support namespaces other than c: QName type = StringUtils.isEmpty(parts[0]) ? UserType.COMPLEX_TYPE : new QName(SchemaConstants.NS_C, parts[0]); return new ObjectReferenceType().oid(parts[1]).type(type); } }
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; }
protected void fillInAdditionalConnectorRef(PrismObject<ResourceType> resource, String connectorName, String connectorType, OperationResult result) throws SchemaException { ResourceType resourceType = resource.asObjectable(); PrismObject<ConnectorType> connectorPrism = findConnectorByType(connectorType, result); for (ConnectorInstanceSpecificationType additionalConnector: resourceType.getAdditionalConnector()) { if (connectorName.equals(additionalConnector.getName())) { ObjectReferenceType ref = new ObjectReferenceType().oid(connectorPrism.getOid()); additionalConnector.setConnectorRef(ref); } } }
public static Function<Object, Object> createRefConvertor(QName defaultType) { return (o) -> { if (o == null || o instanceof ObjectReferenceType) { return o; } else if (o instanceof Referencable) { ObjectReferenceType rv = new ObjectReferenceType(); rv.setupReferenceValue(((Referencable) o).asReferenceValue()); return rv; } else if (o instanceof PrismReferenceValue) { ObjectReferenceType rv = new ObjectReferenceType(); rv.setupReferenceValue((PrismReferenceValue) o); return rv; } else if (o instanceof String) { return new ObjectReferenceType().oid((String) o).type(defaultType); } else { //throw new IllegalArgumentException("The value couldn't be converted to an object reference: " + o); return o; // let someone else complain at this } }; }
private void toAssociation(PrismObject<ShadowType> shadow, ShadowAssociationType shadowAssociationType) { shadowAssociationType.setShadowRef(new ObjectReferenceType().oid(shadow.getOid()).type(ShadowType.COMPLEX_TYPE)); // We also need to add identifiers here. Otherwise the delta won't match the shadow association. // And therefore new values won't be computed correctly (MID-4948) // This is not a clean systemic solution. But there was no time for a better solution before 3.9 release. try { ResourceAttributeContainer shadowAttributesContainer = ShadowUtil.getAttributesContainer(shadow); ResourceAttributeContainer identifiersContainer = ObjectFactory.createResourceAttributeContainer( ShadowAssociationType.F_IDENTIFIERS, shadowAttributesContainer.getDefinition(), prismContext); shadowAssociationType.asPrismContainerValue().add(identifiersContainer); Collection<ResourceAttribute<?>> shadowIdentifiers = ShadowUtil.getAllIdentifiers(shadow); for (ResourceAttribute<?> shadowIdentifier : shadowIdentifiers) { identifiersContainer.add(shadowIdentifier.clone()); } } catch (SchemaException e) { // Should not happen throw new SystemException(e.getMessage(), e); } }
@Test public void singleValuedItems() throws Exception { System.out.println("===[ singleValuedItems ]==="); UserType userBean = getPrismContext().createObjectable(UserType.class) .beginAssignment() .id(1L) .targetRef(new ObjectReferenceType().oid("123456").type(RoleType.COMPLEX_TYPE)) .end(); //noinspection unchecked PrismContainerValue<AssignmentType> assignmentPcv = userBean.getAssignment().get(0).asPrismContainerValue(); PrismContainer<Containerable> limitContentPc = assignmentPcv .findOrCreateContainer(AssignmentType.F_LIMIT_TARGET_CONTENT); PrismContainerValue<Containerable> val1 = limitContentPc.createNewValue(); val1.setId(1L); PrismContainerValue<Containerable> val2 = val1.clone(); val2.setId(2L); try { limitContentPc.add(val2); fail("unexpected success"); } catch (SchemaException e) { System.out.println("Got expected exception: " + e); } }
@Test public void test260AddWorkItem() throws Exception { OperationResult result = new OperationResult("test260AddWorkItem"); AccessCertificationWorkItemType workItem = new AccessCertificationWorkItemType(prismContext) .beginOriginalAssigneeRef().oid("orig1").type(UserType.COMPLEX_TYPE).<AccessCertificationWorkItemType>end() .beginAssigneeRef().oid("rev1").type(UserType.COMPLEX_TYPE).<AccessCertificationWorkItemType>end() .beginAssigneeRef().oid("rev2").type(UserType.COMPLEX_TYPE).end(); List<ItemDelta<?, ?>> modifications = deltaFor(AccessCertificationCampaignType.class) .item(F_CASE, NEW_CASE_ID, F_WORK_ITEM).add(workItem) .asItemDeltas(); // WHEN executeAndCheckModification(modifications, result, 0); // THEN checkCasesForCampaign(campaign1Oid, 8, result); checkCasesTotal(8, result); checkWorkItemsForCampaign(campaign1Oid, 10, result); checkWorkItemsForCampaignAndCase(campaign1Oid, 1, 2, result); checkWorkItemsForCampaignAndCase(campaign1Oid, 2, 1, result); checkWorkItemsForCampaignAndCase(campaign1Oid, NEW_CASE_ID, 2, result); checkWorkItemsTotal(10, result); }
String candidateGroups = null; if (approverRef.getType() == null || QNameUtil.match(UserType.COMPLEX_TYPE, approverRef.getType())) { assignee = MiscDataUtil.refToString(new ObjectReferenceType().oid(approverRef.getOid()).type(UserType.COMPLEX_TYPE)); } else if (QNameUtil.match(RoleType.COMPLEX_TYPE, approverRef.getType()) || QNameUtil.match(OrgType.COMPLEX_TYPE, approverRef.getType()) ||
try { ObjectReferenceType ort = new ObjectReferenceType() .oid("123") .type(OrgType.COMPLEX_TYPE) .relation(SchemaConstants.ORG_MANAGER);
@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()); }
try { ObjectReferenceType ort = new ObjectReferenceType() .oid("123") .type(OrgType.COMPLEX_TYPE) .relation(QNameUtil.nullNamespace(SchemaConstants.ORG_MANAGER));
.beginWorkItem() .id(1L) .assigneeRef(new ObjectReferenceType().oid(OLD_OID).type(UserType.COMPLEX_TYPE)) .<CaseType>end() .asPrismObject(); .replace(new ObjectReferenceType().oid(NEW_OID).type(UserType.COMPLEX_TYPE)) .asItemDeltas(); repositoryService.modifyObject(CaseType.class, caseObject.getOid(), itemDeltas, getModifyOptions(), result);
QName auditorRelation = new QName("http://x/", "auditor"); ObjectReferenceType ort = new ObjectReferenceType() .oid("123") .type(OrgType.COMPLEX_TYPE) .relation(auditorRelation);
@Test public void test020ModifyAssignment() throws Exception { //given ObjectDelta<RoleType> delta = deltaFor(RoleType.class) .item(RoleType.F_ASSIGNMENT, 4L, AssignmentType.F_TARGET_REF) .replace(new ObjectReferenceType().oid(NEW_ASSIGNMENT_4_TARGET_OID).type(RoleType.COMPLEX_TYPE)) .asObjectDeltaCast(ROLE_OID); OperationResult result = new OperationResult("modify assignment"); // WHEN repositoryService.modifyObject(RoleType.class, delta.getOid(), delta.getModifications(), result); // THEN assertSuccess(result); PrismObject<RoleType> repoRole = getObject(RoleType.class, ROLE_OID); PrismContainer<AssignmentType> inducement = repoRole.findContainer(RoleType.F_INDUCEMENT); assertNotNull(inducement); assertEquals(3, inducement.getValues().size()); PrismContainer<AssignmentType> assignment = repoRole.findContainer(AbstractRoleType.F_ASSIGNMENT); assertNotNull(assignment); assertEquals(2, assignment.getValues().size()); PrismContainerValue<AssignmentType> value4 = assignment.getValue(4L); PrismReference targetRef = value4.findReference(AssignmentType.F_TARGET_REF); assertNotNull(targetRef); assertEquals(1, targetRef.getValues().size()); PrismReferenceValue refValue = targetRef.getValue(); assertEquals(NEW_ASSIGNMENT_4_TARGET_OID, refValue.getOid()); assertEquals(RoleType.COMPLEX_TYPE, refValue.getTargetType()); }
/** * Add case work items */ @Test public void test300AddCaseWorkItem() throws Exception { final String TEST_NAME = "test300AddCaseWorkItem"; TestUtil.displayTestTitle(TEST_NAME); // GIVEN OperationResult result = new OperationResult(TEST_NAME); PrismObject<CaseType> caseObject = prismContext.createObjectable(CaseType.class) .name("testcase1") .oid("de8857ab-0220-4f8c-b627-8d6bd6c679a9") .state("open") .asPrismObject(); repositoryService.addObject(caseObject, null, result); CaseWorkItemType workItem = new CaseWorkItemType(prismContext) .assigneeRef(new ObjectReferenceType().oid("f3285c65-a4fa-4bf3-bd78-3008bcf99d3c").type(UserType.COMPLEX_TYPE)); // WHEN List<ItemDelta<?, ?>> itemDeltas = prismContext.deltaFor(CaseType.class) .item(CaseType.F_WORK_ITEM).add(workItem) .asItemDeltas(); repositoryService.modifyObject(CaseType.class, caseObject.getOid(), itemDeltas, getModifyOptions(), result); // THEN ObjectQuery query = prismContext.queryFor(CaseType.class) .item(CaseType.F_NAME).eqPoly("testcase1") .build(); List<PrismObject<CaseType>> cases = repositoryService.searchObjects(CaseType.class, query, null, result); assertEquals("Wrong # of cases found", 1, cases.size()); display("case fetched from repository", cases.get(0)); }
@Test public void test021ModifyInducement() throws Exception { //given ObjectDelta<RoleType> delta = deltaFor(RoleType.class) .item(RoleType.F_INDUCEMENT, 5L, AssignmentType.F_TARGET_REF) .replace(new ObjectReferenceType().oid(NEW_INDUCEMENT_5_TARGET_OID).type(RoleType.COMPLEX_TYPE)) .asObjectDeltaCast(ROLE_OID); OperationResult result = new OperationResult("modify inducement"); // WHEN repositoryService.modifyObject(RoleType.class, delta.getOid(), delta.getModifications(), result); // THEN assertSuccess(result); PrismObject<RoleType> repoRole = getObject(RoleType.class, ROLE_OID); PrismContainer<AssignmentType> inducement = repoRole.findContainer(RoleType.F_INDUCEMENT); assertNotNull(inducement); assertEquals(3, inducement.getValues().size()); PrismContainer<AssignmentType> assignment = repoRole.findContainer(AbstractRoleType.F_ASSIGNMENT); assertNotNull(assignment); assertEquals(2, assignment.getValues().size()); PrismContainerValue<AssignmentType> value5 = inducement.getValue(5L); PrismReference targetRef = value5.findReference(AssignmentType.F_TARGET_REF); assertNotNull(targetRef); assertEquals(1, targetRef.getValues().size()); PrismReferenceValue refValue = targetRef.getValue(); assertEquals(NEW_INDUCEMENT_5_TARGET_OID, refValue.getOid()); assertEquals(RoleType.COMPLEX_TYPE, refValue.getTargetType()); PrismProperty accConstruction = value5.findProperty(AssignmentType.F_CONSTRUCTION); AssertJUnit.assertNull(accConstruction); }
ObjectReferenceType approver1 = new ObjectReferenceType().oid("approver1-oid"); ObjectReferenceType approver1AsUser = new ObjectReferenceType().oid("approver1-oid").type(UserType.COMPLEX_TYPE); ObjectReferenceType approver2AsUser = new ObjectReferenceType().oid("approver2-oid").type(UserType.COMPLEX_TYPE);
@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 }