private <X> PrismProperty<X> resolveStructuredPropertyItem(PrismProperty<Structured> sourceProperty, ItemPath resolvePath, PrismPropertyDefinition outputDefinition) { if (sourceProperty == null) { return null; } PrismProperty<X> outputProperty = outputDefinition.instantiate(); for (Structured sourceRealValue: sourceProperty.getRealValues()) { X outputRealValue = (X) sourceRealValue.resolve(resolvePath); outputProperty.addRealValue(outputRealValue); } return outputProperty; }
@Test public void test550UseVariables() throws Exception { final String TEST_NAME = "test550UseVariables"; TestUtil.displayTestTitle(this, TEST_NAME); // GIVEN Task task = taskManager.createTaskInstance(DOT_CLASS + TEST_NAME); OperationResult result = task.getResult(); ExecuteScriptType executeScript = parseRealValue(USE_VARIABLES_FILE); PrismContainer<Containerable> taskExtension = task.getTaskPrismObject().findOrCreateContainer(TaskType.F_EXTENSION); taskExtension .findOrCreateProperty(USER_NAME_TASK_EXTENSION_PROPERTY) .addRealValue("user1"); taskExtension .findOrCreateProperty(STUDY_GROUP_TASK_EXTENSION_PROPERTY) .addRealValues("group1", "group2", "group3"); // WHEN ExecutionContext output = scriptingExpressionEvaluator.evaluateExpression(executeScript, emptyMap(), false, task, result); // THEN dumpOutput(output, result); result.computeStatus(); PipelineData data = output.getFinalOutput(); assertEquals("Unexpected # of items in output", 1, data.getData().size()); String returned = data.getData().get(0).getValue().getRealValue(); assertEquals("Wrong returned status", "ok", returned); }
@Override public PrismValueDeltaSetTriple<V> evaluate(ExpressionEvaluationContext context) throws SchemaException, ExpressionEvaluationException, ObjectNotFoundException { String constName = constEvaluatorType.getValue(); String stringValue = constantsManager.getConstantValue(constName); Item<V, D> output = outputDefinition.instantiate(); Object value = ExpressionUtil.convertToOutputValue(stringValue, outputDefinition, protector); if (output instanceof PrismProperty) { ((PrismProperty<Object>) output).addRealValue(value); } else { throw new UnsupportedOperationException( "Can only generate values of property, not " + output.getClass()); } return ItemDeltaUtil.toDeltaSetTriple(output, null, prismContext); }
@Override public PrismValueDeltaSetTriple<V> evaluate(ExpressionEvaluationContext context) throws SchemaException, ExpressionEvaluationException, ObjectNotFoundException { long counter = getSequenceCounter(sequentialValueEvaluatorType.getSequenceRef().getOid(), repositoryService, context.getResult()); Object value = ExpressionUtil.convertToOutputValue(counter, outputDefinition, protector); Item<V,D> output = outputDefinition.instantiate(); if (output instanceof PrismProperty) { ((PrismProperty<Object>)output).addRealValue(value); } else { throw new UnsupportedOperationException("Can only generate values of property, not "+output.getClass()); } return ItemDeltaUtil.toDeltaSetTriple(output, null, prismContext); }
private <T> PrismProperty<T> createTokenProperty(T object) { QName type = XsdTypeMapper.toXsdType(object.getClass()); //noinspection unchecked MutablePrismPropertyDefinition<T> propDef = prismContext.definitionFactory().createPropertyDefinition(SchemaConstants.SYNC_TOKEN, type); propDef.setDynamic(true); propDef.setMaxOccurs(1); propDef.setIndexed(false); // redundant, as dynamic extension items are not indexed by default PrismProperty<T> property = propDef.instantiate(); property.addRealValue(object); return property; }
@Test public void testValueElementsRoundtripInt() throws Exception { final String TEST_NAME = "testValueElementsRoundtripInt"; TestUtil.displayTestTitle(TEST_NAME); // GIVEN PrismContext prismContext = PrismTestUtil.getPrismContext(); MutablePrismPropertyDefinition propDef = prismContext.definitionFactory().createPropertyDefinition(PROP_NAME, DOMUtil.XSD_INT); propDef.setMaxOccurs(-1); PrismProperty<Integer> origProperty = propDef.instantiate(); origProperty.addRealValue(42); origProperty.addRealValue(123); origProperty.addRealValue(321); doRoundtrip(origProperty, propDef, prismContext); }
@Test public void testPropertyUserSimpleDiffMultiNoChangeStatic() throws Exception { System.out.println("\n\n===[ testPropertyUserSimpleDiffMultiNoChangeStatic ]===\n"); // GIVEN PrismObjectDefinition<UserType> userDef = getUserTypeDefinition(); PrismObject<UserType> user1 = userDef.instantiate(); user1.setOid(USER_JACK_OID); PrismProperty<String> additionalNamesProp1 = user1.findOrCreateProperty(UserType.F_ADDITIONAL_NAMES); additionalNamesProp1.addRealValue("foo"); additionalNamesProp1.addRealValue("bar"); PrismObject<UserType> user2 = userDef.instantiate(); user2.setOid(USER_JACK_OID); PrismProperty<String> additionalNamesProp2 = user2.findOrCreateProperty(UserType.F_ADDITIONAL_NAMES); additionalNamesProp2.addRealValue("foo"); additionalNamesProp2.addRealValue("bar"); // WHEN PropertyDelta<String> delta = ItemUtil.diff(additionalNamesProp1, additionalNamesProp2); // THEN assertNull(delta); }
@Test public void testPropertyUserSimpleDiffMultiAdd() throws Exception { System.out.println("\n\n===[ testPropertyUserSimpleDiffMultiAdd ]===\n"); // GIVEN PrismObjectDefinition<UserType> userDef = getUserTypeDefinition(); PrismObject<UserType> user1 = userDef.instantiate(); user1.setOid(USER_JACK_OID); PrismProperty<String> additionalNamesProp1 = user1.findOrCreateProperty(UserType.F_ADDITIONAL_NAMES); additionalNamesProp1.addRealValue("foo"); additionalNamesProp1.addRealValue("bar"); PrismObject<UserType> user2 = userDef.instantiate(); user2.setOid(USER_JACK_OID); PrismProperty<String> additionalNamesProp2 = user2.findOrCreateProperty(UserType.F_ADDITIONAL_NAMES); additionalNamesProp2.addRealValue("foo"); additionalNamesProp2.addRealValue("bar"); additionalNamesProp2.addRealValue("baz"); // WHEN PropertyDelta<String> delta = additionalNamesProp1.diff(additionalNamesProp2); // THEN assertNotNull(delta); System.out.println(delta.debugDump()); PrismAsserts.assertAdd(delta, "baz"); delta.checkConsistence(); }
@Test public void testPropertyUserSimpleDiffMultiNoChange() throws Exception { System.out.println("\n\n===[ testPropertyUserSimpleDiffMultiNoChange ]===\n"); // GIVEN PrismObjectDefinition<UserType> userDef = getUserTypeDefinition(); PrismObject<UserType> user1 = userDef.instantiate(); user1.setOid(USER_JACK_OID); PrismProperty<String> additionalNamesProp1 = user1.findOrCreateProperty(UserType.F_ADDITIONAL_NAMES); additionalNamesProp1.addRealValue("foo"); additionalNamesProp1.addRealValue("bar"); PrismObject<UserType> user2 = userDef.instantiate(); user2.setOid(USER_JACK_OID); PrismProperty<String> additionalNamesProp2 = user2.findOrCreateProperty(UserType.F_ADDITIONAL_NAMES); additionalNamesProp2.addRealValue("foo"); additionalNamesProp2.addRealValue("bar"); // WHEN PropertyDelta<String> delta = additionalNamesProp1.diff(additionalNamesProp2); // THEN assertNull(delta); }
@Test public void testPropertyUserSimpleDiffMultiAddStatic() throws Exception { System.out.println("\n\n===[ testPropertyUserSimpleDiffMultiAddStatic ]===\n"); // GIVEN PrismObjectDefinition<UserType> userDef = getUserTypeDefinition(); PrismObject<UserType> user1 = userDef.instantiate(); user1.setOid(USER_JACK_OID); PrismProperty<String> additionalNamesProp1 = user1.findOrCreateProperty(UserType.F_ADDITIONAL_NAMES); additionalNamesProp1.addRealValue("foo"); additionalNamesProp1.addRealValue("bar"); PrismObject<UserType> user2 = userDef.instantiate(); user2.setOid(USER_JACK_OID); PrismProperty<String> additionalNamesProp2 = user2.findOrCreateProperty(UserType.F_ADDITIONAL_NAMES); additionalNamesProp2.addRealValue("foo"); additionalNamesProp2.addRealValue("bar"); additionalNamesProp2.addRealValue("baz"); // WHEN PropertyDelta<String> delta = ItemUtil.diff(additionalNamesProp1, additionalNamesProp2); // THEN assertNotNull(delta); System.out.println(delta.debugDump()); PrismAsserts.assertAdd(delta, "baz"); delta.checkConsistence(); }
@Test public void testValueElementsRoundtripString() throws Exception { final String TEST_NAME = "testValueElementsRoundtripString"; TestUtil.displayTestTitle(TEST_NAME); // GIVEN PrismContext prismContext = PrismTestUtil.getPrismContext(); MutablePrismPropertyDefinition propDef = prismContext.definitionFactory().createPropertyDefinition(PROP_NAME, DOMUtil.XSD_STRING); propDef.setMaxOccurs(-1); PrismProperty<String> origProperty = propDef.instantiate(); origProperty.addRealValue("FOO"); origProperty.addRealValue("BAR"); doRoundtrip(origProperty, propDef, prismContext); }
@Test public void testPropertyUserSimpleDiffMultiAddStaticNull1() throws Exception { System.out.println("\n\n===[ testPropertyUserSimpleDiffMultiAddStaticNull1 ]===\n"); // GIVEN PrismObjectDefinition<UserType> userDef = getUserTypeDefinition(); PrismObject<UserType> user2 = userDef.instantiate(); user2.setOid(USER_JACK_OID); PrismProperty<String> additionalNamesProp2 = user2.findOrCreateProperty(UserType.F_ADDITIONAL_NAMES); additionalNamesProp2.addRealValue("foo"); additionalNamesProp2.addRealValue("bar"); // WHEN PropertyDelta<String> delta = ItemUtil.diff(null, additionalNamesProp2); // THEN assertNotNull(delta); System.out.println(delta.debugDump()); PrismAsserts.assertAdd(delta, "foo", "bar"); delta.checkConsistence(); }
@Test public void testUserSimpleDiffMultiAdd() throws Exception { System.out.println("\n\n===[ testUserSimpleDiffMulti ]===\n"); // GIVEN PrismObjectDefinition<UserType> userDef = getUserTypeDefinition(); PrismObject<UserType> user1 = userDef.instantiate(); user1.setOid(USER_JACK_OID); PrismProperty<String> anamesProp1 = user1.findOrCreateProperty(UserType.F_ADDITIONAL_NAMES); anamesProp1.addRealValue("foo"); anamesProp1.addRealValue("bar"); PrismObject<UserType> user2 = userDef.instantiate(); user2.setOid(USER_JACK_OID); PrismProperty<String> anamesProp2 = user2.findOrCreateProperty(UserType.F_ADDITIONAL_NAMES); anamesProp2.addRealValue("foo"); anamesProp2.addRealValue("bar"); anamesProp2.addRealValue("baz"); // WHEN ObjectDelta<UserType> delta = user1.diff(user2); // THEN assertNotNull(delta); System.out.println(delta.debugDump()); assertEquals("Unexpected number of midifications", 1, delta.getModifications().size()); PrismAsserts.assertPropertyAdd(delta, UserType.F_ADDITIONAL_NAMES, "baz"); assertEquals("Wrong OID", USER_JACK_OID, delta.getOid()); delta.checkConsistence(); }
@Test public void testPropertyUserSimpleDiffMultiAddStaticNull2() throws Exception { System.out.println("\n\n===[ testPropertyUserSimpleDiffMultiAddStaticNull2 ]===\n"); // GIVEN PrismObjectDefinition<UserType> userDef = getUserTypeDefinition(); PrismObject<UserType> user2 = userDef.instantiate(); user2.setOid(USER_JACK_OID); PrismProperty<String> additionalNamesProp1 = user2.findOrCreateProperty(UserType.F_ADDITIONAL_NAMES); additionalNamesProp1.addRealValue("bar"); additionalNamesProp1.addRealValue("baz"); // WHEN PropertyDelta<String> delta = ItemUtil.diff(additionalNamesProp1, null); // THEN assertNotNull(delta); System.out.println(delta.debugDump()); PrismAsserts.assertDelete(delta, "bar", "baz"); delta.checkConsistence(); }
prismContext.getSchemaRegistry().findPropertyDefinitionByElementName(SchemaConstants.MODEL_EXTENSION_WORK_ITEM_ID); PrismProperty<String> workItemIdProp = workItemIdDef.instantiate(); workItemIdProp.addRealValue(workItemId); trigger.getExtension().asPrismContainerValue().add(workItemIdProp); schemaRegistry.findPropertyDefinitionByElementName(SchemaConstants.MODEL_EXTENSION_TIME_BEFORE_ACTION); PrismProperty<Duration> timeBeforeActionProp = timeBeforeActionDef.instantiate(); timeBeforeActionProp.addRealValue(notifyInfo.getKey()); extension.asPrismContainerValue().add(timeBeforeActionProp);
inputDefinition.setMaxOccurs(1); PrismProperty<Integer> input = inputDefinition.instantiate(); input.addRealValue(iteration); ItemDeltaItem<PrismPropertyValue<Integer>,PrismPropertyDefinition<Integer>> idi = new ItemDeltaItem<>(input); Source<PrismPropertyValue<Integer>,PrismPropertyDefinition<Integer>> iterationSource = new Source<>(idi, ExpressionConstants.VAR_ITERATION);
@Test public void testUserSimpleDiffMultiNoChange() throws Exception { System.out.println("\n\n===[ testUserSimpleDiffMultiNoChange ]===\n"); // GIVEN PrismObjectDefinition<UserType> userDef = getUserTypeDefinition(); PrismObject<UserType> user1 = userDef.instantiate(); user1.setOid(USER_JACK_OID); PrismProperty<String> anamesProp1 = user1.findOrCreateProperty(UserType.F_ADDITIONAL_NAMES); anamesProp1.addRealValue("foo"); anamesProp1.addRealValue("bar"); PrismObject<UserType> user2 = userDef.instantiate(); user2.setOid(USER_JACK_OID); PrismProperty<String> anamesProp2 = user2.findOrCreateProperty(UserType.F_ADDITIONAL_NAMES); anamesProp2.addRealValue("foo"); anamesProp2.addRealValue("bar"); // WHEN ObjectDelta<UserType> delta = user1.diff(user2); // THEN assertNotNull(delta); assertEquals("Unexpected number of midifications", 0, delta.getModifications().size()); assertEquals("Wrong OID", USER_JACK_OID, delta.getOid()); delta.checkConsistence(); }
@Test(expectedExceptions = IllegalArgumentException.class) // should fail, as Equals supports single-value right side only // TODO this should be perhaps checked in EqualFilter public void test0900EqualsMultivalue() throws Exception { Session session = open(); try { /* * ### User: preferredLanguage = 'SK', 'HU' */ MutablePrismPropertyDefinition<String> multivalDef = prismContext.definitionFactory().createPropertyDefinition(UserType.F_PREFERRED_LANGUAGE, DOMUtil.XSD_STRING); multivalDef.setMaxOccurs(-1); PrismProperty<String> multivalProperty = multivalDef.instantiate(); multivalProperty.addRealValue("SK"); multivalProperty.addRealValue("HU"); ObjectQuery query = prismContext.queryFor(UserType.class) .item(UserType.F_PREFERRED_LANGUAGE).eq(multivalProperty) .build(); getInterpretedQuery2(session, UserType.class, query); // assertEqualsIgnoreWhitespace(expected, real); } finally { close(session); } }
protected PrismObject<UserType> createUserFoo() throws SchemaException { PrismObjectDefinition<UserType> userDef = getUserTypeDefinition(); PrismObject<UserType> user = userDef.instantiate(); user.setOid(USER_FOO_OID); user.setPropertyRealValue(UserType.F_NAME, createPolyString("foo")); PrismProperty<PolyString> anamesProp = user.findOrCreateProperty(UserType.F_ADDITIONAL_NAMES); anamesProp.addRealValue(createPolyString("foobar")); return user; }
.findContainer(TaskType.F_EXTENSION) .findOrCreateProperty(USER_NAME_TASK_EXTENSION_PROPERTY) .addRealValue(USER_ADMINISTRATOR_USERNAME); task.getTaskPrismObject() .findContainer(TaskType.F_EXTENSION) .findOrCreateProperty(USER_DESCRIPTION_TASK_EXTENSION_PROPERTY) .addRealValue("admin description"); task.setHandlerUri(ModelPublicConstants.SCRIPT_EXECUTION_TASK_HANDLER_URI);