public List<ConditionalSearchFilterType> getCorrelation() { return objectSynchronization.getCorrelation(); }
public ObjectSynchronizationType correlation(ConditionalSearchFilterType value) { getCorrelation().add(value); return this; }
private void checkObjectSynchronization(ResourceValidationContext ctx, ItemPath path, ObjectSynchronizationType objectSync) { Map<SynchronizationSituationType,Integer> counts = new HashMap<>(); for (SynchronizationReactionType reaction : objectSync.getReaction()) { if (reaction.getSituation() == null) { ctx.validationResult.add(Issue.Severity.WARNING, CAT_SYNCHRONIZATION, C_NO_SITUATION, getString(CLASS_DOT + C_NO_SITUATION, getName(objectSync)), ctx.resourceRef, path); } else { Integer c = counts.get(reaction.getSituation()); counts.put(reaction.getSituation(), c != null ? c+1 : 1); } } checkMissingReactions(ctx, path, objectSync, counts, Collections.singletonList(UNLINKED)); checkDuplicateReactions(ctx, path, objectSync, counts); if (objectSync.getCorrelation().isEmpty()) { ctx.validationResult.add(Issue.Severity.WARNING, CAT_SYNCHRONIZATION, C_NO_CORRELATION_RULE, getString(CLASS_DOT + C_NO_CORRELATION_RULE, getName(objectSync)), ctx.resourceRef, path); } }
private SynchronizationContext<UserType> createSynchronizationContext(File account, String correlationFilter, File resource, Task task, OperationResult result) throws SchemaException, IOException { ShadowType shadow = parseObjectType(account, ShadowType.class); ConditionalSearchFilterType query = PrismTestUtil.parseAtomicValue(new File(correlationFilter), ConditionalSearchFilterType.COMPLEX_TYPE); ResourceType resourceType = parseObjectType(resource, ResourceType.class); resourceType.getSynchronization().getObjectSynchronization().get(0).getCorrelation().clear(); resourceType.getSynchronization().getObjectSynchronization().get(0).getCorrelation().add(query); ObjectSynchronizationType objectSynchronizationType = resourceType.getSynchronization().getObjectSynchronization().get(0); PrismObject<SystemConfigurationType> systemConfiguration = systemObjectCache.getSystemConfiguration(result); assertNotNull("Unexpected null system configuration", systemConfiguration); SynchronizationContext<UserType> syncCtx = new SynchronizationContext<>(shadow.asPrismObject(), shadow.asPrismObject(), resourceType.asPrismObject(), null, task, result); syncCtx.setSystemConfiguration(systemConfiguration); syncCtx.setObjectSynchronization(objectSynchronizationType); syncCtx.setFocusClass(UserType.class); return syncCtx; }
copyCorrelation(this.getCorrelation(), clone.getCorrelation());
@SuppressWarnings("unchecked") @Test public void testEvaluateExpression() throws Exception { PrismObject<ShadowType> account = PrismTestUtil.parseObject(new File(TEST_FOLDER, "account.xml")); ShadowType accountType = account.asObjectable(); PrismObject<ResourceType> resource = PrismTestUtil.parseObject(new File(TEST_FOLDER_COMMON, "resource-dummy.xml")); ResourceType resourceType = resource.asObjectable(); accountType.setResource(resourceType); ObjectSynchronizationType synchronization = resourceType.getSynchronization().getObjectSynchronization().get(0); for (ConditionalSearchFilterType filter : synchronization.getCorrelation()){ MapXNode clauseXNode = filter.getFilterClauseXNode(); // key = q:equal, value = map (path + expression) RootXNode expressionNode = ((MapXNode) clauseXNode.getSingleSubEntry("filter value").getValue()) .getEntryAsRoot(new QName(SchemaConstants.NS_C, "expression")); ExpressionType expression = PrismTestUtil.getPrismContext().parserFor(expressionNode).parseRealValue(ExpressionType.class); LOGGER.debug("Expression: {}",SchemaDebugUtil.prettyPrint(expression)); OperationResult result = new OperationResult("testCorrelationRule"); String name = expressionHandler.evaluateExpression(accountType, expression, "test expression", null, result); LOGGER.info(result.debugDump()); assertEquals("Wrong expression result", "hbarbossa", name); } }
copyCorrelation(o.getCorrelation(), this.getCorrelation());
lhsCorrelation = (((this.correlation!= null)&&(!this.correlation.isEmpty()))?this.getCorrelation():null); List<ConditionalSearchFilterType> rhsCorrelation; rhsCorrelation = (((that.correlation!= null)&&(!that.correlation.isEmpty()))?that.getCorrelation():null); if (!strategy.equals(LocatorUtils.property(thisLocator, "correlation", lhsCorrelation), LocatorUtils.property(thatLocator, "correlation", rhsCorrelation), lhsCorrelation, rhsCorrelation)) { return false;
theCorrelation = (((this.correlation!= null)&&(!this.correlation.isEmpty()))?this.getCorrelation():null); currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "correlation", theCorrelation), currentHashCode, theCorrelation);
SynchronizationType synchronizationType = synchronizationProp.getRealValue(); ObjectSynchronizationType objectSynchronizationType = synchronizationType.getObjectSynchronization().get(0); List<ConditionalSearchFilterType> correlations = objectSynchronizationType.getCorrelation(); assertEquals("Wrong number of correlation expressions", 1, correlations.size()); ConditionalSearchFilterType correlationFilterType = correlations.get(0);
List<PrismObject<F>> correlatedFocuses = correlationConfirmationEvaluator.findFocusesByCorrelationRule(type, shadow, applicablePolicy.getCorrelation(), resource, systemConfiguration, syncCtx.getTask(), syncCtx.getResult()); return MiscSchemaUtil.toObjectableList(correlatedFocuses);