public PrismObject<O> getOldObject() { if (odo == null) { return null; } return odo.getOldObject(); }
/** * Adds map of extra variables to the expression. * If there are variables with deltas (ObjectDeltaObject) it takes the "old" version * of the object. */ public void addVariableDefinitionsOld(Map<QName, Object> extraVariables) { for (Entry<QName, Object> entry : extraVariables.entrySet()) { Object value = entry.getValue(); if (value instanceof ObjectDeltaObject<?>) { ObjectDeltaObject<?> odo = (ObjectDeltaObject<?>)value; value = odo.getOldObject(); } else if (value instanceof ItemDeltaItem<?,?>) { ItemDeltaItem<?,?> idi = (ItemDeltaItem<?,?>)value; value = idi.getItemOld(); } variables.put(entry.getKey(), value); } }
public void addVariableDefinitions(Map<QName, Object> extraVariables, @NotNull Collection<QName> exceptFor) { for (Entry<QName, Object> entry : extraVariables.entrySet()) { if (QNameUtil.matchAny(entry.getKey(), exceptFor)) { continue; } Object value = entry.getValue(); if (!areDeltasAllowed() && value instanceof ObjectDeltaObject<?>) { ObjectDeltaObject<?> odo = (ObjectDeltaObject<?>)value; if (odo.getObjectDelta() != null) { throw new IllegalArgumentException("Cannot use variables with deltas in addVariableDefinitions. Use addVariableDefinitionsOld or addVariableDefinitionsNew."); } value = odo.getOldObject(); } variables.put(entry.getKey(), value); } }
@Override public void shortDump(StringBuilder sb) { sb.append("odo="); if (odo == null) { sb.append("null"); } else { sb.append("("); sb.append(odo.getOldObject()).append(","); sb.append(odo.getObjectDelta()).append(","); sb.append(odo.getNewObject()); sb.append(")"); } sb.append(","); shortDumpElement(sb, "target", target); shortDumpElement(sb, "relation", relation); if (orderConstraints != null) { sb.append("orderConstraints="); SchemaDebugUtil.shortDumpOrderConstraintsList(sb, orderConstraints); sb.append(", "); } if (sb.length() > 1) { sb.setLength(sb.length() - 2); } }
public <V extends PrismValue, D extends ItemDefinition , AH extends AssignmentHolderType> MappingImpl<V, D> createFocusMapping(final MappingFactory mappingFactory, final LensContext<AH> context, final MappingType mappingType, ObjectType originObject, ObjectDeltaObject<AH> focusOdo, AssignmentPathVariables assignmentPathVariables, PrismObject<SystemConfigurationType> configuration, XMLGregorianCalendar now, String contextDesc, Task task, OperationResult result) throws SchemaException, ExpressionEvaluationException, ObjectNotFoundException, CommunicationException, ConfigurationException, SecurityViolationException { Integer iteration = null; String iterationToken = null; if (focusOdo.getNewObject() != null) { AH focusNewType = focusOdo.getNewObject().asObjectable(); iteration = focusNewType.getIteration(); iterationToken = focusNewType.getIterationToken(); } else if (focusOdo.getOldObject() != null) { AH focusOldType = focusOdo.getOldObject().asObjectable(); iteration = focusOldType.getIteration(); iterationToken = focusOldType.getIterationToken(); } return createFocusMapping(mappingFactory, context, mappingType, originObject, focusOdo, null, focusOdo.getAnyObject(), assignmentPathVariables, iteration, iterationToken, configuration, now, contextDesc, task, result); }
public void testScriptSystemVariablesConditionEmptyFalse(final String TEST_NAME, String filename) throws Exception { System.out.println("===[ "+TEST_NAME+"]==="); // GIVEN ObjectDelta<UserType> delta = evaluator.getPrismContext().deltaFactory().object() .createModificationReplaceProperty(UserType.class, evaluator.USER_OLD_OID, evaluator.toPath("name"), PrismTestUtil.createPolyString("Jack")); MappingImpl<PrismPropertyValue<PolyString>,PrismPropertyDefinition<PolyString>> mapping = evaluator.createMapping( filename, TEST_NAME, "title", delta); PrismObject<UserType> user = (PrismObject<UserType>) mapping.getSourceContext().getOldObject(); user.asObjectable().getEmployeeType().add("SAILOR"); user.asObjectable().setEmployeeNumber("666"); mapping.getSourceContext().recompute(); OperationResult opResult = new OperationResult(TEST_NAME); // WHEN mapping.evaluate(null, opResult); // THEN PrismValueDeltaSetTriple<PrismPropertyValue<PolyString>> outputTriple = mapping.getOutputTriple(); assertNull("Unexpected value in outputTriple: "+outputTriple, outputTriple); }
@Test public void testNpeTrueToFalse() throws Exception { final String TEST_NAME = "testNpeTrueToFalse"; System.out.println("===[ "+TEST_NAME+"]==="); // GIVEN ObjectDelta<UserType> delta = evaluator.getPrismContext().deltaFactory().object() .createModificationReplaceProperty(UserType.class, evaluator.USER_OLD_OID, UserType.F_ADDITIONAL_NAME); MappingImpl<PrismPropertyValue<PolyString>,PrismPropertyDefinition<PolyString>> mapping = evaluator.createMapping( "mapping-npe.xml", TEST_NAME, "title", delta); PrismObject<UserType> user = (PrismObject<UserType>) mapping.getSourceContext().getOldObject(); user.asObjectable().setAdditionalName(PrismTestUtil.createPolyStringType("Sultan of the Caribbean")); mapping.getSourceContext().recompute(); OperationResult opResult = new OperationResult(TEST_NAME); // WHEN mapping.evaluate(null, opResult); // THEN PrismValueDeltaSetTriple<PrismPropertyValue<PolyString>> outputTriple = mapping.getOutputTriple(); PrismAsserts.assertTripleNoZero(outputTriple); PrismAsserts.assertTripleNoPlus(outputTriple); PrismAsserts.assertTripleMinus(outputTriple, PrismTestUtil.createPolyString("23")); }
public void testScriptSystemVariablesConditionTrueToTrue(String filename) throws Exception { // GIVEN final String TEST_NAME = "testScriptSystemVariablesConditionTrueToTrue"; System.out.println("===[ "+TEST_NAME+"]==="); ObjectDelta<UserType> delta = evaluator.getPrismContext().deltaFactory().object() .createModificationReplaceProperty(UserType.class, evaluator.USER_OLD_OID, evaluator.toPath("name"), PrismTestUtil.createPolyString("Jack")); MappingImpl<PrismPropertyValue<PolyString>,PrismPropertyDefinition<PolyString>> mapping = evaluator.createMapping( filename, TEST_NAME, "title", delta); PrismObject<UserType> user = (PrismObject<UserType>) mapping.getSourceContext().getOldObject(); user.asObjectable().getEmployeeType().add("CAPTAIN"); mapping.getSourceContext().recompute(); OperationResult opResult = new OperationResult(TEST_NAME); // WHEN mapping.evaluate(null, opResult); // THEN PrismValueDeltaSetTriple<PrismPropertyValue<PolyString>> outputTriple = mapping.getOutputTriple(); PrismAsserts.assertTripleNoZero(outputTriple); PrismAsserts.assertTriplePlus(outputTriple, PrismTestUtil.createPolyString("Captain Jack")); PrismAsserts.assertTripleMinus(outputTriple, PrismTestUtil.createPolyString("Captain jack")); }
protected AssignmentEvaluator<UserType> createAssignmentEvaluator(ObjectDeltaObject<UserType> focusOdo) throws ObjectNotFoundException, SchemaException { LensContext<UserType> lensContext = createLensContext(UserType.class); LensFocusContext<UserType> focusContext = lensContext.getOrCreateFocusContext(); focusContext.setObjectOld(focusOdo.getOldObject()); focusContext.setPrimaryDelta(focusOdo.getObjectDelta()); focusContext.setObjectCurrent(focusOdo.getOldObject()); focusContext.setObjectNew(focusOdo.getNewObject()); return new AssignmentEvaluator.Builder<UserType>() .repository(repositoryService) .focusOdo(focusOdo) .objectResolver(objectResolver) .systemObjectCache(systemObjectCache) .relationRegistry(relationRegistry) .prismContext(prismContext) .activationComputer(activationComputer) .now(clock.currentTimeXMLGregorianCalendar()) .mappingFactory(mappingFactory) .mappingEvaluator(mappingEvaluator) .lensContext(lensContext) .build(); }
public void testScriptSystemVariablesConditionTrueToFalse(String filename) throws Exception { // GIVEN final String TEST_NAME = "testScriptSystemVariablesConditionTrueToFalse"; System.out.println("===[ "+TEST_NAME+"]==="); ObjectDelta<UserType> delta = evaluator.getPrismContext().deltaFactory().object() .createModificationReplaceProperty(UserType.class, evaluator.USER_OLD_OID, evaluator.toPath("name"), "Jack"); delta.addModificationDeleteProperty(evaluator.toPath("employeeType"), "CAPTAIN"); MappingImpl<PrismPropertyValue<PolyString>,PrismPropertyDefinition<PolyString>> mapping = evaluator.createMapping( filename, TEST_NAME, "title", delta); PrismObject<UserType> user = (PrismObject<UserType>) mapping.getSourceContext().getOldObject(); user.asObjectable().getEmployeeType().add("CAPTAIN"); mapping.getSourceContext().recompute(); OperationResult opResult = new OperationResult(TEST_NAME); // WHEN mapping.evaluate(null, opResult); // THEN PrismValueDeltaSetTriple<PrismPropertyValue<PolyString>> outputTriple = mapping.getOutputTriple(); PrismAsserts.assertTripleNoZero(outputTriple); PrismAsserts.assertTripleNoPlus(outputTriple); PrismAsserts.assertTripleMinus(outputTriple, PrismTestUtil.createPolyString("Captain jack")); }
public void testScriptSystemVariablesConditionEmptyTrue(final String TEST_NAME, String filename) throws Exception { System.out.println("===[ "+TEST_NAME+"]==="); // GIVEN ObjectDelta<UserType> delta = evaluator.getPrismContext().deltaFactory().object() .createModificationReplaceProperty(UserType.class, evaluator.USER_OLD_OID, evaluator.toPath("name"), PrismTestUtil.createPolyString("Jack")); MappingImpl<PrismPropertyValue<PolyString>,PrismPropertyDefinition<PolyString>> mapping = evaluator.createMapping( filename, TEST_NAME, "title", delta); PrismObject<UserType> user = (PrismObject<UserType>) mapping.getSourceContext().getOldObject(); user.asObjectable().getEmployeeType().clear(); user.asObjectable().setEmployeeNumber(null); mapping.getSourceContext().recompute(); OperationResult opResult = new OperationResult(TEST_NAME); // WHEN mapping.evaluate(null, opResult); // THEN PrismValueDeltaSetTriple<PrismPropertyValue<PolyString>> outputTriple = mapping.getOutputTriple(); PrismAsserts.assertTripleNoZero(outputTriple); PrismAsserts.assertTriplePlus(outputTriple, PrismTestUtil.createPolyString("Landlubber Jack")); PrismAsserts.assertTripleMinus(outputTriple, PrismTestUtil.createPolyString("Landlubber jack")); }
public void testScriptSystemVariablesConditionEmptyTrueToFalse(final String TEST_NAME, String filename) throws Exception { System.out.println("===[ "+TEST_NAME+"]==="); // GIVEN ObjectDelta<UserType> delta = evaluator.getPrismContext().deltaFactory().object() .createModificationReplaceProperty(UserType.class, evaluator.USER_OLD_OID, evaluator.toPath("employeeNumber"), "666"); MappingImpl<PrismPropertyValue<PolyString>,PrismPropertyDefinition<PolyString>> mapping = evaluator.createMapping( filename, TEST_NAME, "title", delta); PrismObject<UserType> user = (PrismObject<UserType>) mapping.getSourceContext().getOldObject(); user.asObjectable().setEmployeeNumber(null); mapping.getSourceContext().recompute(); OperationResult opResult = new OperationResult(TEST_NAME); // WHEN mapping.evaluate(null, opResult); // THEN PrismValueDeltaSetTriple<PrismPropertyValue<PolyString>> outputTriple = mapping.getOutputTriple(); PrismAsserts.assertTripleNoZero(outputTriple); PrismAsserts.assertTripleNoPlus(outputTriple); PrismAsserts.assertTripleMinus(outputTriple, PrismTestUtil.createPolyString("Landlubber jack")); }
public void testScriptSystemVariablesConditionEmptyFalseToTrue(final String TEST_NAME, String filename) throws Exception { System.out.println("===[ "+TEST_NAME+"]==="); // GIVEN ObjectDelta<UserType> delta = evaluator.getPrismContext().deltaFactory().object() .createModificationReplaceProperty(UserType.class, evaluator.USER_OLD_OID, evaluator.toPath("employeeNumber")); MappingImpl<PrismPropertyValue<PolyString>,PrismPropertyDefinition<PolyString>> mapping = evaluator.createMapping( filename, TEST_NAME, "title", delta); PrismObject<UserType> user = (PrismObject<UserType>) mapping.getSourceContext().getOldObject(); user.asObjectable().setEmployeeNumber("666"); mapping.getSourceContext().recompute(); OperationResult opResult = new OperationResult(TEST_NAME); // WHEN mapping.evaluate(null, opResult); // THEN PrismValueDeltaSetTriple<PrismPropertyValue<PolyString>> outputTriple = mapping.getOutputTriple(); PrismAsserts.assertTripleNoZero(outputTriple); PrismAsserts.assertTriplePlus(outputTriple, PrismTestUtil.createPolyString("Landlubber jack")); PrismAsserts.assertTripleNoMinus(outputTriple); }
@Test public void testEmployeeTypeDeltaBreplaceB() throws Exception { final String TEST_NAME = "testEmployeeTypeDeltaBreplaceB"; TestUtil.displayTestTitle(TEST_NAME); // GIVEN ObjectDelta<UserType> delta = evaluator.getPrismContext().deltaFactory().object() .createModificationReplaceProperty(UserType.class, evaluator.USER_OLD_OID, UserType.F_EMPLOYEE_TYPE, "B"); MappingImpl<PrismPropertyValue<String>,PrismPropertyDefinition<String>> mapping = evaluator.createMapping( "mapping-script-system-variables-employee-type.xml", TEST_NAME, "employeeType", delta); PrismObject<UserType> user = (PrismObject<UserType>) mapping.getSourceContext().getOldObject(); setEmployeeType(user.asObjectable(), "B"); mapping.getSourceContext().recompute(); OperationResult opResult = new OperationResult(TEST_NAME); // WHEN mapping.evaluate(null, opResult); // THEN evaluator.assertResult(opResult); PrismValueDeltaSetTriple<PrismPropertyValue<String>> outputTriple = mapping.getOutputTriple(); PrismAsserts.assertTripleNoZero(outputTriple); PrismAsserts.assertTriplePlus(outputTriple, "B"); PrismAsserts.assertTripleNoMinus(outputTriple); }
@Test public void testEmployeeTypeDeltaAreplaceB() throws Exception { final String TEST_NAME = "testEmployeeTypeDeltaAreplaceB"; TestUtil.displayTestTitle(TEST_NAME); // GIVEN ObjectDelta<UserType> delta = evaluator.getPrismContext().deltaFactory().object() .createModificationReplaceProperty(UserType.class, evaluator.USER_OLD_OID, UserType.F_EMPLOYEE_TYPE, "B"); MappingImpl<PrismPropertyValue<String>,PrismPropertyDefinition<String>> mapping = evaluator.createMapping( "mapping-script-system-variables-employee-type.xml", TEST_NAME, "employeeType", delta); PrismObject<UserType> user = (PrismObject<UserType>) mapping.getSourceContext().getOldObject(); setEmployeeType(user.asObjectable(), "A"); mapping.getSourceContext().recompute(); OperationResult opResult = new OperationResult(TEST_NAME); // WHEN mapping.evaluate(null, opResult); // THEN evaluator.assertResult(opResult); PrismValueDeltaSetTriple<PrismPropertyValue<String>> outputTriple = mapping.getOutputTriple(); PrismAsserts.assertTripleNoZero(outputTriple); PrismAsserts.assertTriplePlus(outputTriple, "B"); PrismAsserts.assertTripleMinus(outputTriple, "A"); }
@Test public void testEmployeeTypeDeltaNullreplaceB() throws Exception { final String TEST_NAME = "testEmployeeTypeDeltaNullreplaceB"; TestUtil.displayTestTitle(TEST_NAME); // GIVEN ObjectDelta<UserType> delta = evaluator.getPrismContext().deltaFactory().object() .createModificationReplaceProperty(UserType.class, evaluator.USER_OLD_OID, UserType.F_EMPLOYEE_TYPE, "B"); MappingImpl<PrismPropertyValue<String>,PrismPropertyDefinition<String>> mapping = evaluator.createMapping( "mapping-script-system-variables-employee-type.xml", TEST_NAME, "employeeType", delta); PrismObject<UserType> user = (PrismObject<UserType>) mapping.getSourceContext().getOldObject(); setEmployeeType(user.asObjectable()); mapping.getSourceContext().recompute(); OperationResult opResult = new OperationResult(TEST_NAME); // WHEN mapping.evaluate(null, opResult); // THEN evaluator.assertResult(opResult); PrismValueDeltaSetTriple<PrismPropertyValue<String>> outputTriple = mapping.getOutputTriple(); PrismAsserts.assertTripleNoZero(outputTriple); PrismAsserts.assertTriplePlus(outputTriple, "B"); PrismAsserts.assertTripleNoMinus(outputTriple); }
public PrismValueDeltaSetTriple<PrismPropertyValue<String>> employeeTypeDeltaABAdd( final String TEST_NAME, String addVal, String... oldVals) throws Exception { TestUtil.displayTestTitle(TEST_NAME); // GIVEN ObjectDelta<UserType> delta = evaluator.getPrismContext().deltaFactory().object() .createModificationAddProperty(UserType.class, evaluator.USER_OLD_OID, UserType.F_EMPLOYEE_TYPE, addVal); MappingImpl<PrismPropertyValue<String>,PrismPropertyDefinition<String>> mapping = evaluator.createMapping( "mapping-script-system-variables-employee-type.xml", TEST_NAME, "employeeType", delta); PrismObject<UserType> user = (PrismObject<UserType>) mapping.getSourceContext().getOldObject(); setEmployeeType(user.asObjectable(), oldVals); mapping.getSourceContext().recompute(); OperationResult opResult = new OperationResult(TEST_NAME); // WHEN mapping.evaluate(null, opResult); // THEN evaluator.assertResult(opResult); return mapping.getOutputTriple(); }
public PrismValueDeltaSetTriple<PrismPropertyValue<String>> employeeTypeDeltaDelete(final String TEST_NAME, String delVal, String... oldVals) throws Exception { TestUtil.displayTestTitle(TEST_NAME); // GIVEN ObjectDelta<UserType> delta = evaluator.getPrismContext().deltaFactory().object() .createModificationDeleteProperty(UserType.class, evaluator.USER_OLD_OID, UserType.F_EMPLOYEE_TYPE, delVal); MappingImpl<PrismPropertyValue<String>,PrismPropertyDefinition<String>> mapping = evaluator.createMapping( "mapping-script-system-variables-employee-type.xml", TEST_NAME, "employeeType", delta); PrismObject<UserType> user = (PrismObject<UserType>) mapping.getSourceContext().getOldObject(); setEmployeeType(user.asObjectable(), oldVals); mapping.getSourceContext().recompute(); OperationResult opResult = new OperationResult(TEST_NAME); // WHEN mapping.evaluate(null, opResult); // THEN evaluator.assertResult(opResult); return mapping.getOutputTriple(); }
TEST_NAME, "organizationalUnit", delta); PrismObject<UserType> user = (PrismObject<UserType>) mapping.getSourceContext().getOldObject(); user.asObjectable().getEmployeeType().add("LANDLUBER"); mapping.getSourceContext().recompute();
TEST_NAME, "organizationalUnit", delta); PrismObject<UserType> user = (PrismObject<UserType>) mapping.getSourceContext().getOldObject();