Author: rfeng
Date: Thu Jul  9 18:15:10 2009
New Revision: 792623

URL: http://svn.apache.org/viewvc?rev=792623&view=rev
Log:
Start to resolve intents to policySets that provide the intent

Modified:
    
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositePolicyBuilderImpl.java

Modified: 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositePolicyBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositePolicyBuilderImpl.java?rev=792623&r1=792622&r2=792623&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositePolicyBuilderImpl.java
 (original)
+++ 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositePolicyBuilderImpl.java
 Thu Jul  9 18:15:10 2009
@@ -43,8 +43,10 @@
 import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
 import org.apache.tuscany.sca.monitor.Monitor;
 import org.apache.tuscany.sca.policy.Intent;
+import org.apache.tuscany.sca.policy.IntentMap;
 import org.apache.tuscany.sca.policy.PolicySet;
 import org.apache.tuscany.sca.policy.PolicySubject;
+import org.apache.tuscany.sca.policy.Qualifier;
 
 /**
  * A composite builder that computes policy sets based on attached intents and 
policy sets.
@@ -269,6 +271,28 @@
             List<Intent> provided = policySet.getProvidedIntents();
             // FIXME: Check if required intents are provided by the policy sets
         }
+        
+        for (Intent intent : subject.getRequiredIntents()) {
+            loop: for (PolicySet ps : definitions.getPolicySets()) {
+                // FIXME: We will have to check the policy references and 
intentMap too
+                // as well as the appliesTo
+                if (ps.getProvidedIntents().contains(intent)) {
+                    policySets.add(ps);
+                    break;
+                }
+                for (IntentMap map : ps.getIntentMaps()) {
+                    for (Qualifier q : map.getQualifiers()) {
+                        if (intent.equals(q.getIntent())) {
+                            policySets.add(ps);
+                            break loop;
+                        }
+                    }
+                }
+            }
+        }
+        
+        subject.getPolicySets().clear();
+        subject.getPolicySets().addAll(policySets);
 
     }
 


Reply via email to