diff --git a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ModifyTest.java b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ModifyTest.java index 65a15d75508..163dee066f0 100644 --- a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ModifyTest.java +++ b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ModifyTest.java @@ -1149,7 +1149,7 @@ public void test310ModifyCaseWorkItemAssignee() throws Exception { System.out.println(workItems.get(0).asPrismContainerValue().debugDump()); } - @Test(enabled = false) // MID-5104 + @Test // MID-5104 public void test350ReplaceAssignmentModifyApprover() throws Exception { final String TEST_NAME = "test350ReplaceAssignmentModifyApprover"; TestUtil.displayTestTitle(TEST_NAME); @@ -1180,7 +1180,7 @@ public void test350ReplaceAssignmentModifyApprover() throws Exception { // THEN } - @Test(enabled = false) // MID-5105 + @Test(enabled = false) // MID-5105 public void test360ReplaceModifyApprovers() throws Exception { final String TEST_NAME = "test360ReplaceModifyApprovers"; TestUtil.displayTestTitle(TEST_NAME); diff --git a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/helpers/mapper/AssignmentReferenceMapper.java b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/helpers/mapper/AssignmentReferenceMapper.java new file mode 100644 index 00000000000..fb1f147de70 --- /dev/null +++ b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/helpers/mapper/AssignmentReferenceMapper.java @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2010-2019 Evolveum + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.evolveum.midpoint.repo.sql.helpers.mapper; + +import com.evolveum.midpoint.prism.Referencable; +import com.evolveum.midpoint.repo.sql.data.common.RObjectReference; +import com.evolveum.midpoint.repo.sql.data.common.container.RAssignment; +import com.evolveum.midpoint.repo.sql.data.common.container.RAssignmentReference; +import com.evolveum.midpoint.repo.sql.data.common.other.RCReferenceOwner; +import com.evolveum.midpoint.repo.sql.helpers.modify.MapperContext; +import com.evolveum.midpoint.schema.util.ObjectTypeUtil; +import com.evolveum.midpoint.xml.ns._public.common.common_3.MetadataType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; + +import javax.xml.namespace.QName; + +/** + * Created by Viliam Repan (lazyman). + */ +public class AssignmentReferenceMapper extends ReferenceMapper { + + @Override + public RAssignmentReference map(Referencable input, MapperContext context) { + ObjectReferenceType objectRef = buildReference(input); + + ObjectTypeUtil.normalizeRelation(objectRef, context.getRelationRegistry()); + + RAssignment owner = (RAssignment) context.getOwner(); + + QName name = context.getDelta().getPath().lastName().asSingleName(); + RCReferenceOwner refType = null; + if (MetadataType.F_CREATE_APPROVER_REF.equals(name)) { + refType = RCReferenceOwner.CREATE_APPROVER; + } else if (MetadataType.F_MODIFY_APPROVER_REF.equals(name)) { + refType = RCReferenceOwner.MODIFY_APPROVER; + } + + RAssignmentReference ref = new RAssignmentReference(); + ref.setOwner(owner); + ref.setReferenceType(refType); + + RObjectReference.copyFromJAXB(objectRef, ref, context.getRelationRegistry()); + + return ref; + } +} + diff --git a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/helpers/modify/PrismEntityMapper.java b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/helpers/modify/PrismEntityMapper.java index d8dd3f3f54b..41187f3b8a2 100644 --- a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/helpers/modify/PrismEntityMapper.java +++ b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/helpers/modify/PrismEntityMapper.java @@ -57,6 +57,7 @@ public class PrismEntityMapper { mappers.put(new Key(QName.class, String.class), new QNameMapper()); mappers.put(new Key(Referencable.class, RObjectReference.class), new ObjectReferenceMapper()); + mappers.put(new Key(Referencable.class, RAssignmentReference.class), new AssignmentReferenceMapper()); mappers.put(new Key(Referencable.class, RCaseWorkItemReference.class), new CaseWorkItemReferenceMapper()); mappers.put(new Key(AssignmentType.class, RAssignment.class), new AssignmentMapper()); mappers.put(new Key(TriggerType.class, RTrigger.class), new TriggerMapper());