You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2007/05/06 23:47:41 UTC

svn commit: r535658 - /incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/assembly/builder/impl/DefaultCompositeBuilder.java

Author: jsdelfino
Date: Sun May  6 14:47:39 2007
New Revision: 535658

URL: http://svn.apache.org/viewvc?view=rev&rev=535658
Log:
Propagate interfaces from inner composite services to the corresponding component services.

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

Modified: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/assembly/builder/impl/DefaultCompositeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/assembly/builder/impl/DefaultCompositeBuilder.java?view=diff&rev=535658&r1=535657&r2=535658
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/assembly/builder/impl/DefaultCompositeBuilder.java (original)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/assembly/builder/impl/DefaultCompositeBuilder.java Sun May  6 14:47:39 2007
@@ -610,6 +610,23 @@
     private void connectCompositeServices(Composite composite,
                                           Map<String, ComponentService> componentServices) {
 
+        // Propagate interfaces from inner composite components' services to
+        // their component services
+        for (Component component : composite.getComponents()) {
+            if (component.getImplementation() instanceof Composite) {
+                for (ComponentService componentService : component.getServices()) {
+                    Service service = componentService.getService();
+                    if (service != null) {
+                        if (componentService.getInterfaceContract() == null) {
+                            componentService.setInterfaceContract(service.getInterfaceContract());
+                        }
+                    }
+                }
+            }
+        }
+        
+        // Connect composite services to the component services that they
+        // promote
         for (Service service : composite.getServices()) {
 
             CompositeService compositeService = (CompositeService)service;
@@ -633,6 +650,7 @@
                 }
             }
         }
+
     }
 
     /**
@@ -645,6 +663,23 @@
     private void connectCompositeReferences(Composite composite,
                                             Map<String, ComponentReference> componentReferences) {
 
+        // Propagate interfaces from inner composite components' references to
+        // their component references
+        for (Component component : composite.getComponents()) {
+            if (component.getImplementation() instanceof Composite) {
+                for (ComponentReference componentReference : component.getReferences()) {
+                    Reference reference = componentReference.getReference();
+                    if (reference != null) {
+                        if (componentReference.getInterfaceContract() == null) {
+                            componentReference.setInterfaceContract(reference.getInterfaceContract());
+                        }
+                    }
+                }
+            }
+        }
+
+        // Connect composite references to the component references
+        // that they promote
         for (Reference reference : composite.getReferences()) {
             CompositeReference compositeReference = (CompositeReference)reference;
             List<ComponentReference> promotedReferences = compositeReference.getPromotedReferences();
@@ -1098,13 +1133,14 @@
         // services and references that they promote
         connectCompositeServices(composite, componentServices);
         connectCompositeReferences(composite, componentReferences);
-
+        
         // Connect component references to their targets
         connectComponentReferences(composite, componentServices, componentReferences);
 
         // Connect component references as described in wires
         connectWires(composite, componentServices, componentReferences);
 
+        // Resolve sourced properties
         resolveSourcedProperties(composite);
 
         // Validate that references are wired or promoted, according



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