You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sv...@apache.org on 2008/04/21 09:02:27 UTC

svn commit: r650030 - in /incubator/tuscany/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml: PolicyConstants.java PolicyIntentProcessor.java

Author: svkrish
Date: Mon Apr 21 00:02:26 2008
New Revision: 650030

URL: http://svn.apache.org/viewvc?rev=650030&view=rev
Log:
https://issues.apache.org/jira/browse/TUSCANY-2239

Modified:
    incubator/tuscany/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyConstants.java
    incubator/tuscany/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyIntentProcessor.java

Modified: incubator/tuscany/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyConstants.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyConstants.java?rev=650030&r1=650029&r2=650030&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyConstants.java (original)
+++ incubator/tuscany/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyConstants.java Mon Apr 21 00:02:26 2008
@@ -44,6 +44,7 @@
     String QUALIFIER = ".";
     String INTENT_MAP_QUALIFIER = "qualifier";
     String REQUIRES = "requires";
+    String EXCLUDES = "excludes";
     String DEFAULT = "default";
     
     String WS_POLICY_NS = "http://schemas.xmlsoap.org/ws/2004/09/policy";

Modified: incubator/tuscany/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyIntentProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyIntentProcessor.java?rev=650030&r1=650029&r2=650030&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyIntentProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyIntentProcessor.java Mon Apr 21 00:02:26 2008
@@ -82,9 +82,12 @@
         if ( policyIntent instanceof ProfileIntent ) {
             readRequiredIntents((ProfileIntent)policyIntent, reader);
         }
+        else {
+            readExcludedIntents(policyIntent, reader);
+        }
         
         readConstrainedArtifacts(policyIntent, reader);
-        
+
         int event = reader.getEventType();
         QName name = null;
         while (reader.hasNext()) {
@@ -128,6 +131,17 @@
                 writer.writeAttribute(PolicyConstants.REQUIRES, sb.toString());
             }
         }
+        else {
+            if (policyIntent.getExcludedIntents() != null && 
+                policyIntent.getExcludedIntents().size() > 0) {
+                StringBuffer sb = new StringBuffer();
+                for (Intent excludedIntents : policyIntent.getExcludedIntents()) {
+                    sb.append(excludedIntents.getName());
+                    sb.append(" ");
+                }
+                writer.writeAttribute(PolicyConstants.EXCLUDES, sb.toString());
+            }
+        }
         
         if (!(policyIntent instanceof QualifiedIntent) ) {
             if (policyIntent.getConstrains() != null && 
@@ -252,13 +266,16 @@
         if (policyIntent instanceof ProfileIntent) {
             resolveProfileIntent((ProfileIntent)policyIntent, resolver);
         }
+        else {
+            resolveExcludedIntents(policyIntent, resolver);
+        }
 
         if (policyIntent instanceof QualifiedIntent) {
             resolveQualifiedIntent((QualifiedIntent)policyIntent, resolver);
         }
         
         resolveContrainedArtifacts(policyIntent, resolver);
-        
+
         if ( !policyIntent.isUnresolved() ) {
             resolver.addModel(policyIntent);
         }
@@ -298,5 +315,44 @@
             }
         }
     }
-    
+
+    private void readExcludedIntents(Intent policyIntent, XMLStreamReader reader) {
+        String value = reader.getAttributeValue(null, "excludes");
+        if (value != null) {
+            List<Intent> excludedIntents = policyIntent.getExcludedIntents();
+            for (StringTokenizer tokens = new StringTokenizer(value); tokens.hasMoreTokens();) {
+                QName qname = getQNameValue(reader, tokens.nextToken());
+                Intent intent = policyFactory.createIntent();
+                intent.setName(qname);
+                intent.setUnresolved(true);
+                excludedIntents.add(intent);
+            }
+        }
+    }
+
+    private void resolveExcludedIntents(Intent policyIntent, ModelResolver resolver)
+        throws ContributionResolveException {
+        if (policyIntent != null) {
+            // resolve all excluded intents
+            List<Intent> excludedIntents = new ArrayList<Intent>();
+            for (Intent excludedIntent : policyIntent.getExcludedIntents()) {
+                if (excludedIntent.isUnresolved()) {
+                    Intent resolvedExcludedIntent = resolver.resolveModel(Intent.class, excludedIntent);
+                    if (resolvedExcludedIntent != null) {
+                        excludedIntents.add(resolvedExcludedIntent);
+                    } else {
+                        throw new ContributionResolveException(
+                                    "Excluded Intent " + excludedIntent
+                                  + " not found for intent " + policyIntent);
+
+                    }
+                } else {
+                    excludedIntents.add(excludedIntent);
+                }
+            }
+            policyIntent.getExcludedIntents().clear();
+            policyIntent.getExcludedIntents().addAll(excludedIntents);
+        }
+    }
+
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org