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
This commit is contained in:
Alan Davis
2015-01-31 09:58:45 +00:00
parent 37871c2618
commit c5a524e616
3 changed files with 35 additions and 2 deletions

View File

@@ -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)
{

View File

@@ -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();
}
}

View File

@@ -8,6 +8,7 @@
<imports>
<import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
<import uri="http://www.alfresco.org/model/system/1.0" prefix="sys"/>
<import uri='http://www.alfresco.org/model/content/1.0' prefix='cm'/>
</imports>
<namespaces>
@@ -154,6 +155,24 @@
</child-association>
</associations>
</type>
<!-- Type with mandatory non-enforced assocs -->
<type name="test:typeWithNonEnforcedTargetAssocs">
<title>Type With Non Enforced Assocs</title>
<parent>cm:content</parent>
<associations>
<association name="test:target-non-enforced">
<source>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>cm:content</class>
<mandatory enforced="false">true</mandatory>
<many>false</many>
</target>
</association>
</associations>
</type>
</types>
<aspects>