Search in sources :

Example 6 with ValueMetadataType

use of com.evolveum.midpoint.xml.ns._public.common.common_3.ValueMetadataType in project midpoint by Evolveum.

the class PrismValueWrapperImpl method getNewValueWithMetadataApplied.

private <V extends PrismValue> V getNewValueWithMetadataApplied() throws SchemaException {
    if (getParent() != null && getParent().isProcessProvenanceMetadata()) {
        PrismContainerValue<ValueMetadataType> newYieldValue = WebPrismUtil.getNewYieldValue();
        MidPointApplication app = MidPointApplication.get();
        ValueMetadata newValueMetadata = app.getPrismContext().getValueMetadataFactory().createEmpty();
        newValueMetadata.addMetadataValue(newYieldValue);
        newValue.setValueMetadata(newValueMetadata.clone());
    }
    return (V) newValue.clone();
}
Also used : MidPointApplication(com.evolveum.midpoint.web.security.MidPointApplication) ValueMetadataType(com.evolveum.midpoint.xml.ns._public.common.common_3.ValueMetadataType)

Example 7 with ValueMetadataType

use of com.evolveum.midpoint.xml.ns._public.common.common_3.ValueMetadataType in project midpoint by Evolveum.

the class TestMappingMetadata method testAsIsDeleteSparrowUserWithRangeAll.

/**
 * Jack has acquisition origins: user, rest
 *
 *    (see user-jack-metadata.xml)
 *
 * Delta: replace givenName Jackie (user)
 * Existing: Jack Sparrow (m:hr, user)
 *
 * Expected result:
 *  - Jackie (user) in plus set
 *  - Jack (no MD) in minus set
 *  - Jack Sparrow (m:hr) in minus set (because of range)
 */
@Test
public void testAsIsDeleteSparrowUserWithRangeAll() throws Exception {
    PrismPropertyValue<PolyString> jackieUser = evaluator.getPrismContext().itemFactory().createPropertyValue(new PolyString("Jackie"));
    // noinspection unchecked
    ((PrismContainer<ValueMetadataType>) (PrismContainer) jackieUser.getValueMetadata()).createNewValue().asContainerable().beginProvenance().beginAcquisition().originRef("user", ServiceType.COMPLEX_TYPE);
    PrismPropertyValue<PolyString> jackSparrowHr = evaluator.getPrismContext().itemFactory().createPropertyValue(PrismTestUtil.createPolyString("Jack Sparrow"));
    // noinspection unchecked
    ((PrismContainer<ValueMetadataType>) (PrismContainer) jackSparrowHr.getValueMetadata()).createNewValue().asContainerable().beginProvenance().mappingSpec(createMappingSpec()).beginAcquisition().originRef("hr", ServiceType.COMPLEX_TYPE).<ProvenanceMetadataType>end().beginAcquisition().originRef("user", ServiceType.COMPLEX_TYPE).end();
    ObjectDelta<UserType> delta = evaluator.getPrismContext().deltaFor(UserType.class).item(UserType.F_GIVEN_NAME).replace(jackieUser).asObjectDelta(null);
    MappingImpl<PrismPropertyValue<PolyString>, PrismPropertyDefinition<PolyString>> mapping = evaluate(MAPPING_ASIS_FULLNAME_METADATA_RANGE_ALL_XML, delta, existingValuesCustomizer(jackSparrowHr));
    PrismValueDeltaSetTriple<PrismPropertyValue<PolyString>> outputTriple = mapping.getOutputTriple();
    displayDumpable("triple", outputTriple);
    PrismAsserts.assertTripleNoZero(outputTriple);
    PrismAsserts.assertTriplePlus(outputTriple, PrismTestUtil.createPolyString("Jackie"));
    PrismAsserts.assertTripleMinus(outputTriple, PrismTestUtil.createPolyString("Jack"), PrismTestUtil.createPolyString("Jack Sparrow"));
    assertOrigins(MiscUtil.extractSingleton(outputTriple.getPlusSet()), "user");
    // noinspection ConstantConditions
    assertNoMetadata(outputTriple.getMinusSet().stream().filter(v -> v.getRealValue().getOrig().equals("Jack")).findAny().orElse(null));
    // noinspection ConstantConditions
    assertOrigins(outputTriple.getMinusSet().stream().filter(v -> v.getRealValue().getOrig().equals("Jack Sparrow")).findAny().orElse(null), "hr", "user");
}
Also used : java.util(java.util) DeltaFactory(com.evolveum.midpoint.prism.delta.DeltaFactory) com.evolveum.midpoint.xml.ns._public.common.common_3(com.evolveum.midpoint.xml.ns._public.common.common_3) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) SchemaException(com.evolveum.midpoint.util.exception.SchemaException) Test(org.testng.annotations.Test) ModelExpressionThreadLocalHolder(com.evolveum.midpoint.model.common.expression.ModelExpressionThreadLocalHolder) ExpressionEnvironment(com.evolveum.midpoint.model.common.expression.ExpressionEnvironment) com.evolveum.midpoint.model.api.context(com.evolveum.midpoint.model.api.context) DeltaSetTriple(com.evolveum.midpoint.prism.delta.DeltaSetTriple) PrismTestUtil(com.evolveum.midpoint.prism.util.PrismTestUtil) PrismValueDeltaSetTriple(com.evolveum.midpoint.prism.delta.PrismValueDeltaSetTriple) ModelExecuteOptions(com.evolveum.midpoint.model.api.ModelExecuteOptions) com.evolveum.midpoint.prism(com.evolveum.midpoint.prism) XmlTypeConverter(com.evolveum.midpoint.prism.xml.XmlTypeConverter) PolyString(com.evolveum.midpoint.prism.polystring.PolyString) TEST_DIR(com.evolveum.midpoint.model.common.mapping.MappingTestEvaluator.TEST_DIR) ObjectDelta(com.evolveum.midpoint.prism.delta.ObjectDelta) PrismTestUtil.getPrismContext(com.evolveum.midpoint.prism.util.PrismTestUtil.getPrismContext) AbstractModelCommonTest(com.evolveum.midpoint.model.common.AbstractModelCommonTest) PrismAsserts(com.evolveum.midpoint.prism.util.PrismAsserts) BeforeClass(org.testng.annotations.BeforeClass) IOException(java.io.IOException) MiscUtil(com.evolveum.midpoint.util.MiscUtil) Task(com.evolveum.midpoint.task.api.Task) XMLGregorianCalendar(javax.xml.datatype.XMLGregorianCalendar) AssertJUnit.fail(org.testng.AssertJUnit.fail) Collectors(java.util.stream.Collectors) Consumer(java.util.function.Consumer) ExpressionTestUtil(com.evolveum.midpoint.model.common.expression.ExpressionTestUtil) ResourceShadowDiscriminator(com.evolveum.midpoint.schema.ResourceShadowDiscriminator) Nullable(org.jetbrains.annotations.Nullable) ObjectTreeDeltas(com.evolveum.midpoint.schema.ObjectTreeDeltas) TestResource(com.evolveum.midpoint.test.TestResource) Stream(java.util.stream.Stream) ExpressionProfile(com.evolveum.midpoint.schema.expression.ExpressionProfile) SAXException(org.xml.sax.SAXException) ProgressInformation(com.evolveum.midpoint.model.api.ProgressInformation) NotNull(org.jetbrains.annotations.NotNull) PolyString(com.evolveum.midpoint.prism.polystring.PolyString) Test(org.testng.annotations.Test) AbstractModelCommonTest(com.evolveum.midpoint.model.common.AbstractModelCommonTest)

Example 8 with ValueMetadataType

use of com.evolveum.midpoint.xml.ns._public.common.common_3.ValueMetadataType in project midpoint by Evolveum.

the class TestMappingMetadata method testAddJackRestWithTimestampWithExisting.

/**
 * Jack has acquisition origins: user, rest
 * Sparrow has acquisition origins: user
 * target (Jack Sparrow) has origins: user, rest (in the form of m:user+rest).
 *
 *    (see user-jack-metadata.xml)
 *
 * Delta: add givenName Jack (rest+timestamp).
 *
 * Expected result: user, rest+timestamp (in zero set, because no real value is being added).
 */
@Test
public void testAddJackRestWithTimestampWithExisting() throws Exception {
    XMLGregorianCalendar now = XmlTypeConverter.createXMLGregorianCalendar();
    PrismPropertyValue<PolyString> jackRestWithTs = evaluator.getPrismContext().itemFactory().createPropertyValue(new PolyString("Jack"));
    // noinspection unchecked
    ((PrismContainer<ValueMetadataType>) (PrismContainer) jackRestWithTs.getValueMetadata()).createNewValue().asContainerable().beginProvenance().beginAcquisition().originRef("rest", ServiceType.COMPLEX_TYPE).timestamp(now);
    ObjectDelta<UserType> delta = evaluator.getPrismContext().deltaFor(UserType.class).item(UserType.F_GIVEN_NAME).add(jackRestWithTs).asObjectDelta(null);
    MappingImpl<PrismPropertyValue<PolyString>, PrismPropertyDefinition<PolyString>> mapping = evaluate(MAPPING_SCRIPT_FULLNAME_METADATA_XML, delta, existingValuesCustomizer(createJackSparrowOriginal()));
    PrismValueDeltaSetTriple<PrismPropertyValue<PolyString>> outputTriple = mapping.getOutputTriple();
    displayDumpable("triple", outputTriple);
    PrismAsserts.assertTripleZero(outputTriple, PrismTestUtil.createPolyString("Jack Sparrow"));
    PrismAsserts.assertTripleNoPlus(outputTriple);
    PrismAsserts.assertTripleNoMinus(outputTriple);
    PrismPropertyValue<PolyString> jackSparrow = MiscUtil.extractSingleton(outputTriple.getZeroSet());
    assertOrigins(jackSparrow, "user", "rest");
    List<ProvenanceAcquisitionType> acquisitions = ((ValueMetadataType) jackSparrow.getValueMetadata().getValue().asContainerable()).getProvenance().getAcquisition();
    XMLGregorianCalendar timestamp = acquisitions.stream().filter(acq -> acq.getOriginRef().getOid().equals("rest")).findAny().orElseThrow(() -> new AssertionError("no origin rest value")).getTimestamp();
    assertThat(timestamp).isEqualTo(now);
}
Also used : java.util(java.util) DeltaFactory(com.evolveum.midpoint.prism.delta.DeltaFactory) com.evolveum.midpoint.xml.ns._public.common.common_3(com.evolveum.midpoint.xml.ns._public.common.common_3) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) SchemaException(com.evolveum.midpoint.util.exception.SchemaException) Test(org.testng.annotations.Test) ModelExpressionThreadLocalHolder(com.evolveum.midpoint.model.common.expression.ModelExpressionThreadLocalHolder) ExpressionEnvironment(com.evolveum.midpoint.model.common.expression.ExpressionEnvironment) com.evolveum.midpoint.model.api.context(com.evolveum.midpoint.model.api.context) DeltaSetTriple(com.evolveum.midpoint.prism.delta.DeltaSetTriple) PrismTestUtil(com.evolveum.midpoint.prism.util.PrismTestUtil) PrismValueDeltaSetTriple(com.evolveum.midpoint.prism.delta.PrismValueDeltaSetTriple) ModelExecuteOptions(com.evolveum.midpoint.model.api.ModelExecuteOptions) com.evolveum.midpoint.prism(com.evolveum.midpoint.prism) XmlTypeConverter(com.evolveum.midpoint.prism.xml.XmlTypeConverter) PolyString(com.evolveum.midpoint.prism.polystring.PolyString) TEST_DIR(com.evolveum.midpoint.model.common.mapping.MappingTestEvaluator.TEST_DIR) ObjectDelta(com.evolveum.midpoint.prism.delta.ObjectDelta) PrismTestUtil.getPrismContext(com.evolveum.midpoint.prism.util.PrismTestUtil.getPrismContext) AbstractModelCommonTest(com.evolveum.midpoint.model.common.AbstractModelCommonTest) PrismAsserts(com.evolveum.midpoint.prism.util.PrismAsserts) BeforeClass(org.testng.annotations.BeforeClass) IOException(java.io.IOException) MiscUtil(com.evolveum.midpoint.util.MiscUtil) Task(com.evolveum.midpoint.task.api.Task) XMLGregorianCalendar(javax.xml.datatype.XMLGregorianCalendar) AssertJUnit.fail(org.testng.AssertJUnit.fail) Collectors(java.util.stream.Collectors) Consumer(java.util.function.Consumer) ExpressionTestUtil(com.evolveum.midpoint.model.common.expression.ExpressionTestUtil) ResourceShadowDiscriminator(com.evolveum.midpoint.schema.ResourceShadowDiscriminator) Nullable(org.jetbrains.annotations.Nullable) ObjectTreeDeltas(com.evolveum.midpoint.schema.ObjectTreeDeltas) TestResource(com.evolveum.midpoint.test.TestResource) Stream(java.util.stream.Stream) ExpressionProfile(com.evolveum.midpoint.schema.expression.ExpressionProfile) SAXException(org.xml.sax.SAXException) ProgressInformation(com.evolveum.midpoint.model.api.ProgressInformation) NotNull(org.jetbrains.annotations.NotNull) XMLGregorianCalendar(javax.xml.datatype.XMLGregorianCalendar) PolyString(com.evolveum.midpoint.prism.polystring.PolyString) Test(org.testng.annotations.Test) AbstractModelCommonTest(com.evolveum.midpoint.model.common.AbstractModelCommonTest)

Example 9 with ValueMetadataType

use of com.evolveum.midpoint.xml.ns._public.common.common_3.ValueMetadataType in project midpoint by Evolveum.

the class CreateTimestampBuiltinMapping method applyForConsolidation.

@Override
public void applyForConsolidation(@NotNull ConsolidationMetadataComputation computation) throws SchemaException {
    List<ValueMetadataType> allValues = ListUtils.union(computation.getNonNegativeValues(), computation.getExistingValues());
    XMLGregorianCalendar earliest = earliestTimestamp(allValues, CREATE_PATH);
    addPropertyRealValue(computation.getOutputMetadataValue(), earliest);
}
Also used : XMLGregorianCalendar(javax.xml.datatype.XMLGregorianCalendar) ValueMetadataType(com.evolveum.midpoint.xml.ns._public.common.common_3.ValueMetadataType)

Example 10 with ValueMetadataType

use of com.evolveum.midpoint.xml.ns._public.common.common_3.ValueMetadataType in project midpoint by Evolveum.

the class AbstractExpressionEvaluator method addInternalOrigin.

/**
 * Adds Internal origin for given prismValue. Assumes that value has no metadata.
 * (Currently does not fill-in actorRef nor channel.)
 */
public void addInternalOrigin(PrismValue value, ExpressionEvaluationContext context) throws SchemaException {
    if (value != null && !value.hasValueMetadata() && context.getValueMetadataComputer() != null) {
        ValueMetadataType metadata = new ValueMetadataType(prismContext).beginProvenance().beginAcquisition().originRef(SystemObjectsType.ORIGIN_INTERNAL.value(), ServiceType.COMPLEX_TYPE).timestamp(XmlTypeConverter.createXMLGregorianCalendar()).<ProvenanceMetadataType>end().end();
        // noinspection unchecked
        value.getValueMetadataAsContainer().add(metadata.asPrismContainerValue());
    }
}
Also used : ValueMetadataType(com.evolveum.midpoint.xml.ns._public.common.common_3.ValueMetadataType)

Aggregations

ValueMetadataType (com.evolveum.midpoint.xml.ns._public.common.common_3.ValueMetadataType)5 XMLGregorianCalendar (javax.xml.datatype.XMLGregorianCalendar)5 ModelExecuteOptions (com.evolveum.midpoint.model.api.ModelExecuteOptions)4 ProgressInformation (com.evolveum.midpoint.model.api.ProgressInformation)4 com.evolveum.midpoint.model.api.context (com.evolveum.midpoint.model.api.context)4 AbstractModelCommonTest (com.evolveum.midpoint.model.common.AbstractModelCommonTest)4 ExpressionEnvironment (com.evolveum.midpoint.model.common.expression.ExpressionEnvironment)4 ExpressionTestUtil (com.evolveum.midpoint.model.common.expression.ExpressionTestUtil)4 ModelExpressionThreadLocalHolder (com.evolveum.midpoint.model.common.expression.ModelExpressionThreadLocalHolder)4 TEST_DIR (com.evolveum.midpoint.model.common.mapping.MappingTestEvaluator.TEST_DIR)4 com.evolveum.midpoint.prism (com.evolveum.midpoint.prism)4 DeltaFactory (com.evolveum.midpoint.prism.delta.DeltaFactory)4 DeltaSetTriple (com.evolveum.midpoint.prism.delta.DeltaSetTriple)4 ObjectDelta (com.evolveum.midpoint.prism.delta.ObjectDelta)4 PrismValueDeltaSetTriple (com.evolveum.midpoint.prism.delta.PrismValueDeltaSetTriple)4 PolyString (com.evolveum.midpoint.prism.polystring.PolyString)4 PrismAsserts (com.evolveum.midpoint.prism.util.PrismAsserts)4 PrismTestUtil (com.evolveum.midpoint.prism.util.PrismTestUtil)4 PrismTestUtil.getPrismContext (com.evolveum.midpoint.prism.util.PrismTestUtil.getPrismContext)4 XmlTypeConverter (com.evolveum.midpoint.prism.xml.XmlTypeConverter)4