static boolean oidMatches(ObjectReferenceType targetRef, EvaluatedAssignmentTargetImpl assignmentTarget, PrismContext prismContext, MatchingRuleRegistry matchingRuleRegistry, String context) throws SchemaException { if (targetRef == null) { return true; // this means we rely on comparing relations } if (assignmentTarget.getOid() == null) { return false; // shouldn't occur } if (targetRef.getOid() != null) { return assignmentTarget.getOid().equals(targetRef.getOid()); } if (targetRef.getResolutionTime() == EvaluationTimeType.RUN) { SearchFilterType filterType = targetRef.getFilter(); if (filterType == null) { throw new SchemaException("No filter in " + context); } QName typeQName = targetRef.getType(); @SuppressWarnings("rawtypes") PrismObjectDefinition objDef = prismContext.getSchemaRegistry().findObjectDefinitionByType(typeQName); ObjectFilter filter = prismContext.getQueryConverter().parseFilter(filterType, objDef); PrismObject<? extends AssignmentHolderType> target = assignmentTarget.getTarget(); return filter.match(target.getValue(), matchingRuleRegistry); } else { throw new SchemaException("No OID in " + context); } }
@Test public void test001SanityRoleProjectOmnimanager() throws Exception { final String TEST_NAME = "test001SanityRoleProjectOmnimanager"; displayTestTitle(TEST_NAME); Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); // WHEN PrismObject<RoleType> roleOmnimanager = modelService.getObject(RoleType.class, ROLE_PROJECT_OMNINAMAGER_OID, null, task, result); // THEN display("Role omnimanager", roleOmnimanager); IntegrationTestTools.displayXml("Role omnimanager", roleOmnimanager); assertNotNull("No omnimanager", roleOmnimanager); ObjectReferenceType targetRef = roleOmnimanager.asObjectable().getInducement().get(0).getTargetRef(); assertEquals("Wrong targetRef resolutionTime", EvaluationTimeType.RUN, targetRef.getResolutionTime()); assertNull("targetRef is resolved", targetRef.getOid()); }
lhsResolutionTime = this.getResolutionTime(); EvaluationTimeType rhsResolutionTime; rhsResolutionTime = that.getResolutionTime(); if (!strategy.equals(LocatorUtils.property(thisLocator, "resolutionTime", lhsResolutionTime), LocatorUtils.property(thatLocator, "resolutionTime", rhsResolutionTime), lhsResolutionTime, rhsResolutionTime)) { return false;
theResolutionTime = this.getResolutionTime(); currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "resolutionTime", theResolutionTime), currentHashCode, theResolutionTime);
MapXNode filterElement = filter.getFilterClauseXNode(); assertNotNull("No filter element in connectorRef (JAXB)", filterElement); EvaluationTimeType resolutionTime = connectorRef.getResolutionTime(); if (isSimple) { assertEquals("Wrong resolution time in connectorRef (JAXB)", EvaluationTimeType.RUN, resolutionTime);