From 27bb15967a7e8124b586bc4fa278f7f534e69b5e Mon Sep 17 00:00:00 2001 From: slaws Date: Fri, 9 Apr 2010 15:55:49 +0000 Subject: TUSCANY-3531 - validate that composite reference don't override nonOverridable component references git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@932474 13f79535-47bb-0310-9956-ffa450edef68 --- .../impl/CompositeComponentTypeBuilderImpl.java | 32 ++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) (limited to 'sca-java-2.x/trunk/modules/builder/src/main/java') diff --git a/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositeComponentTypeBuilderImpl.java b/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositeComponentTypeBuilderImpl.java index ddcfc883d6..2ea35ffb9b 100644 --- a/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositeComponentTypeBuilderImpl.java +++ b/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositeComponentTypeBuilderImpl.java @@ -267,6 +267,9 @@ public class CompositeComponentTypeBuilderImpl { // promote multiplicity reconcileReferenceMultiplicity(componentType, compositeReference, promotedComponentReference, monitor); + + // check nonOverridable + validateNonOverridable(componentType, compositeReference, promotedComponentReference, monitor); // promote interface contracts calculatePromotedReferenceInterfaceContract(compositeReference, promotedComponentReference, monitor); @@ -586,6 +589,31 @@ public class CompositeComponentTypeBuilderImpl { } else { return true; } - } - + } + + /** + * ASM50042 - Checks that if a component reference with multiplicity="1..1" is marked + * as nonOveridable then there are no composite references that promote it + * + * @param componentType + * @param compositeReference + * @param promotedComponentReference + * @param monitor + */ + private void validateNonOverridable(ComponentType componentType, + Reference compositeReference, + Reference promotedComponentReference, + Monitor monitor){ + if ((promotedComponentReference.getMultiplicity() == Multiplicity.ONE_ONE) && + (((ComponentReference)promotedComponentReference)).isNonOverridable() == true) { + Monitor.error(monitor, + this, + Messages.ASSEMBLY_VALIDATION, + "CompositeReferencePromotesNonOverridableReference", + componentType.getURI(), + compositeReference.getName(), + promotedComponentReference.getName()); + } + } + } //end class -- cgit v1.2.3