public static String prettyPrint(ObjectReferenceType ref) { if (ref == null) { return "null"; } StringBuilder sb = new StringBuilder("ref("); sb.append(ref.getOid()); sb.append(","); sb.append(prettyPrint(ref.getType())); sb.append(")"); return sb.toString(); }
public static void shortDump(StringBuilder sb, ObjectReferenceType ref) { if (ref == null) { sb.append("null"); } sb.append(ref.getOid()); if (ref.getTargetName() != null) { sb.append(",name="); sb.append(ref.getTargetName().getOrig()); } if (ref.getType() != null) { sb.append(",type="); sb.append(prettyPrint(ref.getType())); } }
protected void checkApprovers(PrismObject<? extends ObjectType> object, List<String> expectedApprovers, List<ObjectReferenceType> realApprovers, OperationResult result) throws SchemaException, ObjectNotFoundException { HashSet<String> realApproversSet = new HashSet<>(); for (ObjectReferenceType approver : realApprovers) { realApproversSet.add(approver.getOid()); assertEquals("Unexpected target type in approverRef", UserType.COMPLEX_TYPE, approver.getType()); } assertEquals("Mismatch in approvers in metadata", new HashSet(expectedApprovers), realApproversSet); }
private static PrismObject<? extends ObjectType> getObject(ObjectReferenceType reference, ModelService modelService, Task task, OperationResult result) throws ObjectNotFoundException, SchemaException, SecurityViolationException, CommunicationException, ConfigurationException, ExpressionEvaluationException { String oid = reference.getOid(); QName typeName = reference.getType() != null ? reference.getType() : ObjectType.COMPLEX_TYPE; Class<? extends ObjectType> typeClass = ObjectTypes.getObjectTypeClass(typeName); return modelService.getObject(typeClass, oid, createNoFetchCollection(), task, result); } }
public static boolean referenceMatches(ObjectReferenceType refPattern, ObjectReferenceType ref, PrismContext prismContext) { if (refPattern.getOid() != null && !refPattern.getOid().equals(ref.getOid())) { return false; } if (refPattern.getType() != null && !QNameUtil.match(refPattern.getType(), ref.getType())) { return false; } if (!prismContext.relationMatches(refPattern.getRelation(), ref.getRelation())) { return false; } return true; }
private static <F extends FocusType> List<String> getAssignedOids(PrismObject<F> user, QName type) { F userType = user.asObjectable(); List<String> haveTagetOids = new ArrayList<>(); for (AssignmentType assignmentType: userType.getAssignment()) { ObjectReferenceType targetRef = assignmentType.getTargetRef(); if (targetRef != null) { if (type.equals(targetRef.getType())) { haveTagetOids.add(targetRef.getOid()); } } } return haveTagetOids; }
public ObjectType resolveRef(ObjectReferenceType ref, String contextDescription, OperationResult result) throws ObjectNotFoundException, SchemaException { Class<? extends ObjectType> type = ObjectType.class; if (ref.getType() != null) { ObjectTypes objectTypeType = ObjectTypes.getObjectTypeFromTypeQName(ref.getType()); type = objectTypeType.getClassDefinition(); } return repositoryService.getObject(type, ref.getOid(), null, result).asObjectable(); }
@NotNull public static <T extends ObjectType> AssignmentType createAssignmentTo(@NotNull ObjectReferenceType ref, @Nullable PrismContext prismContext) { AssignmentType assignment = new AssignmentType(prismContext); if (QNameUtil.match(ref.getType(), ResourceType.COMPLEX_TYPE)) { ConstructionType construction = new ConstructionType(); construction.setResourceRef(ref); assignment.setConstruction(construction); } else { assignment.setTargetRef(ref); } return assignment; }
protected <F extends FocusType> void assertDelegatedRef(PrismObject<F> focus, String... oids) { List<String> refOids = new ArrayList<>(); for (ObjectReferenceType ref: focus.asObjectable().getDelegatedRef()) { refOids.add(ref.getOid()); assertNotNull("Missing type in delegatedRef "+ref.getOid()+" in "+focus, ref.getType()); } PrismAsserts.assertSets("Wrong values in delegatedRef in "+focus, refOids, oids); }
protected <F extends FocusType> void assertRoleMembershipRef(PrismObject<F> focus, String... roleOids) { List<String> refOids = new ArrayList<>(); for (ObjectReferenceType ref: focus.asObjectable().getRoleMembershipRef()) { refOids.add(ref.getOid()); assertNotNull("Missing type in roleMembershipRef "+ref.getOid()+" in "+focus, ref.getType()); // Name is not stored now // assertNotNull("Missing name in roleMembershipRef "+ref.getOid()+" in "+focus, ref.getTargetName()); } PrismAsserts.assertSets("Wrong values in roleMembershipRef in "+focus, refOids, roleOids); }
protected <F extends FocusType> void assertRoleMembershipRefs(PrismObject<F> focus, Collection<String> roleOids) { List<String> refOids = new ArrayList<>(); for (ObjectReferenceType ref: focus.asObjectable().getRoleMembershipRef()) { refOids.add(ref.getOid()); assertNotNull("Missing type in roleMembershipRef "+ref.getOid()+" in "+focus, ref.getType()); // Name is not stored now // assertNotNull("Missing name in roleMembershipRef "+ref.getOid()+" in "+focus, ref.getTargetName()); } PrismAsserts.assertSets("Wrong values in roleMembershipRef in "+focus, refOids, roleOids); }
protected void assertObjectRefs(String contextDesc, boolean checkNames, Collection<ObjectReferenceType> real, String... expected) { List<String> refOids = new ArrayList<>(); for (ObjectReferenceType ref: real) { refOids.add(ref.getOid()); assertNotNull("Missing type in "+ref.getOid()+" in "+contextDesc, ref.getType()); if (checkNames) { assertNotNull("Missing name in " + ref.getOid() + " in " + contextDesc, ref.getTargetName()); } } PrismAsserts.assertSets("Wrong values in "+contextDesc, refOids, expected); }
private EvaluatedPolicyRuleTrigger createTriggerIfShouldNotExist(boolean shouldExist, JAXBElement<HasAssignmentPolicyConstraintType> constraintElement, PolicyRuleEvaluationContext<?> ctx, OperationResult result) throws ExpressionEvaluationException, ObjectNotFoundException, SchemaException, CommunicationException, ConfigurationException, SecurityViolationException { HasAssignmentPolicyConstraintType constraint = constraintElement.getValue(); if (shouldExist) { return null; } else { return new EvaluatedHasAssignmentTrigger(PolicyConstraintKindType.HAS_NO_ASSIGNMENT, constraint, createNegativeMessage(constraintElement, ctx, constraint.getTargetRef().getType(), constraint.getTargetRef().getOid(), result), createNegativeShortMessage(constraintElement, ctx, constraint.getTargetRef().getType(), constraint.getTargetRef().getOid(), result)); // targetName seems to be always null, even if specified in the policy rule } }
public LightweightObjectRefImpl(ObjectReferenceType objectReferenceType) { this.oid = objectReferenceType.getOid(); this.type = objectReferenceType.getType(); this.description = objectReferenceType.getDescription(); this.targetName = getOrig(objectReferenceType.getTargetName()); }
private void collectMembership(ObjectReferenceType targetRef, QName relation, EvaluationContext ctx) { PrismReferenceValue refVal = prismContext.itemFactory().createReferenceValue(); refVal.setOid(targetRef.getOid()); refVal.setTargetType(targetRef.getType()); refVal.setRelation(relation); refVal.setTargetName(targetRef.getTargetName()); Class<? extends ObjectType> targetClass = ObjectTypes.getObjectTypeFromTypeQName(targetRef.getType()).getClassDefinition(); collectMembershipRefVal(refVal, targetClass, relation, targetRef, ctx); }
protected <F extends FocusType, P extends FocusType> PrismObject<P> assertLinkedPersona(PrismObject<F> focus, Class<P> personaClass, String subtype) throws ObjectNotFoundException, SchemaException { OperationResult result = new OperationResult("assertLinkedPersona"); for (ObjectReferenceType personaRef: focus.asObjectable().getPersonaRef()) { PrismObject<P> persona = repositoryService.getObject((Class<P>)ObjectTypes.getObjectTypeFromTypeQName(personaRef.getType()).getClassDefinition(), personaRef.getOid(), null, result); if (isTypeAndSubtype(persona, personaClass, subtype)) { return persona; } } fail("No persona "+personaClass.getSimpleName()+"/"+subtype+" in "+focus); return null; // not reached }
protected boolean isAssignmentRelevant(AssignmentType assignmentType) { if (assignmentType.getTarget() != null) { return assignmentType.getTarget() instanceof AbstractRoleType; } else if (assignmentType.getTargetRef() != null) { QName targetType = assignmentType.getTargetRef().getType(); return QNameUtil.match(targetType, RoleType.COMPLEX_TYPE) || QNameUtil.match(targetType, OrgType.COMPLEX_TYPE) || QNameUtil.match(targetType, AbstractRoleType.COMPLEX_TYPE); // this case should not occur } else { return false; // should not occur } }
@Override boolean decideOnApproval(String executionId) throws Exception { LightweightObjectRef targetRef = (LightweightObjectRef) activitiEngine.getRuntimeService().getVariable(executionId, CommonProcessVariableNames.VARIABLE_TARGET_REF); if (targetRef != null && RoleType.COMPLEX_TYPE.equals(targetRef.toObjectReferenceType().getType())) { return decideOnRoleApproval(executionId); } else { login(getUser(USER_ADMINISTRATOR_OID)); return true; } }
public Builder<V, D> addVariableDefinition(ExpressionVariableDefinitionType varDef) throws SchemaException { if (varDef.getObjectRef() != null) { ObjectReferenceType ref = varDef.getObjectRef(); ref.setType(getPrismContext().getSchemaRegistry().qualifyTypeName(ref.getType())); return addVariableDefinition(varDef.getName(), ref); } else if (varDef.getValue() != null) { return addVariableDefinition(varDef.getName(),varDef.getValue()); } else { LOGGER.warn("Empty definition of variable {} in {}, ignoring it", varDef.getName(), getContextDescription()); return this; } }
private void assertJaxb(ShadowType shadow, boolean isObject) throws SchemaException { if (isObject) { assertEquals("88519fca-3f4a-44ca-91c8-dc9be5bf3d03", shadow.getOid()); } assertEquals("Wrong name", PrismTestUtil.createPolyStringType("hbarbossa"), shadow.getName()); ActivationType activation = shadow.getActivation(); assertNotNull("No activation", activation); assertEquals("User not enabled", ActivationStatusType.ENABLED, activation.getAdministrativeStatus()); ObjectReferenceType resourceRef = shadow.getResourceRef(); assertNotNull("No resourceRef", resourceRef); assertEquals("Wrong resourceRef oid (jaxb)", "10000000-0000-0000-0000-000000000003", resourceRef.getOid()); assertEquals("Wrong resourceRef type (jaxb)", ResourceType.COMPLEX_TYPE, resourceRef.getType()); }