diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/LensFocusContext.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/LensFocusContext.java index 9389e615cc9..c8392eba943 100644 --- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/LensFocusContext.java +++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/LensFocusContext.java @@ -159,12 +159,14 @@ private void addSecondaryDeltas(List> allDeltas) { */ @NotNull public ObjectDeltaObject getObjectDeltaObjectRelative() { - return new ObjectDeltaObject<>(objectCurrent, getCurrentDelta(), objectNew, getObjectDefinition()); + return new ObjectDeltaObject<>(objectCurrent, getCurrentDelta(), objectNew, getObjectDefinition()) + .normalizeValuesToDelete(true); // FIXME temporary solution } @NotNull public ObjectDeltaObject getObjectDeltaObjectAbsolute() { - return new ObjectDeltaObject<>(objectOld, getSummaryDelta(), objectNew, getObjectDefinition()); + return new ObjectDeltaObject<>(objectOld, getSummaryDelta(), objectNew, getObjectDefinition()) + .normalizeValuesToDelete(true); // FIXME temporary solution } // This method may be useful for hooks. E.g. if a hook wants to insert a special secondary delta to avoid diff --git a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/mapping/TestMapping.java b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/mapping/TestMapping.java index 0852d3aacc6..bb091cb43f8 100644 --- a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/mapping/TestMapping.java +++ b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/mapping/TestMapping.java @@ -6,9 +6,12 @@ */ package com.evolveum.midpoint.model.intest.mapping; +import static org.assertj.core.api.Assertions.assertThat; import static org.testng.AssertJUnit.assertNotNull; import java.io.File; +import java.io.FileNotFoundException; +import java.net.ConnectException; import java.util.ArrayList; import java.util.Collection; import java.util.UUID; @@ -32,6 +35,8 @@ import com.evolveum.midpoint.prism.util.PrismTestUtil; import com.evolveum.midpoint.prism.xml.XmlTypeConverter; import com.evolveum.midpoint.schema.constants.SchemaConstants; +import com.evolveum.midpoint.schema.internals.InternalCounters; +import com.evolveum.midpoint.schema.internals.InternalMonitor; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.schema.result.OperationResultStatus; import com.evolveum.midpoint.schema.util.MiscSchemaUtil; @@ -89,6 +94,11 @@ public class TestMapping extends AbstractMappingTest { "resource-dummy-timed.xml", "567d9834-4f2c-4e5b-89a6-ebd804c7d469"); private static final String RESOURCE_DUMMY_TIMED_NAME = "timed"; + private static final TestResource RESOURCE_DUMMY_MEGA_OUTBOUND = new TestResource(TEST_DIR, + "resource-dummy-mega-outbound.xml", "2b1c05f1-8b70-43e6-ac46-3e5ee621ee36"); + private static final String RESOURCE_DUMMY_MEGA_OUTBOUND_NAME = "mega-outbound"; + private static final int MEGA_ATTRIBUTES = 1000; + private static final File ROLE_ANTINIHILIST_FILE = new File(TEST_DIR, "role-antinihilist.xml"); private static final String ROLE_ANTINIHILIST_OID = "4c5c6c44-bd7d-11e7-99ef-9b82464da93d"; @@ -159,6 +169,8 @@ public void initSystem(Task initTask, OperationResult initResult) throws Excepti initDummyResource(RESOURCE_DUMMY_SERVICES_INBOUND_PWD_GENERATE_NAME, RESOURCE_DUMMY_SERVICES_INBOUND_PWD_GENERATE.file, RESOURCE_DUMMY_SERVICES_INBOUND_PWD_GENERATE.oid, initTask, initResult); initDummyResource(RESOURCE_DUMMY_TIMED_NAME, RESOURCE_DUMMY_TIMED.file, RESOURCE_DUMMY_TIMED.oid, initTask, initResult); + dummyResourceCollection.initDummyResource(RESOURCE_DUMMY_MEGA_OUTBOUND_NAME, RESOURCE_DUMMY_MEGA_OUTBOUND.file, + RESOURCE_DUMMY_MEGA_OUTBOUND.oid, this::initMegaResource, initTask, initResult); repoAddObjectFromFile(ROLE_ANTINIHILIST_FILE, initResult); repoAddObjectFromFile(ROLE_BLUE_TITANIC_FILE, initResult); @@ -174,6 +186,14 @@ public void initSystem(Task initTask, OperationResult initResult) throws Excepti // setGlobalTracingOverride(createModelLoggingTracingProfile()); } + private void initMegaResource(DummyResourceContoller controller) throws ConflictException, + FileNotFoundException, SchemaViolationException, InterruptedException, ConnectException { + DummyObjectClass objectClass = controller.getDummyResource().getAccountObjectClass(); + for (int i = 0; i < MEGA_ATTRIBUTES; i++) { + controller.addAttrDef(objectClass, String.format("a-single-%04d", i), String.class, false, false); + } + } + /** * Blue dummy has WEAK mappings. Let's play a bit with that. */ @@ -3170,6 +3190,65 @@ public void test520DeleteUserAssignment() throws Exception { assertAssignments(userAfter, 1); } + /** + * MID-4863 + MID-7057 + */ + @Test + public void test530DeleteAssignmentByIdWithMegaMappings() throws Exception { + given(); + + Task task = getTestTask(); + OperationResult result = getTestOperationResult(); + + InternalMonitor.reset(); + InternalMonitor.setTrace(InternalCounters.PRISM_OBJECT_CLONE_COUNT, true); + + final String userName = "test530"; + UserType user = new UserType(prismContext) + .name(userName) + .beginAssignment() + .targetRef(ROLE_SUPERUSER_OID, RoleType.COMPLEX_TYPE) + .end() + .beginAssignment() + .beginConstruction() + .resourceRef(RESOURCE_DUMMY_MEGA_OUTBOUND.oid, ResourceType.COMPLEX_TYPE) + .end() + .end(); + String oid = addObject(user.asPrismObject(), null, task, result); + + PrismObject userCreated = assertUser(oid, "after creation") + .display() + .assertAssignments(2) + .assertLinks(1, 0) + .getObject(); + DummyAccount account = assertDummyAccount(RESOURCE_DUMMY_MEGA_OUTBOUND_NAME, userName); + assertThat(account.getAttributeValue("a-single-0555")).as("attribute value").isEqualTo(userName); + + when(); + + AssignmentType roleAssignment = findAssignment(userCreated, ROLE_SUPERUSER_OID, SchemaConstants.ORG_DEFAULT); + assertNotNull("role assignment not found", roleAssignment); + PrismContainerValue roleAssignmentIdOnlyPcv = prismContext.itemFactory().createContainerValue(); + roleAssignmentIdOnlyPcv.setId(roleAssignment.getId()); + ObjectDelta delta = prismContext.deltaFor(UserType.class) + .item(UserType.F_ASSIGNMENT).delete(roleAssignmentIdOnlyPcv) + .asObjectDeltaCast(oid); + + rememberCounter(InternalCounters.PRISM_OBJECT_CLONE_COUNT); + executeChanges(delta, null, task, result); + + then(); + assertSuccess(result); + + // we will be happy to get a number significantly lower than ~2000 (2x1000 mappings) + assertCounterIncrement(InternalCounters.PRISM_OBJECT_CLONE_COUNT, 0, 100); + + assertUser(oid, "after assignment deletion") + .display() + .assertAssignments(1) + .assertLinks(1, 0); + } + /** * MID-6025 */ diff --git a/model/model-intest/src/test/resources/mapping/resource-dummy-mega-outbound.xml b/model/model-intest/src/test/resources/mapping/resource-dummy-mega-outbound.xml new file mode 100644 index 00000000000..c266231fc7e --- /dev/null +++ b/model/model-intest/src/test/resources/mapping/resource-dummy-mega-outbound.xml @@ -0,0 +1,8094 @@ + + + + + + mega-outbound + + + + + connectorType + com.evolveum.icf.dummy.connector.DummyConnector + + + connectorVersion + 2.0 + + + + + + + mega-outbound + + + false + false + false + + + + + account + default + Default Account + true + ri:AccountObjectClass + + icfs:name + + + name + + + + + ri:a-single-0000 + + + name + + + + + ri:a-single-0001 + + + name + + + + + ri:a-single-0002 + + + name + + + + + ri:a-single-0003 + + + name + + + + + ri:a-single-0004 + + + name + + + + + ri:a-single-0005 + + + name + + + + + ri:a-single-0006 + + + name + + + + + ri:a-single-0007 + + + name + + + + + ri:a-single-0008 + + + name + + + + + ri:a-single-0009 + + + name + + + + + ri:a-single-0010 + + + name + + + + + ri:a-single-0011 + + + name + + + + + ri:a-single-0012 + + + name + + + + + ri:a-single-0013 + + + name + + + + + ri:a-single-0014 + + + name + + + + + ri:a-single-0015 + + + name + + + + + ri:a-single-0016 + + + name + + + + + ri:a-single-0017 + + + name + + + + + ri:a-single-0018 + + + name + + + + + ri:a-single-0019 + + + name + + + + + ri:a-single-0020 + + + name + + + + + ri:a-single-0021 + + + name + + + + + ri:a-single-0022 + + + name + + + + + ri:a-single-0023 + + + name + + + + + ri:a-single-0024 + + + name + + + + + ri:a-single-0025 + + + name + + + + + ri:a-single-0026 + + + name + + + + + ri:a-single-0027 + + + name + + + + + ri:a-single-0028 + + + name + + + + + ri:a-single-0029 + + + name + + + + + ri:a-single-0030 + + + name + + + + + ri:a-single-0031 + + + name + + + + + ri:a-single-0032 + + + name + + + + + ri:a-single-0033 + + + name + + + + + ri:a-single-0034 + + + name + + + + + ri:a-single-0035 + + + name + + + + + ri:a-single-0036 + + + name + + + + + ri:a-single-0037 + + + name + + + + + ri:a-single-0038 + + + name + + + + + ri:a-single-0039 + + + name + + + + + ri:a-single-0040 + + + name + + + + + ri:a-single-0041 + + + name + + + + + ri:a-single-0042 + + + name + + + + + ri:a-single-0043 + + + name + + + + + ri:a-single-0044 + + + name + + + + + ri:a-single-0045 + + + name + + + + + ri:a-single-0046 + + + name + + + + + ri:a-single-0047 + + + name + + + + + ri:a-single-0048 + + + name + + + + + ri:a-single-0049 + + + name + + + + + ri:a-single-0050 + + + name + + + + + ri:a-single-0051 + + + name + + + + + ri:a-single-0052 + + + name + + + + + ri:a-single-0053 + + + name + + + + + ri:a-single-0054 + + + name + + + + + ri:a-single-0055 + + + name + + + + + ri:a-single-0056 + + + name + + + + + ri:a-single-0057 + + + name + + + + + ri:a-single-0058 + + + name + + + + + ri:a-single-0059 + + + name + + + + + ri:a-single-0060 + + + name + + + + + ri:a-single-0061 + + + name + + + + + ri:a-single-0062 + + + name + + + + + ri:a-single-0063 + + + name + + + + + ri:a-single-0064 + + + name + + + + + ri:a-single-0065 + + + name + + + + + ri:a-single-0066 + + + name + + + + + ri:a-single-0067 + + + name + + + + + ri:a-single-0068 + + + name + + + + + ri:a-single-0069 + + + name + + + + + ri:a-single-0070 + + + name + + + + + ri:a-single-0071 + + + name + + + + + ri:a-single-0072 + + + name + + + + + ri:a-single-0073 + + + name + + + + + ri:a-single-0074 + + + name + + + + + ri:a-single-0075 + + + name + + + + + ri:a-single-0076 + + + name + + + + + ri:a-single-0077 + + + name + + + + + ri:a-single-0078 + + + name + + + + + ri:a-single-0079 + + + name + + + + + ri:a-single-0080 + + + name + + + + + ri:a-single-0081 + + + name + + + + + ri:a-single-0082 + + + name + + + + + ri:a-single-0083 + + + name + + + + + ri:a-single-0084 + + + name + + + + + ri:a-single-0085 + + + name + + + + + ri:a-single-0086 + + + name + + + + + ri:a-single-0087 + + + name + + + + + ri:a-single-0088 + + + name + + + + + ri:a-single-0089 + + + name + + + + + ri:a-single-0090 + + + name + + + + + ri:a-single-0091 + + + name + + + + + ri:a-single-0092 + + + name + + + + + ri:a-single-0093 + + + name + + + + + ri:a-single-0094 + + + name + + + + + ri:a-single-0095 + + + name + + + + + ri:a-single-0096 + + + name + + + + + ri:a-single-0097 + + + name + + + + + ri:a-single-0098 + + + name + + + + + ri:a-single-0099 + + + name + + + + + ri:a-single-0100 + + + name + + + + + ri:a-single-0101 + + + name + + + + + ri:a-single-0102 + + + name + + + + + ri:a-single-0103 + + + name + + + + + ri:a-single-0104 + + + name + + + + + ri:a-single-0105 + + + name + + + + + ri:a-single-0106 + + + name + + + + + ri:a-single-0107 + + + name + + + + + ri:a-single-0108 + + + name + + + + + ri:a-single-0109 + + + name + + + + + ri:a-single-0110 + + + name + + + + + ri:a-single-0111 + + + name + + + + + ri:a-single-0112 + + + name + + + + + ri:a-single-0113 + + + name + + + + + ri:a-single-0114 + + + name + + + + + ri:a-single-0115 + + + name + + + + + ri:a-single-0116 + + + name + + + + + ri:a-single-0117 + + + name + + + + + ri:a-single-0118 + + + name + + + + + ri:a-single-0119 + + + name + + + + + ri:a-single-0120 + + + name + + + + + ri:a-single-0121 + + + name + + + + + ri:a-single-0122 + + + name + + + + + ri:a-single-0123 + + + name + + + + + ri:a-single-0124 + + + name + + + + + ri:a-single-0125 + + + name + + + + + ri:a-single-0126 + + + name + + + + + ri:a-single-0127 + + + name + + + + + ri:a-single-0128 + + + name + + + + + ri:a-single-0129 + + + name + + + + + ri:a-single-0130 + + + name + + + + + ri:a-single-0131 + + + name + + + + + ri:a-single-0132 + + + name + + + + + ri:a-single-0133 + + + name + + + + + ri:a-single-0134 + + + name + + + + + ri:a-single-0135 + + + name + + + + + ri:a-single-0136 + + + name + + + + + ri:a-single-0137 + + + name + + + + + ri:a-single-0138 + + + name + + + + + ri:a-single-0139 + + + name + + + + + ri:a-single-0140 + + + name + + + + + ri:a-single-0141 + + + name + + + + + ri:a-single-0142 + + + name + + + + + ri:a-single-0143 + + + name + + + + + ri:a-single-0144 + + + name + + + + + ri:a-single-0145 + + + name + + + + + ri:a-single-0146 + + + name + + + + + ri:a-single-0147 + + + name + + + + + ri:a-single-0148 + + + name + + + + + ri:a-single-0149 + + + name + + + + + ri:a-single-0150 + + + name + + + + + ri:a-single-0151 + + + name + + + + + ri:a-single-0152 + + + name + + + + + ri:a-single-0153 + + + name + + + + + ri:a-single-0154 + + + name + + + + + ri:a-single-0155 + + + name + + + + + ri:a-single-0156 + + + name + + + + + ri:a-single-0157 + + + name + + + + + ri:a-single-0158 + + + name + + + + + ri:a-single-0159 + + + name + + + + + ri:a-single-0160 + + + name + + + + + ri:a-single-0161 + + + name + + + + + ri:a-single-0162 + + + name + + + + + ri:a-single-0163 + + + name + + + + + ri:a-single-0164 + + + name + + + + + ri:a-single-0165 + + + name + + + + + ri:a-single-0166 + + + name + + + + + ri:a-single-0167 + + + name + + + + + ri:a-single-0168 + + + name + + + + + ri:a-single-0169 + + + name + + + + + ri:a-single-0170 + + + name + + + + + ri:a-single-0171 + + + name + + + + + ri:a-single-0172 + + + name + + + + + ri:a-single-0173 + + + name + + + + + ri:a-single-0174 + + + name + + + + + ri:a-single-0175 + + + name + + + + + ri:a-single-0176 + + + name + + + + + ri:a-single-0177 + + + name + + + + + ri:a-single-0178 + + + name + + + + + ri:a-single-0179 + + + name + + + + + ri:a-single-0180 + + + name + + + + + ri:a-single-0181 + + + name + + + + + ri:a-single-0182 + + + name + + + + + ri:a-single-0183 + + + name + + + + + ri:a-single-0184 + + + name + + + + + ri:a-single-0185 + + + name + + + + + ri:a-single-0186 + + + name + + + + + ri:a-single-0187 + + + name + + + + + ri:a-single-0188 + + + name + + + + + ri:a-single-0189 + + + name + + + + + ri:a-single-0190 + + + name + + + + + ri:a-single-0191 + + + name + + + + + ri:a-single-0192 + + + name + + + + + ri:a-single-0193 + + + name + + + + + ri:a-single-0194 + + + name + + + + + ri:a-single-0195 + + + name + + + + + ri:a-single-0196 + + + name + + + + + ri:a-single-0197 + + + name + + + + + ri:a-single-0198 + + + name + + + + + ri:a-single-0199 + + + name + + + + + ri:a-single-0200 + + + name + + + + + ri:a-single-0201 + + + name + + + + + ri:a-single-0202 + + + name + + + + + ri:a-single-0203 + + + name + + + + + ri:a-single-0204 + + + name + + + + + ri:a-single-0205 + + + name + + + + + ri:a-single-0206 + + + name + + + + + ri:a-single-0207 + + + name + + + + + ri:a-single-0208 + + + name + + + + + ri:a-single-0209 + + + name + + + + + ri:a-single-0210 + + + name + + + + + ri:a-single-0211 + + + name + + + + + ri:a-single-0212 + + + name + + + + + ri:a-single-0213 + + + name + + + + + ri:a-single-0214 + + + name + + + + + ri:a-single-0215 + + + name + + + + + ri:a-single-0216 + + + name + + + + + ri:a-single-0217 + + + name + + + + + ri:a-single-0218 + + + name + + + + + ri:a-single-0219 + + + name + + + + + ri:a-single-0220 + + + name + + + + + ri:a-single-0221 + + + name + + + + + ri:a-single-0222 + + + name + + + + + ri:a-single-0223 + + + name + + + + + ri:a-single-0224 + + + name + + + + + ri:a-single-0225 + + + name + + + + + ri:a-single-0226 + + + name + + + + + ri:a-single-0227 + + + name + + + + + ri:a-single-0228 + + + name + + + + + ri:a-single-0229 + + + name + + + + + ri:a-single-0230 + + + name + + + + + ri:a-single-0231 + + + name + + + + + ri:a-single-0232 + + + name + + + + + ri:a-single-0233 + + + name + + + + + ri:a-single-0234 + + + name + + + + + ri:a-single-0235 + + + name + + + + + ri:a-single-0236 + + + name + + + + + ri:a-single-0237 + + + name + + + + + ri:a-single-0238 + + + name + + + + + ri:a-single-0239 + + + name + + + + + ri:a-single-0240 + + + name + + + + + ri:a-single-0241 + + + name + + + + + ri:a-single-0242 + + + name + + + + + ri:a-single-0243 + + + name + + + + + ri:a-single-0244 + + + name + + + + + ri:a-single-0245 + + + name + + + + + ri:a-single-0246 + + + name + + + + + ri:a-single-0247 + + + name + + + + + ri:a-single-0248 + + + name + + + + + ri:a-single-0249 + + + name + + + + + ri:a-single-0250 + + + name + + + + + ri:a-single-0251 + + + name + + + + + ri:a-single-0252 + + + name + + + + + ri:a-single-0253 + + + name + + + + + ri:a-single-0254 + + + name + + + + + ri:a-single-0255 + + + name + + + + + ri:a-single-0256 + + + name + + + + + ri:a-single-0257 + + + name + + + + + ri:a-single-0258 + + + name + + + + + ri:a-single-0259 + + + name + + + + + ri:a-single-0260 + + + name + + + + + ri:a-single-0261 + + + name + + + + + ri:a-single-0262 + + + name + + + + + ri:a-single-0263 + + + name + + + + + ri:a-single-0264 + + + name + + + + + ri:a-single-0265 + + + name + + + + + ri:a-single-0266 + + + name + + + + + ri:a-single-0267 + + + name + + + + + ri:a-single-0268 + + + name + + + + + ri:a-single-0269 + + + name + + + + + ri:a-single-0270 + + + name + + + + + ri:a-single-0271 + + + name + + + + + ri:a-single-0272 + + + name + + + + + ri:a-single-0273 + + + name + + + + + ri:a-single-0274 + + + name + + + + + ri:a-single-0275 + + + name + + + + + ri:a-single-0276 + + + name + + + + + ri:a-single-0277 + + + name + + + + + ri:a-single-0278 + + + name + + + + + ri:a-single-0279 + + + name + + + + + ri:a-single-0280 + + + name + + + + + ri:a-single-0281 + + + name + + + + + ri:a-single-0282 + + + name + + + + + ri:a-single-0283 + + + name + + + + + ri:a-single-0284 + + + name + + + + + ri:a-single-0285 + + + name + + + + + ri:a-single-0286 + + + name + + + + + ri:a-single-0287 + + + name + + + + + ri:a-single-0288 + + + name + + + + + ri:a-single-0289 + + + name + + + + + ri:a-single-0290 + + + name + + + + + ri:a-single-0291 + + + name + + + + + ri:a-single-0292 + + + name + + + + + ri:a-single-0293 + + + name + + + + + ri:a-single-0294 + + + name + + + + + ri:a-single-0295 + + + name + + + + + ri:a-single-0296 + + + name + + + + + ri:a-single-0297 + + + name + + + + + ri:a-single-0298 + + + name + + + + + ri:a-single-0299 + + + name + + + + + ri:a-single-0300 + + + name + + + + + ri:a-single-0301 + + + name + + + + + ri:a-single-0302 + + + name + + + + + ri:a-single-0303 + + + name + + + + + ri:a-single-0304 + + + name + + + + + ri:a-single-0305 + + + name + + + + + ri:a-single-0306 + + + name + + + + + ri:a-single-0307 + + + name + + + + + ri:a-single-0308 + + + name + + + + + ri:a-single-0309 + + + name + + + + + ri:a-single-0310 + + + name + + + + + ri:a-single-0311 + + + name + + + + + ri:a-single-0312 + + + name + + + + + ri:a-single-0313 + + + name + + + + + ri:a-single-0314 + + + name + + + + + ri:a-single-0315 + + + name + + + + + ri:a-single-0316 + + + name + + + + + ri:a-single-0317 + + + name + + + + + ri:a-single-0318 + + + name + + + + + ri:a-single-0319 + + + name + + + + + ri:a-single-0320 + + + name + + + + + ri:a-single-0321 + + + name + + + + + ri:a-single-0322 + + + name + + + + + ri:a-single-0323 + + + name + + + + + ri:a-single-0324 + + + name + + + + + ri:a-single-0325 + + + name + + + + + ri:a-single-0326 + + + name + + + + + ri:a-single-0327 + + + name + + + + + ri:a-single-0328 + + + name + + + + + ri:a-single-0329 + + + name + + + + + ri:a-single-0330 + + + name + + + + + ri:a-single-0331 + + + name + + + + + ri:a-single-0332 + + + name + + + + + ri:a-single-0333 + + + name + + + + + ri:a-single-0334 + + + name + + + + + ri:a-single-0335 + + + name + + + + + ri:a-single-0336 + + + name + + + + + ri:a-single-0337 + + + name + + + + + ri:a-single-0338 + + + name + + + + + ri:a-single-0339 + + + name + + + + + ri:a-single-0340 + + + name + + + + + ri:a-single-0341 + + + name + + + + + ri:a-single-0342 + + + name + + + + + ri:a-single-0343 + + + name + + + + + ri:a-single-0344 + + + name + + + + + ri:a-single-0345 + + + name + + + + + ri:a-single-0346 + + + name + + + + + ri:a-single-0347 + + + name + + + + + ri:a-single-0348 + + + name + + + + + ri:a-single-0349 + + + name + + + + + ri:a-single-0350 + + + name + + + + + ri:a-single-0351 + + + name + + + + + ri:a-single-0352 + + + name + + + + + ri:a-single-0353 + + + name + + + + + ri:a-single-0354 + + + name + + + + + ri:a-single-0355 + + + name + + + + + ri:a-single-0356 + + + name + + + + + ri:a-single-0357 + + + name + + + + + ri:a-single-0358 + + + name + + + + + ri:a-single-0359 + + + name + + + + + ri:a-single-0360 + + + name + + + + + ri:a-single-0361 + + + name + + + + + ri:a-single-0362 + + + name + + + + + ri:a-single-0363 + + + name + + + + + ri:a-single-0364 + + + name + + + + + ri:a-single-0365 + + + name + + + + + ri:a-single-0366 + + + name + + + + + ri:a-single-0367 + + + name + + + + + ri:a-single-0368 + + + name + + + + + ri:a-single-0369 + + + name + + + + + ri:a-single-0370 + + + name + + + + + ri:a-single-0371 + + + name + + + + + ri:a-single-0372 + + + name + + + + + ri:a-single-0373 + + + name + + + + + ri:a-single-0374 + + + name + + + + + ri:a-single-0375 + + + name + + + + + ri:a-single-0376 + + + name + + + + + ri:a-single-0377 + + + name + + + + + ri:a-single-0378 + + + name + + + + + ri:a-single-0379 + + + name + + + + + ri:a-single-0380 + + + name + + + + + ri:a-single-0381 + + + name + + + + + ri:a-single-0382 + + + name + + + + + ri:a-single-0383 + + + name + + + + + ri:a-single-0384 + + + name + + + + + ri:a-single-0385 + + + name + + + + + ri:a-single-0386 + + + name + + + + + ri:a-single-0387 + + + name + + + + + ri:a-single-0388 + + + name + + + + + ri:a-single-0389 + + + name + + + + + ri:a-single-0390 + + + name + + + + + ri:a-single-0391 + + + name + + + + + ri:a-single-0392 + + + name + + + + + ri:a-single-0393 + + + name + + + + + ri:a-single-0394 + + + name + + + + + ri:a-single-0395 + + + name + + + + + ri:a-single-0396 + + + name + + + + + ri:a-single-0397 + + + name + + + + + ri:a-single-0398 + + + name + + + + + ri:a-single-0399 + + + name + + + + + ri:a-single-0400 + + + name + + + + + ri:a-single-0401 + + + name + + + + + ri:a-single-0402 + + + name + + + + + ri:a-single-0403 + + + name + + + + + ri:a-single-0404 + + + name + + + + + ri:a-single-0405 + + + name + + + + + ri:a-single-0406 + + + name + + + + + ri:a-single-0407 + + + name + + + + + ri:a-single-0408 + + + name + + + + + ri:a-single-0409 + + + name + + + + + ri:a-single-0410 + + + name + + + + + ri:a-single-0411 + + + name + + + + + ri:a-single-0412 + + + name + + + + + ri:a-single-0413 + + + name + + + + + ri:a-single-0414 + + + name + + + + + ri:a-single-0415 + + + name + + + + + ri:a-single-0416 + + + name + + + + + ri:a-single-0417 + + + name + + + + + ri:a-single-0418 + + + name + + + + + ri:a-single-0419 + + + name + + + + + ri:a-single-0420 + + + name + + + + + ri:a-single-0421 + + + name + + + + + ri:a-single-0422 + + + name + + + + + ri:a-single-0423 + + + name + + + + + ri:a-single-0424 + + + name + + + + + ri:a-single-0425 + + + name + + + + + ri:a-single-0426 + + + name + + + + + ri:a-single-0427 + + + name + + + + + ri:a-single-0428 + + + name + + + + + ri:a-single-0429 + + + name + + + + + ri:a-single-0430 + + + name + + + + + ri:a-single-0431 + + + name + + + + + ri:a-single-0432 + + + name + + + + + ri:a-single-0433 + + + name + + + + + ri:a-single-0434 + + + name + + + + + ri:a-single-0435 + + + name + + + + + ri:a-single-0436 + + + name + + + + + ri:a-single-0437 + + + name + + + + + ri:a-single-0438 + + + name + + + + + ri:a-single-0439 + + + name + + + + + ri:a-single-0440 + + + name + + + + + ri:a-single-0441 + + + name + + + + + ri:a-single-0442 + + + name + + + + + ri:a-single-0443 + + + name + + + + + ri:a-single-0444 + + + name + + + + + ri:a-single-0445 + + + name + + + + + ri:a-single-0446 + + + name + + + + + ri:a-single-0447 + + + name + + + + + ri:a-single-0448 + + + name + + + + + ri:a-single-0449 + + + name + + + + + ri:a-single-0450 + + + name + + + + + ri:a-single-0451 + + + name + + + + + ri:a-single-0452 + + + name + + + + + ri:a-single-0453 + + + name + + + + + ri:a-single-0454 + + + name + + + + + ri:a-single-0455 + + + name + + + + + ri:a-single-0456 + + + name + + + + + ri:a-single-0457 + + + name + + + + + ri:a-single-0458 + + + name + + + + + ri:a-single-0459 + + + name + + + + + ri:a-single-0460 + + + name + + + + + ri:a-single-0461 + + + name + + + + + ri:a-single-0462 + + + name + + + + + ri:a-single-0463 + + + name + + + + + ri:a-single-0464 + + + name + + + + + ri:a-single-0465 + + + name + + + + + ri:a-single-0466 + + + name + + + + + ri:a-single-0467 + + + name + + + + + ri:a-single-0468 + + + name + + + + + ri:a-single-0469 + + + name + + + + + ri:a-single-0470 + + + name + + + + + ri:a-single-0471 + + + name + + + + + ri:a-single-0472 + + + name + + + + + ri:a-single-0473 + + + name + + + + + ri:a-single-0474 + + + name + + + + + ri:a-single-0475 + + + name + + + + + ri:a-single-0476 + + + name + + + + + ri:a-single-0477 + + + name + + + + + ri:a-single-0478 + + + name + + + + + ri:a-single-0479 + + + name + + + + + ri:a-single-0480 + + + name + + + + + ri:a-single-0481 + + + name + + + + + ri:a-single-0482 + + + name + + + + + ri:a-single-0483 + + + name + + + + + ri:a-single-0484 + + + name + + + + + ri:a-single-0485 + + + name + + + + + ri:a-single-0486 + + + name + + + + + ri:a-single-0487 + + + name + + + + + ri:a-single-0488 + + + name + + + + + ri:a-single-0489 + + + name + + + + + ri:a-single-0490 + + + name + + + + + ri:a-single-0491 + + + name + + + + + ri:a-single-0492 + + + name + + + + + ri:a-single-0493 + + + name + + + + + ri:a-single-0494 + + + name + + + + + ri:a-single-0495 + + + name + + + + + ri:a-single-0496 + + + name + + + + + ri:a-single-0497 + + + name + + + + + ri:a-single-0498 + + + name + + + + + ri:a-single-0499 + + + name + + + + + ri:a-single-0500 + + + name + + + + + ri:a-single-0501 + + + name + + + + + ri:a-single-0502 + + + name + + + + + ri:a-single-0503 + + + name + + + + + ri:a-single-0504 + + + name + + + + + ri:a-single-0505 + + + name + + + + + ri:a-single-0506 + + + name + + + + + ri:a-single-0507 + + + name + + + + + ri:a-single-0508 + + + name + + + + + ri:a-single-0509 + + + name + + + + + ri:a-single-0510 + + + name + + + + + ri:a-single-0511 + + + name + + + + + ri:a-single-0512 + + + name + + + + + ri:a-single-0513 + + + name + + + + + ri:a-single-0514 + + + name + + + + + ri:a-single-0515 + + + name + + + + + ri:a-single-0516 + + + name + + + + + ri:a-single-0517 + + + name + + + + + ri:a-single-0518 + + + name + + + + + ri:a-single-0519 + + + name + + + + + ri:a-single-0520 + + + name + + + + + ri:a-single-0521 + + + name + + + + + ri:a-single-0522 + + + name + + + + + ri:a-single-0523 + + + name + + + + + ri:a-single-0524 + + + name + + + + + ri:a-single-0525 + + + name + + + + + ri:a-single-0526 + + + name + + + + + ri:a-single-0527 + + + name + + + + + ri:a-single-0528 + + + name + + + + + ri:a-single-0529 + + + name + + + + + ri:a-single-0530 + + + name + + + + + ri:a-single-0531 + + + name + + + + + ri:a-single-0532 + + + name + + + + + ri:a-single-0533 + + + name + + + + + ri:a-single-0534 + + + name + + + + + ri:a-single-0535 + + + name + + + + + ri:a-single-0536 + + + name + + + + + ri:a-single-0537 + + + name + + + + + ri:a-single-0538 + + + name + + + + + ri:a-single-0539 + + + name + + + + + ri:a-single-0540 + + + name + + + + + ri:a-single-0541 + + + name + + + + + ri:a-single-0542 + + + name + + + + + ri:a-single-0543 + + + name + + + + + ri:a-single-0544 + + + name + + + + + ri:a-single-0545 + + + name + + + + + ri:a-single-0546 + + + name + + + + + ri:a-single-0547 + + + name + + + + + ri:a-single-0548 + + + name + + + + + ri:a-single-0549 + + + name + + + + + ri:a-single-0550 + + + name + + + + + ri:a-single-0551 + + + name + + + + + ri:a-single-0552 + + + name + + + + + ri:a-single-0553 + + + name + + + + + ri:a-single-0554 + + + name + + + + + ri:a-single-0555 + + + name + + + + + ri:a-single-0556 + + + name + + + + + ri:a-single-0557 + + + name + + + + + ri:a-single-0558 + + + name + + + + + ri:a-single-0559 + + + name + + + + + ri:a-single-0560 + + + name + + + + + ri:a-single-0561 + + + name + + + + + ri:a-single-0562 + + + name + + + + + ri:a-single-0563 + + + name + + + + + ri:a-single-0564 + + + name + + + + + ri:a-single-0565 + + + name + + + + + ri:a-single-0566 + + + name + + + + + ri:a-single-0567 + + + name + + + + + ri:a-single-0568 + + + name + + + + + ri:a-single-0569 + + + name + + + + + ri:a-single-0570 + + + name + + + + + ri:a-single-0571 + + + name + + + + + ri:a-single-0572 + + + name + + + + + ri:a-single-0573 + + + name + + + + + ri:a-single-0574 + + + name + + + + + ri:a-single-0575 + + + name + + + + + ri:a-single-0576 + + + name + + + + + ri:a-single-0577 + + + name + + + + + ri:a-single-0578 + + + name + + + + + ri:a-single-0579 + + + name + + + + + ri:a-single-0580 + + + name + + + + + ri:a-single-0581 + + + name + + + + + ri:a-single-0582 + + + name + + + + + ri:a-single-0583 + + + name + + + + + ri:a-single-0584 + + + name + + + + + ri:a-single-0585 + + + name + + + + + ri:a-single-0586 + + + name + + + + + ri:a-single-0587 + + + name + + + + + ri:a-single-0588 + + + name + + + + + ri:a-single-0589 + + + name + + + + + ri:a-single-0590 + + + name + + + + + ri:a-single-0591 + + + name + + + + + ri:a-single-0592 + + + name + + + + + ri:a-single-0593 + + + name + + + + + ri:a-single-0594 + + + name + + + + + ri:a-single-0595 + + + name + + + + + ri:a-single-0596 + + + name + + + + + ri:a-single-0597 + + + name + + + + + ri:a-single-0598 + + + name + + + + + ri:a-single-0599 + + + name + + + + + ri:a-single-0600 + + + name + + + + + ri:a-single-0601 + + + name + + + + + ri:a-single-0602 + + + name + + + + + ri:a-single-0603 + + + name + + + + + ri:a-single-0604 + + + name + + + + + ri:a-single-0605 + + + name + + + + + ri:a-single-0606 + + + name + + + + + ri:a-single-0607 + + + name + + + + + ri:a-single-0608 + + + name + + + + + ri:a-single-0609 + + + name + + + + + ri:a-single-0610 + + + name + + + + + ri:a-single-0611 + + + name + + + + + ri:a-single-0612 + + + name + + + + + ri:a-single-0613 + + + name + + + + + ri:a-single-0614 + + + name + + + + + ri:a-single-0615 + + + name + + + + + ri:a-single-0616 + + + name + + + + + ri:a-single-0617 + + + name + + + + + ri:a-single-0618 + + + name + + + + + ri:a-single-0619 + + + name + + + + + ri:a-single-0620 + + + name + + + + + ri:a-single-0621 + + + name + + + + + ri:a-single-0622 + + + name + + + + + ri:a-single-0623 + + + name + + + + + ri:a-single-0624 + + + name + + + + + ri:a-single-0625 + + + name + + + + + ri:a-single-0626 + + + name + + + + + ri:a-single-0627 + + + name + + + + + ri:a-single-0628 + + + name + + + + + ri:a-single-0629 + + + name + + + + + ri:a-single-0630 + + + name + + + + + ri:a-single-0631 + + + name + + + + + ri:a-single-0632 + + + name + + + + + ri:a-single-0633 + + + name + + + + + ri:a-single-0634 + + + name + + + + + ri:a-single-0635 + + + name + + + + + ri:a-single-0636 + + + name + + + + + ri:a-single-0637 + + + name + + + + + ri:a-single-0638 + + + name + + + + + ri:a-single-0639 + + + name + + + + + ri:a-single-0640 + + + name + + + + + ri:a-single-0641 + + + name + + + + + ri:a-single-0642 + + + name + + + + + ri:a-single-0643 + + + name + + + + + ri:a-single-0644 + + + name + + + + + ri:a-single-0645 + + + name + + + + + ri:a-single-0646 + + + name + + + + + ri:a-single-0647 + + + name + + + + + ri:a-single-0648 + + + name + + + + + ri:a-single-0649 + + + name + + + + + ri:a-single-0650 + + + name + + + + + ri:a-single-0651 + + + name + + + + + ri:a-single-0652 + + + name + + + + + ri:a-single-0653 + + + name + + + + + ri:a-single-0654 + + + name + + + + + ri:a-single-0655 + + + name + + + + + ri:a-single-0656 + + + name + + + + + ri:a-single-0657 + + + name + + + + + ri:a-single-0658 + + + name + + + + + ri:a-single-0659 + + + name + + + + + ri:a-single-0660 + + + name + + + + + ri:a-single-0661 + + + name + + + + + ri:a-single-0662 + + + name + + + + + ri:a-single-0663 + + + name + + + + + ri:a-single-0664 + + + name + + + + + ri:a-single-0665 + + + name + + + + + ri:a-single-0666 + + + name + + + + + ri:a-single-0667 + + + name + + + + + ri:a-single-0668 + + + name + + + + + ri:a-single-0669 + + + name + + + + + ri:a-single-0670 + + + name + + + + + ri:a-single-0671 + + + name + + + + + ri:a-single-0672 + + + name + + + + + ri:a-single-0673 + + + name + + + + + ri:a-single-0674 + + + name + + + + + ri:a-single-0675 + + + name + + + + + ri:a-single-0676 + + + name + + + + + ri:a-single-0677 + + + name + + + + + ri:a-single-0678 + + + name + + + + + ri:a-single-0679 + + + name + + + + + ri:a-single-0680 + + + name + + + + + ri:a-single-0681 + + + name + + + + + ri:a-single-0682 + + + name + + + + + ri:a-single-0683 + + + name + + + + + ri:a-single-0684 + + + name + + + + + ri:a-single-0685 + + + name + + + + + ri:a-single-0686 + + + name + + + + + ri:a-single-0687 + + + name + + + + + ri:a-single-0688 + + + name + + + + + ri:a-single-0689 + + + name + + + + + ri:a-single-0690 + + + name + + + + + ri:a-single-0691 + + + name + + + + + ri:a-single-0692 + + + name + + + + + ri:a-single-0693 + + + name + + + + + ri:a-single-0694 + + + name + + + + + ri:a-single-0695 + + + name + + + + + ri:a-single-0696 + + + name + + + + + ri:a-single-0697 + + + name + + + + + ri:a-single-0698 + + + name + + + + + ri:a-single-0699 + + + name + + + + + ri:a-single-0700 + + + name + + + + + ri:a-single-0701 + + + name + + + + + ri:a-single-0702 + + + name + + + + + ri:a-single-0703 + + + name + + + + + ri:a-single-0704 + + + name + + + + + ri:a-single-0705 + + + name + + + + + ri:a-single-0706 + + + name + + + + + ri:a-single-0707 + + + name + + + + + ri:a-single-0708 + + + name + + + + + ri:a-single-0709 + + + name + + + + + ri:a-single-0710 + + + name + + + + + ri:a-single-0711 + + + name + + + + + ri:a-single-0712 + + + name + + + + + ri:a-single-0713 + + + name + + + + + ri:a-single-0714 + + + name + + + + + ri:a-single-0715 + + + name + + + + + ri:a-single-0716 + + + name + + + + + ri:a-single-0717 + + + name + + + + + ri:a-single-0718 + + + name + + + + + ri:a-single-0719 + + + name + + + + + ri:a-single-0720 + + + name + + + + + ri:a-single-0721 + + + name + + + + + ri:a-single-0722 + + + name + + + + + ri:a-single-0723 + + + name + + + + + ri:a-single-0724 + + + name + + + + + ri:a-single-0725 + + + name + + + + + ri:a-single-0726 + + + name + + + + + ri:a-single-0727 + + + name + + + + + ri:a-single-0728 + + + name + + + + + ri:a-single-0729 + + + name + + + + + ri:a-single-0730 + + + name + + + + + ri:a-single-0731 + + + name + + + + + ri:a-single-0732 + + + name + + + + + ri:a-single-0733 + + + name + + + + + ri:a-single-0734 + + + name + + + + + ri:a-single-0735 + + + name + + + + + ri:a-single-0736 + + + name + + + + + ri:a-single-0737 + + + name + + + + + ri:a-single-0738 + + + name + + + + + ri:a-single-0739 + + + name + + + + + ri:a-single-0740 + + + name + + + + + ri:a-single-0741 + + + name + + + + + ri:a-single-0742 + + + name + + + + + ri:a-single-0743 + + + name + + + + + ri:a-single-0744 + + + name + + + + + ri:a-single-0745 + + + name + + + + + ri:a-single-0746 + + + name + + + + + ri:a-single-0747 + + + name + + + + + ri:a-single-0748 + + + name + + + + + ri:a-single-0749 + + + name + + + + + ri:a-single-0750 + + + name + + + + + ri:a-single-0751 + + + name + + + + + ri:a-single-0752 + + + name + + + + + ri:a-single-0753 + + + name + + + + + ri:a-single-0754 + + + name + + + + + ri:a-single-0755 + + + name + + + + + ri:a-single-0756 + + + name + + + + + ri:a-single-0757 + + + name + + + + + ri:a-single-0758 + + + name + + + + + ri:a-single-0759 + + + name + + + + + ri:a-single-0760 + + + name + + + + + ri:a-single-0761 + + + name + + + + + ri:a-single-0762 + + + name + + + + + ri:a-single-0763 + + + name + + + + + ri:a-single-0764 + + + name + + + + + ri:a-single-0765 + + + name + + + + + ri:a-single-0766 + + + name + + + + + ri:a-single-0767 + + + name + + + + + ri:a-single-0768 + + + name + + + + + ri:a-single-0769 + + + name + + + + + ri:a-single-0770 + + + name + + + + + ri:a-single-0771 + + + name + + + + + ri:a-single-0772 + + + name + + + + + ri:a-single-0773 + + + name + + + + + ri:a-single-0774 + + + name + + + + + ri:a-single-0775 + + + name + + + + + ri:a-single-0776 + + + name + + + + + ri:a-single-0777 + + + name + + + + + ri:a-single-0778 + + + name + + + + + ri:a-single-0779 + + + name + + + + + ri:a-single-0780 + + + name + + + + + ri:a-single-0781 + + + name + + + + + ri:a-single-0782 + + + name + + + + + ri:a-single-0783 + + + name + + + + + ri:a-single-0784 + + + name + + + + + ri:a-single-0785 + + + name + + + + + ri:a-single-0786 + + + name + + + + + ri:a-single-0787 + + + name + + + + + ri:a-single-0788 + + + name + + + + + ri:a-single-0789 + + + name + + + + + ri:a-single-0790 + + + name + + + + + ri:a-single-0791 + + + name + + + + + ri:a-single-0792 + + + name + + + + + ri:a-single-0793 + + + name + + + + + ri:a-single-0794 + + + name + + + + + ri:a-single-0795 + + + name + + + + + ri:a-single-0796 + + + name + + + + + ri:a-single-0797 + + + name + + + + + ri:a-single-0798 + + + name + + + + + ri:a-single-0799 + + + name + + + + + ri:a-single-0800 + + + name + + + + + ri:a-single-0801 + + + name + + + + + ri:a-single-0802 + + + name + + + + + ri:a-single-0803 + + + name + + + + + ri:a-single-0804 + + + name + + + + + ri:a-single-0805 + + + name + + + + + ri:a-single-0806 + + + name + + + + + ri:a-single-0807 + + + name + + + + + ri:a-single-0808 + + + name + + + + + ri:a-single-0809 + + + name + + + + + ri:a-single-0810 + + + name + + + + + ri:a-single-0811 + + + name + + + + + ri:a-single-0812 + + + name + + + + + ri:a-single-0813 + + + name + + + + + ri:a-single-0814 + + + name + + + + + ri:a-single-0815 + + + name + + + + + ri:a-single-0816 + + + name + + + + + ri:a-single-0817 + + + name + + + + + ri:a-single-0818 + + + name + + + + + ri:a-single-0819 + + + name + + + + + ri:a-single-0820 + + + name + + + + + ri:a-single-0821 + + + name + + + + + ri:a-single-0822 + + + name + + + + + ri:a-single-0823 + + + name + + + + + ri:a-single-0824 + + + name + + + + + ri:a-single-0825 + + + name + + + + + ri:a-single-0826 + + + name + + + + + ri:a-single-0827 + + + name + + + + + ri:a-single-0828 + + + name + + + + + ri:a-single-0829 + + + name + + + + + ri:a-single-0830 + + + name + + + + + ri:a-single-0831 + + + name + + + + + ri:a-single-0832 + + + name + + + + + ri:a-single-0833 + + + name + + + + + ri:a-single-0834 + + + name + + + + + ri:a-single-0835 + + + name + + + + + ri:a-single-0836 + + + name + + + + + ri:a-single-0837 + + + name + + + + + ri:a-single-0838 + + + name + + + + + ri:a-single-0839 + + + name + + + + + ri:a-single-0840 + + + name + + + + + ri:a-single-0841 + + + name + + + + + ri:a-single-0842 + + + name + + + + + ri:a-single-0843 + + + name + + + + + ri:a-single-0844 + + + name + + + + + ri:a-single-0845 + + + name + + + + + ri:a-single-0846 + + + name + + + + + ri:a-single-0847 + + + name + + + + + ri:a-single-0848 + + + name + + + + + ri:a-single-0849 + + + name + + + + + ri:a-single-0850 + + + name + + + + + ri:a-single-0851 + + + name + + + + + ri:a-single-0852 + + + name + + + + + ri:a-single-0853 + + + name + + + + + ri:a-single-0854 + + + name + + + + + ri:a-single-0855 + + + name + + + + + ri:a-single-0856 + + + name + + + + + ri:a-single-0857 + + + name + + + + + ri:a-single-0858 + + + name + + + + + ri:a-single-0859 + + + name + + + + + ri:a-single-0860 + + + name + + + + + ri:a-single-0861 + + + name + + + + + ri:a-single-0862 + + + name + + + + + ri:a-single-0863 + + + name + + + + + ri:a-single-0864 + + + name + + + + + ri:a-single-0865 + + + name + + + + + ri:a-single-0866 + + + name + + + + + ri:a-single-0867 + + + name + + + + + ri:a-single-0868 + + + name + + + + + ri:a-single-0869 + + + name + + + + + ri:a-single-0870 + + + name + + + + + ri:a-single-0871 + + + name + + + + + ri:a-single-0872 + + + name + + + + + ri:a-single-0873 + + + name + + + + + ri:a-single-0874 + + + name + + + + + ri:a-single-0875 + + + name + + + + + ri:a-single-0876 + + + name + + + + + ri:a-single-0877 + + + name + + + + + ri:a-single-0878 + + + name + + + + + ri:a-single-0879 + + + name + + + + + ri:a-single-0880 + + + name + + + + + ri:a-single-0881 + + + name + + + + + ri:a-single-0882 + + + name + + + + + ri:a-single-0883 + + + name + + + + + ri:a-single-0884 + + + name + + + + + ri:a-single-0885 + + + name + + + + + ri:a-single-0886 + + + name + + + + + ri:a-single-0887 + + + name + + + + + ri:a-single-0888 + + + name + + + + + ri:a-single-0889 + + + name + + + + + ri:a-single-0890 + + + name + + + + + ri:a-single-0891 + + + name + + + + + ri:a-single-0892 + + + name + + + + + ri:a-single-0893 + + + name + + + + + ri:a-single-0894 + + + name + + + + + ri:a-single-0895 + + + name + + + + + ri:a-single-0896 + + + name + + + + + ri:a-single-0897 + + + name + + + + + ri:a-single-0898 + + + name + + + + + ri:a-single-0899 + + + name + + + + + ri:a-single-0900 + + + name + + + + + ri:a-single-0901 + + + name + + + + + ri:a-single-0902 + + + name + + + + + ri:a-single-0903 + + + name + + + + + ri:a-single-0904 + + + name + + + + + ri:a-single-0905 + + + name + + + + + ri:a-single-0906 + + + name + + + + + ri:a-single-0907 + + + name + + + + + ri:a-single-0908 + + + name + + + + + ri:a-single-0909 + + + name + + + + + ri:a-single-0910 + + + name + + + + + ri:a-single-0911 + + + name + + + + + ri:a-single-0912 + + + name + + + + + ri:a-single-0913 + + + name + + + + + ri:a-single-0914 + + + name + + + + + ri:a-single-0915 + + + name + + + + + ri:a-single-0916 + + + name + + + + + ri:a-single-0917 + + + name + + + + + ri:a-single-0918 + + + name + + + + + ri:a-single-0919 + + + name + + + + + ri:a-single-0920 + + + name + + + + + ri:a-single-0921 + + + name + + + + + ri:a-single-0922 + + + name + + + + + ri:a-single-0923 + + + name + + + + + ri:a-single-0924 + + + name + + + + + ri:a-single-0925 + + + name + + + + + ri:a-single-0926 + + + name + + + + + ri:a-single-0927 + + + name + + + + + ri:a-single-0928 + + + name + + + + + ri:a-single-0929 + + + name + + + + + ri:a-single-0930 + + + name + + + + + ri:a-single-0931 + + + name + + + + + ri:a-single-0932 + + + name + + + + + ri:a-single-0933 + + + name + + + + + ri:a-single-0934 + + + name + + + + + ri:a-single-0935 + + + name + + + + + ri:a-single-0936 + + + name + + + + + ri:a-single-0937 + + + name + + + + + ri:a-single-0938 + + + name + + + + + ri:a-single-0939 + + + name + + + + + ri:a-single-0940 + + + name + + + + + ri:a-single-0941 + + + name + + + + + ri:a-single-0942 + + + name + + + + + ri:a-single-0943 + + + name + + + + + ri:a-single-0944 + + + name + + + + + ri:a-single-0945 + + + name + + + + + ri:a-single-0946 + + + name + + + + + ri:a-single-0947 + + + name + + + + + ri:a-single-0948 + + + name + + + + + ri:a-single-0949 + + + name + + + + + ri:a-single-0950 + + + name + + + + + ri:a-single-0951 + + + name + + + + + ri:a-single-0952 + + + name + + + + + ri:a-single-0953 + + + name + + + + + ri:a-single-0954 + + + name + + + + + ri:a-single-0955 + + + name + + + + + ri:a-single-0956 + + + name + + + + + ri:a-single-0957 + + + name + + + + + ri:a-single-0958 + + + name + + + + + ri:a-single-0959 + + + name + + + + + ri:a-single-0960 + + + name + + + + + ri:a-single-0961 + + + name + + + + + ri:a-single-0962 + + + name + + + + + ri:a-single-0963 + + + name + + + + + ri:a-single-0964 + + + name + + + + + ri:a-single-0965 + + + name + + + + + ri:a-single-0966 + + + name + + + + + ri:a-single-0967 + + + name + + + + + ri:a-single-0968 + + + name + + + + + ri:a-single-0969 + + + name + + + + + ri:a-single-0970 + + + name + + + + + ri:a-single-0971 + + + name + + + + + ri:a-single-0972 + + + name + + + + + ri:a-single-0973 + + + name + + + + + ri:a-single-0974 + + + name + + + + + ri:a-single-0975 + + + name + + + + + ri:a-single-0976 + + + name + + + + + ri:a-single-0977 + + + name + + + + + ri:a-single-0978 + + + name + + + + + ri:a-single-0979 + + + name + + + + + ri:a-single-0980 + + + name + + + + + ri:a-single-0981 + + + name + + + + + ri:a-single-0982 + + + name + + + + + ri:a-single-0983 + + + name + + + + + ri:a-single-0984 + + + name + + + + + ri:a-single-0985 + + + name + + + + + ri:a-single-0986 + + + name + + + + + ri:a-single-0987 + + + name + + + + + ri:a-single-0988 + + + name + + + + + ri:a-single-0989 + + + name + + + + + ri:a-single-0990 + + + name + + + + + ri:a-single-0991 + + + name + + + + + ri:a-single-0992 + + + name + + + + + ri:a-single-0993 + + + name + + + + + ri:a-single-0994 + + + name + + + + + ri:a-single-0995 + + + name + + + + + ri:a-single-0996 + + + name + + + + + ri:a-single-0997 + + + name + + + + + ri:a-single-0998 + + + name + + + + + ri:a-single-0999 + + + name + + + + + + + + + ri:AccountObjectClass + account + true + + + name + + $projection/attributes/icfs:name + + + + + linked + true + + + deleted + + http://midpoint.evolveum.com/xml/ns/public/model/action-3#unlink + + + + unlinked + + http://midpoint.evolveum.com/xml/ns/public/model/action-3#link + + + + unmatched + + + + diff --git a/repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/ExpressionUtil.java b/repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/ExpressionUtil.java index 2b74db02323..02539d9e5a7 100644 --- a/repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/ExpressionUtil.java +++ b/repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/ExpressionUtil.java @@ -145,11 +145,12 @@ public static Object resolvePathGetValue( } /** - * normalizeValuesToDelete: Whether to normalize container values that are to be deleted, i.e. convert them - * from id-only to full data (MID-4863). - * TODO: - * 1. consider setting this parameter to true at some other places where it might be relevant - * 2. consider normalizing delete deltas earlier in the clockwork, probably at the very beginning of the operation + * @param normalizeValuesToDelete Whether to normalize container values that are to be deleted, + * i.e. convert them from id-only to full data (MID-4863). Note that normally the delta should + * be already normalized, as this is done now in LensFocusContext (due to MID-7057). So at + * this point it is just to be sure. + * + * TODO Anyway, we should analyze existing code and resolve this issue in more general way. */ public static TypedValue resolvePathGetTypedValue(ItemPath path, VariablesMap variables, boolean normalizeValuesToDelete, TypedValue defaultContext, ObjectResolver objectResolver, PrismContext prismContext, String shortDesc, Task task, OperationResult result) diff --git a/repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/PathExpressionResolver.java b/repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/PathExpressionResolver.java index 8d4a56fe72d..cba7eae4813 100644 --- a/repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/PathExpressionResolver.java +++ b/repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/PathExpressionResolver.java @@ -67,6 +67,7 @@ class PathExpressionResolver { /** * Whether to normalize container values that are to be deleted, i.e. convert them from id-only to full data (MID-4863). + * TODO reconsider this, see MID-7057. */ private final boolean normalizeValuesToDelete; @@ -122,6 +123,7 @@ TypedValue resolve(OperationResult result) throws SchemaException, ObjectNotF return root; } + // TODO reconsider this (see MID-7057). if (normalizeValuesToDelete) { root = normalizeValuesToDelete(root); } @@ -299,6 +301,7 @@ private ItemDefinition determineItemDefinition(PrismContainerDefinition co return null; } + // FIXME temporary solution private TypedValue normalizeValuesToDelete(TypedValue root) { Object rootValue = root.getValue(); if (rootValue instanceof ObjectDeltaObject) {