From 755737f1cef0f827f6c87c3d55560adebdb776f0 Mon Sep 17 00:00:00 2001 From: lresende Date: Tue, 8 Jul 2008 23:04:16 +0000 Subject: TUSCANY-2354 - Applying a slightly modified version of Ram's patch to get a sucessful build git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@675018 13f79535-47bb-0310-9956-ffa450edef68 --- .../definitions/xml/SCADefinitionsProcessor.java | 43 +++++++++++++++++----- .../tuscany/sca/definitions/test_definitions.xml | 5 +-- 2 files changed, 36 insertions(+), 12 deletions(-) (limited to 'java/sca/modules/definitions-xml/src') diff --git a/java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/SCADefinitionsProcessor.java b/java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/SCADefinitionsProcessor.java index 6958501922..7709a9577e 100644 --- a/java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/SCADefinitionsProcessor.java +++ b/java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/SCADefinitionsProcessor.java @@ -22,6 +22,9 @@ package org.apache.tuscany.sca.definitions.xml; import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; +import java.util.List; +import java.util.ArrayList; + import javax.xml.namespace.QName; import javax.xml.stream.XMLStreamConstants; import javax.xml.stream.XMLStreamException; @@ -40,6 +43,7 @@ import org.apache.tuscany.sca.definitions.impl.SCADefinitionsImpl; import org.apache.tuscany.sca.policy.Intent; import org.apache.tuscany.sca.policy.IntentAttachPointType; import org.apache.tuscany.sca.policy.PolicySet; +import org.apache.tuscany.sca.policy.ProfileIntent; import org.apache.tuscany.sca.policy.QualifiedIntent; import org.apache.tuscany.sca.monitor.Monitor; @@ -173,12 +177,28 @@ public class SCADefinitionsProcessor extends BaseStAXArtifactProcessor implement // start by adding all of the top level artifacts into the resolver as there // are many cross artifact references in a definitions file and we don't want // to be dependent on the order things appear + + List simpleIntents = new ArrayList(); + List profileIntents = new ArrayList(); + List qualifiedIntents = new ArrayList(); + List simplePolicySets = new ArrayList(); + List referredPolicySets = new ArrayList(); for (Intent policyIntent : scaDefns.getPolicyIntents()) { - resolver.addModel(policyIntent); - } + if (policyIntent instanceof ProfileIntent) + profileIntents.add((ProfileIntent)policyIntent); + else if (policyIntent instanceof QualifiedIntent) + qualifiedIntents.add((QualifiedIntent)policyIntent); + else simpleIntents.add(policyIntent); + + resolver.addModel(policyIntent); + } for (PolicySet policySet : scaDefns.getPolicySets()) { + if (policySet.getReferencedPolicySets().isEmpty()) + simplePolicySets.add(policySet); + else referredPolicySets.add(policySet); + resolver.addModel(policySet); } @@ -193,15 +213,20 @@ public class SCADefinitionsProcessor extends BaseStAXArtifactProcessor implement // now resolve everything to ensure that any references between // artifacts are satisfied - for (int count = 0, size = scaDefns.getPolicyIntents().size(); count < size; count++) { - Intent intent = scaDefns.getPolicyIntents().get(count); - extensionProcessor.resolve(intent, resolver); - } + for (Intent policyIntent : simpleIntents) + extensionProcessor.resolve(policyIntent, resolver); - for (int count = 0, size = scaDefns.getPolicySets().size(); count < size; count++) { - PolicySet policySet = scaDefns.getPolicySets().get(count); + for (ProfileIntent policyIntent : profileIntents) + extensionProcessor.resolve(policyIntent, resolver); + + for (QualifiedIntent policyIntent : qualifiedIntents) + extensionProcessor.resolve(policyIntent, resolver); + + for (PolicySet policySet : simplePolicySets) extensionProcessor.resolve(policySet, resolver); - } + + for (PolicySet policySet : referredPolicySets) + extensionProcessor.resolve(policySet, resolver); for (int count = 0, size = scaDefns.getBindingTypes().size(); count < size; count++) { IntentAttachPointType bindingType = scaDefns.getBindingTypes().get(count); diff --git a/java/sca/modules/definitions-xml/src/test/resources/org/apache/tuscany/sca/definitions/test_definitions.xml b/java/sca/modules/definitions-xml/src/test/resources/org/apache/tuscany/sca/definitions/test_definitions.xml index e01a29863a..6750944697 100644 --- a/java/sca/modules/definitions-xml/src/test/resources/org/apache/tuscany/sca/definitions/test_definitions.xml +++ b/java/sca/modules/definitions-xml/src/test/resources/org/apache/tuscany/sca/definitions/test_definitions.xml @@ -30,8 +30,7 @@ + constrains="sca:binding"> Test Intent @@ -39,7 +38,7 @@ + requires="test:TestIntentOne"> Protect messages from unauthorized reading or modification -- cgit v1.2.3