Author: rfeng
Date: Tue Jul  7 22:00:41 2009
New Revision: 791991

URL: http://svn.apache.org/viewvc?rev=791991&view=rev
Log:
Fix the code to read policies and intents

Modified:
    
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseBuilderImpl.java
    
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/BaseBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseBuilderImpl.java?rev=791991&r1=791990&r2=791991&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseBuilderImpl.java
 (original)
+++ 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseBuilderImpl.java
 Tue Jul  7 22:00:41 2009
@@ -39,6 +39,9 @@
 import org.apache.tuscany.sca.assembly.SCABindingFactory;
 import org.apache.tuscany.sca.assembly.Service;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.FactoryExtensionPoint;
+import org.apache.tuscany.sca.core.UtilityExtensionPoint;
 import org.apache.tuscany.sca.definitions.Definitions;
 import org.apache.tuscany.sca.interfacedef.InterfaceContract;
 import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
@@ -75,6 +78,20 @@
         this.transformerFactory = transformerFactory;
         this.interfaceContractMapper = interfaceContractMapper;
     }
+    
+    /**
+     * Construct a builder from the extension point registry
+     * @param registry
+     */
+    protected BaseBuilderImpl(ExtensionPointRegistry registry) {
+        FactoryExtensionPoint factoryExtensionPoint = 
registry.getExtensionPoint(FactoryExtensionPoint.class);
+        this.assemblyFactory = 
factoryExtensionPoint.getFactory(AssemblyFactory.class);
+        this.scaBindingFactory = 
factoryExtensionPoint.getFactory(SCABindingFactory.class);
+        this.documentBuilderFactory = 
factoryExtensionPoint.getFactory(DocumentBuilderFactory.class);
+        this.transformerFactory = 
factoryExtensionPoint.getFactory(TransformerFactory.class);
+        this.interfaceContractMapper =
+            
registry.getExtensionPoint(UtilityExtensionPoint.class).getUtility(InterfaceContractMapper.class);
+    }
 
     /**
      * Report a warning.

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=791991&r1=791990&r2=791991&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
 Tue Jul  7 22:00:41 2009
@@ -38,6 +38,7 @@
 import org.apache.tuscany.sca.assembly.Service;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.definitions.Definitions;
 import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
 import org.apache.tuscany.sca.monitor.Monitor;
@@ -53,7 +54,10 @@
  * @version $Rev$ $Date$
  */
 public class CompositePolicyBuilderImpl extends BaseBuilderImpl implements 
CompositeBuilder {
-
+    public CompositePolicyBuilderImpl(ExtensionPointRegistry registry) {
+        super(registry);
+    }
+    
     public CompositePolicyBuilderImpl(AssemblyFactory assemblyFactory, 
InterfaceContractMapper interfaceContractMapper) {
         super(assemblyFactory, null, null, null, interfaceContractMapper);
     }
@@ -181,15 +185,29 @@
             return name2.equals(name1);
         }
     }
+    
+    private Intent resolve(Definitions definitions, Intent proxy) {
+        for(Intent i: definitions.getIntents()) {
+            if(i.equals(proxy)) {
+                return i;
+            }
+            for(Intent qi: i.getQualifiedIntents()) {
+                if(qi.equals(proxy)) {
+                    return qi;
+                }
+            }
+        }
+        return null;
+    }
 
     private void resolveAndNormalize(PolicySubject subject, Definitions 
definitions, Monitor monitor) {
 
         Set<Intent> intents = new HashSet<Intent>();
         if (definitions != null) {
             for (Intent i : subject.getRequiredIntents()) {
-                int index = definitions.getIntents().indexOf(i);
-                if (index != -1) {
-                    intents.add(definitions.getIntents().get(index));
+                Intent resolved = resolve(definitions, i);
+                if (resolved != null) {
+                    intents.add(resolved);
                 } else {
                     warning(monitor, "intent-not-found", subject, 
i.getName().toString());
                     // Intent cannot be resolved
@@ -198,8 +216,8 @@
         }
 
         // Replace profile intents with their required intents
-        boolean profileIntentsFound = false;
-        while (true) {
+        while (!intents.isEmpty()) {
+            boolean profileIntentsFound = false;
             Set<Intent> copy = new HashSet<Intent>(intents);
             for (Intent i : copy) {
                 if (!i.getRequiredIntents().isEmpty()) {


Reply via email to