protected QueryType getObjectQueryTypeFromTaskObjectRef(Task task) { ObjectReferenceType objectRef = task.getObjectRef(); if (objectRef == null) { return null; } SearchFilterType filterType = objectRef.getFilter(); if (filterType == null || FilterUtil.isFilterEmpty(filterType)) { return null; } QueryType queryType = new QueryType(); queryType.setFilter(filterType); return queryType; }
public static void fromJaxb(ObjectReferenceType jaxb, REmbeddedReference repo, RelationRegistry relationRegistry) { Validate.notNull(repo, "Repo object must not be null."); Validate.notNull(jaxb, "JAXB object must not be null."); if (jaxb.getFilter() == null) { Validate.notEmpty(jaxb.getOid(), "Target oid must not be null."); } repo.setType(ClassMapper.getHQLTypeForQName(jaxb.getType())); repo.setRelation(qnameToString(relationRegistry.normalizeRelation(jaxb.getRelation()))); repo.setTargetOid(jaxb.getOid()); }
public ReferenceResolver createReferenceResolver(ModelContext modelContext, Task taskFromModel, OperationResult result) { return (ref, sourceDescription) -> { if (ref == null) { return Collections.emptyList(); } else if (ref.getOid() != null) { return Collections.singletonList(ref.clone()); } else { Class<? extends ObjectType> clazz; if (ref.getType() != null) { clazz = prismContext.getSchemaRegistry().determineCompileTimeClass(ref.getType()); if (clazz == null) { throw new SchemaException("Cannot determine type from " + ref.getType() + " in approver reference in " + sourceDescription); } } else { throw new SchemaException("Missing type in target reference in " + sourceDescription); } return resolveReferenceFromFilter(clazz, ref.getFilter(), sourceDescription, (LensContext) modelContext, taskFromModel, result); } }; }
if (targetRef.getFilter() == null){ throw new SchemaException("The OID and filter are both null in assignment targetRef in "+segment.source); return resolveTargetsFromFilter(targetClass, targetRef.getFilter(), segment, ctx); } else { LOGGER.trace("Resolving target {}:{} from repository", targetClass.getSimpleName(), oid);
@Test public void addGetRoleWithResourceRefFilter() throws Exception{ PrismObject<RoleType> role = prismContext.parseObject(new File("src/test/resources/basic/role-resource-filter.xml")); System.out.println("role: " + role.debugDump()); System.out.println("role: " + role.asObjectable().getInducement().get(0).getConstruction().getResourceRef().getFilter()); OperationResult result = new OperationResult("sync desc test"); String oid = repositoryService.addObject(role, null, result); role = repositoryService.getObject(RoleType.class, oid, null, result); RoleType roleType = role.asObjectable(); System.out.println("role: " + role.debugDump()); System.out.println("role: " + role.asObjectable().getInducement().get(0).getConstruction().getResourceRef().getFilter()); // desc = roleType.getSynchronizationSituationDescription().get(0); // AssertJUnit.assertEquals("Times don't match", TIME, XMLGregorianCalendarType.asDate(desc.getTimestamp())); }
LOGGER.info("Expression variables for filter evaluation: {}", variables); ObjectFilter origFilter = getPrismContext().getQueryConverter().parseFilter(getConstructionType().getResourceRef().getFilter(), ResourceType.class); LOGGER.info("Orig filter {}", origFilter);
public static PrismReferenceValue objectReferenceTypeToReferenceValue(ObjectReferenceType refType, PrismContext prismContext) { if (refType == null) { return null; } PrismReferenceValue rval = prismContext.itemFactory().createReferenceValue(); rval.setOid(refType.getOid()); rval.setDescription(refType.getDescription()); rval.setFilter(refType.getFilter()); rval.setRelation(refType.getRelation()); rval.setTargetType(refType.getType()); return rval; }
@Override protected void assertFinishedPropagationTask(Task finishedTask, OperationResultStatusType expectedStatus) { super.assertFinishedPropagationTask(finishedTask, expectedStatus); SearchFilterType filterType = finishedTask.getTaskType().getObjectRef().getFilter(); display("Propagation task filter", filterType); assertEquals("Unexpected propagation task progress", 1, finishedTask.getProgress()); }
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); } }
@Override protected void assertNewPropagationTask() throws Exception { OperationResult result = new OperationResult("assertNewPropagationTask"); PrismObject<TaskType> propTask = repositoryService.getObject(TaskType.class, getPropagationTaskOid(), null, result); display("Propagation task (new)", propTask); SearchFilterType filterType = propTask.asObjectable().getObjectRef().getFilter(); display("Propagation task filter", filterType); assertFalse("Empty filter in propagation task", FilterUtil.isFilterEmpty(filterType)); }
/** * Checks if the resource is internally consistent, if it has everything it should have. * * @throws SchemaException */ private void checkOpenDjResource(ResourceType resource, String source) throws SchemaException { assertNotNull("Resource from " + source + " is null", resource); ObjectReferenceType connectorRefType = resource.getConnectorRef(); assertNotNull("Resource from " + source + " has null connectorRef", connectorRefType); assertFalse("Resource from " + source + " has no OID in connectorRef", StringUtils.isBlank(connectorRefType.getOid())); assertNotNull("Resource from " + source + " has null description in connectorRef", connectorRefType.getDescription()); assertNotNull("Resource from " + source + " has null filter in connectorRef", connectorRefType.getFilter()); assertNotNull("Resource from " + source + " has null filter element in connectorRef", connectorRefType.getFilter().getFilterClauseXNode()); assertNotNull("Resource from " + source + " has null configuration", resource.getConnectorConfiguration()); assertNotNull("Resource from " + source + " has null schema", resource.getSchema()); checkOpenDjSchema(resource, source); assertNotNull("Resource from " + source + " has null schemahandling", resource.getSchemaHandling()); checkOpenDjSchemaHandling(resource, source); if (!source.equals("repository")) { // This is generated on the fly in provisioning assertNotNull("Resource from " + source + " has null nativeCapabilities", resource.getCapabilities().getNative()); assertFalse("Resource from " + source + " has empty nativeCapabilities", resource.getCapabilities().getNative().getAny().isEmpty()); } assertNotNull("Resource from " + source + " has null configured capabilities", resource.getCapabilities().getConfigured()); assertFalse("Resource from " + source + " has empty capabilities", resource.getCapabilities().getConfigured().getAny().isEmpty()); assertNotNull("Resource from " + source + " has null synchronization", resource.getSynchronization()); checkOpenDjConfiguration(resource.asPrismObject(), source); }
assertNotNull("No connectorRef (JAXB)", connectorRef); assertEquals("Wrong type in connectorRef (JAXB)", ConnectorType.COMPLEX_TYPE, connectorRef.getType()); SearchFilterType filter = connectorRef.getFilter(); assertNotNull("No filter in connectorRef (JAXB)", filter); MapXNode filterElement = filter.getFilterClauseXNode();
theFilter = this.getFilter(); currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "filter", theFilter), currentHashCode, theFilter);
private void assertUserJaxb(UserType userType, boolean isObject) throws SchemaException { assertEquals("Wrong name", PrismTestUtil.createPolyStringType("jack"), userType.getName()); assertEquals("Wrong fullName (orig)", "Jack Sparrow", userType.getFullName().getOrig()); assertEquals("Wrong fullName (norm)", "jack sparrow", userType.getFullName().getNorm()); assertEquals("Wrong givenName (orig)", "Jack", userType.getGivenName().getOrig()); assertEquals("Wrong givenName (norm)", "jack", userType.getGivenName().getNorm()); assertEquals("Wrong familyName (orig)", "Sparrow", userType.getFamilyName().getOrig()); assertEquals("Wrong familyName (norm)", "sparrow", userType.getFamilyName().getNorm()); ActivationType activation = userType.getActivation(); assertNotNull("No activation", activation); assertEquals("User not enabled", ActivationStatusType.ENABLED, activation.getAdministrativeStatus()); List<ObjectReferenceType> accountRefs = userType.getLinkRef(); assertNotNull("No accountRef list", accountRefs); assertEquals("Wrong number of list entries", 3, accountRefs.size()); ObjectReferenceType ref1 = ObjectTypeUtil.findRef(USER_ACCOUNT_REF_1_OID, accountRefs); assertEquals("Wrong ref1 oid (jaxb)", USER_ACCOUNT_REF_1_OID, ref1.getOid()); assertEquals("Wrong ref1 type (jaxb)", ShadowType.COMPLEX_TYPE, ref1.getType()); ObjectReferenceType ref2 = ObjectTypeUtil.findRef(USER_ACCOUNT_REF_2_OID, accountRefs); assertEquals("Wrong ref2 oid (jaxb)", USER_ACCOUNT_REF_2_OID, ref2.getOid()); assertEquals("Wrong ref2 type (jaxb)", ShadowType.COMPLEX_TYPE, ref2.getType()); ObjectReferenceType ref3 = ObjectTypeUtil.findRef(USER_ACCOUNT_REF_3_OID, accountRefs); assertEquals("Wrong ref3 oid (jaxb)", USER_ACCOUNT_REF_3_OID, ref3.getOid()); assertEquals("Wrong ref3 type (jaxb)", ShadowType.COMPLEX_TYPE, ref3.getType()); SearchFilterType ref3Filter = ref3.getFilter(); assertNotNull("No ref3 filter (jaxb,class)", ref3Filter); assertFilterElement("ref filter (jaxb)", ref3Filter.getFilterClauseAsElement(getPrismContext())); }