From c5a524e6164269a273c53ab6a76773b6f1ec3aca Mon Sep 17 00:00:00 2001 From: Alan Davis Date: Sat, 31 Jan 2015 09:58:45 +0000 Subject: [PATCH] Merged HEAD-BUG-FIX (5.1/Cloud) to HEAD (5.0/Cloud) 88169: Merged V4.2-BUG-FIX (4.2.4) to HEAD-BUG-FIX (5.0/Cloud) 87959: Merged DEV (4.2.4) to V4.2-BUG-FIX (4.2.4) 87891: MNT-12367 : Relaxed mode for mandatory association not possible Added support for relaxed mode of mandatory association target. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@94563 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- ...AssocTargetMultiplicityIntegrityEvent.java | 5 +++-- .../repo/node/integrity/IntegrityTest.java | 13 +++++++++++++ .../node/integrity/IntegrityTest_model.xml | 19 +++++++++++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/source/java/org/alfresco/repo/node/integrity/AssocTargetMultiplicityIntegrityEvent.java b/source/java/org/alfresco/repo/node/integrity/AssocTargetMultiplicityIntegrityEvent.java index 4a577f7cd1..a7f9fd25af 100644 --- a/source/java/org/alfresco/repo/node/integrity/AssocTargetMultiplicityIntegrityEvent.java +++ b/source/java/org/alfresco/repo/node/integrity/AssocTargetMultiplicityIntegrityEvent.java @@ -125,8 +125,9 @@ public class AssocTargetMultiplicityIntegrityEvent extends AbstractIntegrityEven // get the source multiplicity boolean mandatory = assocDef.isTargetMandatory(); boolean allowMany = assocDef.isTargetMany(); + boolean enforced = assocDef.isTargetMandatoryEnforced(); // do we need to check - if (!mandatory && allowMany) + if (!(mandatory && enforced) && allowMany) { // it is not mandatory and it allows many on both sides of the assoc return; @@ -165,7 +166,7 @@ public class AssocTargetMultiplicityIntegrityEvent extends AbstractIntegrityEven actualSize = targetAssocRefs.size(); } - if ((mandatory && actualSize == 0) || (!allowMany && actualSize > 1)) + if (((mandatory && enforced) && actualSize == 0) || (!allowMany && actualSize > 1)) { if (actualSize == 0) { diff --git a/source/test-java/org/alfresco/repo/node/integrity/IntegrityTest.java b/source/test-java/org/alfresco/repo/node/integrity/IntegrityTest.java index 12806fece9..100de7ab3a 100644 --- a/source/test-java/org/alfresco/repo/node/integrity/IntegrityTest.java +++ b/source/test-java/org/alfresco/repo/node/integrity/IntegrityTest.java @@ -72,6 +72,7 @@ public class IntegrityTest extends TestCase public static final QName TEST_TYPE_WITH_ASSOCS = QName.createQName(NAMESPACE, "typeWithAssocs"); public static final QName TEST_TYPE_WITH_CHILD_ASSOCS = QName.createQName(NAMESPACE, "typeWithChildAssocs"); public static final QName TEST_TYPE_WITH_NON_ENFORCED_CHILD_ASSOCS = QName.createQName(NAMESPACE, "typeWithNonEnforcedChildAssocs"); + public static final QName TEST_TYPE_WITH_NON_ENFORCED_TARGET_ASSOCS = QName.createQName(NAMESPACE, "typeWithNonEnforcedTargetAssocs"); public static final QName TEST_ASSOC_NODE_ZEROMANY_ZEROMANY = QName.createQName(NAMESPACE, "assoc-0to* - 0to*"); public static final QName TEST_ASSOC_CHILD_ZEROMANY_ZEROMANY = QName.createQName(NAMESPACE, "child-0to* - 0to*"); @@ -80,6 +81,7 @@ public class IntegrityTest extends TestCase public static final QName TEST_ASSOC_CHILD_ONE_ONE = QName.createQName(NAMESPACE, "child-1to1 - 1to1"); public static final QName TEST_ASSOC_ASPECT_ONE_ONE = QName.createQName(NAMESPACE, "aspect-assoc-1to1 - 1to1"); public static final QName TEST_ASSOC_CHILD_NON_ENFORCED = QName.createQName(NAMESPACE, "child-non-enforced"); + public static final QName TEST_ASSOC_TARGET_NON_ENFORCED = QName.createQName(NAMESPACE, "target-non-enforced"); public static final QName TEST_ASPECT_WITH_PROPERTIES = QName.createQName(NAMESPACE, "aspectWithProperties"); public static final QName TEST_ASPECT_WITH_ASSOC = QName.createQName(NAMESPACE, "aspectWithAssoc"); @@ -483,4 +485,15 @@ public class IntegrityTest extends TestCase nodeService.removeAssociation(source1, target1, TEST_ASSOC_NODE_ONE_MANY); checkIntegrityNoFailure(); } + + /** + * Test for MNT-12367 + */ + public void testRelaxedMandatoryAssociation() throws Exception + { + assertEquals("Per-transaction override not correct", false, IntegrityChecker.isWarnInTransaction()); + // create node + NodeRef nodeRef = createNode("relaxedAssocNode", TEST_TYPE_WITH_NON_ENFORCED_TARGET_ASSOCS, null); + checkIntegrityNoFailure(); + } } diff --git a/source/test-resources/org/alfresco/repo/node/integrity/IntegrityTest_model.xml b/source/test-resources/org/alfresco/repo/node/integrity/IntegrityTest_model.xml index 508069ac7d..f15374347f 100644 --- a/source/test-resources/org/alfresco/repo/node/integrity/IntegrityTest_model.xml +++ b/source/test-resources/org/alfresco/repo/node/integrity/IntegrityTest_model.xml @@ -8,6 +8,7 @@ + @@ -154,6 +155,24 @@ + + + Type With Non Enforced Assocs + cm:content + + + + false + true + + + cm:content + true + false + + + +