private <T> PrismPropertyValue<T> filterValue(PrismPropertyValue<T> propertyValue, List<ValueFilterType> filters) { PrismPropertyValue<T> filteredValue = propertyValue.clone(); filteredValue.setOriginType(OriginType.INBOUND); if (filters == null || filters.isEmpty()) { return filteredValue; } for (ValueFilterType filter : filters) { Filter filterInstance = filterManager.getFilterInstance(filter.getType(), filter.getAny()); filterInstance.apply(filteredValue); } return filteredValue; }
@Test public void testPrismValueContainsRealValue() throws Exception { System.out.println("\n\n===[ testPrismValueContainsRealValue ]===\n"); // GIVEN PrismPropertyValue<String> valFoo1 = new PrismPropertyValueImpl<>("foo"); PrismPropertyValue<String> valBar1 = new PrismPropertyValueImpl<>("bar"); valBar1.setOriginType(OriginType.OUTBOUND); Collection<PrismValue> collection = new ArrayList<>(); collection.add(valFoo1); collection.add(valBar1); PrismPropertyValue<String> valFoo2 = new PrismPropertyValueImpl<>("foo"); PrismPropertyValue<String> valFoo3 = new PrismPropertyValueImpl<>("foo"); valFoo3.setOriginType(OriginType.OUTBOUND); PrismPropertyValue<String> valBar2 = new PrismPropertyValueImpl<>("bar"); valBar2.setOriginType(OriginType.OUTBOUND); PrismPropertyValue<String> valBar3 = new PrismPropertyValueImpl<>("bar"); PrismPropertyValue<String> valBaz = new PrismPropertyValueImpl<>("baz"); // WHEN - THEN assert PrismValueCollectionsUtil.containsRealValue(collection, valFoo1); assert PrismValueCollectionsUtil.containsRealValue(collection, valBar1); assert PrismValueCollectionsUtil.containsRealValue(collection, valFoo2); assert PrismValueCollectionsUtil.containsRealValue(collection, valBar2); assert PrismValueCollectionsUtil.containsRealValue(collection, valFoo3); assert PrismValueCollectionsUtil.containsRealValue(collection, valBar3); assert !PrismValueCollectionsUtil.containsRealValue(collection, valBaz); }
/** * Adds deltas for iteration and iterationToken to the focus if needed. */ private <AH extends AssignmentHolderType> void addIterationTokenDeltas(LensFocusContext<AH> focusContext, int iteration, String iterationToken) throws SchemaException { PrismObject<AH> objectCurrent = focusContext.getObjectCurrent(); if (objectCurrent != null) { Integer iterationOld = objectCurrent.asObjectable().getIteration(); String iterationTokenOld = objectCurrent.asObjectable().getIterationToken(); if (iterationOld != null && iterationOld == iteration && iterationTokenOld != null && iterationTokenOld.equals(iterationToken)) { // Already stored return; } } PrismObjectDefinition<AH> objDef = focusContext.getObjectDefinition(); PrismPropertyValue<Integer> iterationVal = prismContext.itemFactory().createPropertyValue(iteration); iterationVal.setOriginType(OriginType.USER_POLICY); PropertyDelta<Integer> iterationDelta = prismContext.deltaFactory().property().createReplaceDelta(objDef, FocusType.F_ITERATION, iterationVal); focusContext.swallowToSecondaryDelta(iterationDelta); PrismPropertyValue<String> iterationTokenVal = prismContext.itemFactory().createPropertyValue(iterationToken); iterationTokenVal.setOriginType(OriginType.USER_POLICY); PropertyDelta<String> iterationTokenDelta = prismContext.deltaFactory().property().createReplaceDelta(objDef, FocusType.F_ITERATION_TOKEN, iterationTokenVal); focusContext.swallowToSecondaryDelta(iterationTokenDelta); }
/** * Adds deltas for iteration and iterationToken to the shadow if needed. */ private void addIterationTokenDeltas(LensProjectionContext accountContext) throws SchemaException { PrismObject<ShadowType> shadowCurrent = accountContext.getObjectCurrent(); if (shadowCurrent != null) { Integer iterationOld = shadowCurrent.asObjectable().getIteration(); String iterationTokenOld = shadowCurrent.asObjectable().getIterationToken(); if (iterationOld != null && iterationOld == accountContext.getIteration() && iterationTokenOld != null && iterationTokenOld.equals(accountContext.getIterationToken())) { // Already stored return; } } PrismObjectDefinition<ShadowType> shadowDef = prismContext.getSchemaRegistry().findObjectDefinitionByCompileTimeClass(ShadowType.class); PrismPropertyValue<Integer> iterationVal = prismContext.itemFactory().createPropertyValue(accountContext.getIteration()); iterationVal.setOriginType(OriginType.OUTBOUND); PropertyDelta<Integer> iterationDelta = prismContext.deltaFactory().property().createReplaceDelta(shadowDef, ShadowType.F_ITERATION, iterationVal); accountContext.swallowToSecondaryDelta(iterationDelta); PrismPropertyValue<String> iterationTokenVal = prismContext.itemFactory().createPropertyValue(accountContext.getIterationToken()); iterationTokenVal.setOriginType(OriginType.OUTBOUND); PropertyDelta<String> iterationTokenDelta = prismContext.deltaFactory().property().createReplaceDelta(shadowDef, ShadowType.F_ITERATION_TOKEN, iterationTokenVal); accountContext.swallowToSecondaryDelta(iterationTokenDelta); }
/** * MODIFY/add + MODIFY/add */ @Test public void testObjectDeltaUnion01Metadata() throws Exception { final String TEST_NAME="testObjectDeltaUnion01Metadata"; displayTestTitle(TEST_NAME); // GIVEN ObjectDelta<UserType> userDelta1 = PrismTestUtil.getPrismContext().deltaFactory().object() .createModificationAddProperty(UserType.class, USER_FOO_OID, UserType.F_FULL_NAME, PrismTestUtil.createPolyString("baz")); PropertyDelta<PolyString> fullNameDelta2 = getPrismContext().deltaFactory().property().createDelta(UserType.F_FULL_NAME, UserType.class); PrismPropertyValue<PolyString> fullNameValue2 = new PrismPropertyValueImpl<>(PrismTestUtil.createPolyString("baz")); // Set some metadata to spoil usual equals fullNameValue2.setOriginType(OriginType.OUTBOUND); fullNameDelta2.addValueToAdd(fullNameValue2); ObjectDelta<UserType> userDelta2 = PrismTestUtil.getPrismContext().deltaFactory().object() .createModifyDelta(USER_FOO_OID, fullNameDelta2, UserType.class ); // WHEN ObjectDelta<UserType> userDeltaUnion = ObjectDeltaCollectionsUtil.union(userDelta1, userDelta2); // THEN assertUnion01Delta(userDeltaUnion); }
PropertyDelta<String> lifeCycleDelta = propDef.createEmptyDelta(SchemaConstants.PATH_LIFECYCLE_STATE); PrismPropertyValue<String> pval = prismContext.itemFactory().createPropertyValue(lifecycle); pval.setOriginType(OriginType.OUTBOUND); lifeCycleDelta.setValuesToReplace(pval); projCtx.swallowToSecondaryDelta(lifeCycleDelta);