Author: jsdelfino
Date: Wed Aug 15 00:04:53 2007
New Revision: 566041

URL: http://svn.apache.org/viewvc?view=rev&rev=566041
Log:
Fixed support for relative binding URIs.

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

Modified: 
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeConfigurationBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeConfigurationBuilderImpl.java?view=diff&rev=566041&r1=566040&r2=566041
==============================================================================
--- 
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeConfigurationBuilderImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeConfigurationBuilderImpl.java
 Wed Aug 15 00:04:53 2007
@@ -19,6 +19,7 @@
 
 package org.apache.tuscany.sca.assembly.builder.impl;
 
+import java.net.URI;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -77,16 +78,22 @@
      * @param problems
      */
     private void configureComponents(Composite composite, String uri) {
+        URI parentURI;
+        if (uri != null) {
+            parentURI = URI.create(uri + '/');
+        } else {
+            parentURI = null;
+        }
     
         // Process nested composites recursively
         for (Component component : composite.getComponents()) {
     
             // Initialize component URI
             String componentURI;
-            if (uri == null) {
+            if (parentURI == null) {
                 componentURI = component.getName();
             } else {
-                componentURI = uri + "/" + component.getName();
+                componentURI = 
parentURI.resolve(component.getName()).toString();
             }
             component.setURI(componentURI);
     
@@ -112,13 +119,16 @@
                 if (binding.getName() == null) {
                     binding.setName(service.getName());
                 }
+                String bindingURI;
                 if (binding.getURI() == null) {
-                    if (uri == null) {
-                        binding.setURI(binding.getName());
-                    } else {
-                        binding.setURI(uri + '/' + binding.getName());
-                    }
+                    bindingURI = String.valueOf(binding.getName());
+                } else {
+                    bindingURI = binding.getURI();
                 }
+                if (parentURI != null) {
+                    bindingURI = parentURI.resolve(bindingURI).toString();
+                }
+                binding.setURI(bindingURI);
             }
             if (service.getCallback() != null) {
                 for (Binding binding : service.getCallback().getBindings()) {
@@ -157,6 +167,7 @@
         // Initialize all component services and references
         Map<String, Component> components = new HashMap<String, Component>();
         for (Component component : composite.getComponents()) {
+            URI componentURI = URI.create(component.getURI() + '/');
     
             // Index all components and check for duplicates
             if (components.containsKey(component.getName())) {
@@ -210,7 +221,6 @@
                 createSelfReferences(component);
             }
             
-            
             // Initialize service bindings
             for (ComponentService componentService: component.getServices()) {
                 
@@ -225,9 +235,14 @@
                     if (binding.getName() == null) {
                         binding.setName(componentService.getName());
                     }
+                    String bindingURI;
                     if (binding.getURI() == null) {
-                        binding.setURI(component.getURI() + '/' + 
binding.getName());
+                        bindingURI = String.valueOf(binding.getName());
+                    } else {
+                        bindingURI = binding.getURI();
                     }
+                    bindingURI = componentURI.resolve(bindingURI).toString();
+                    binding.setURI(bindingURI);
                 }
                 if (componentService.getCallback() != null) {
                     for (Binding binding : 
componentService.getCallback().getBindings()) {



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to