Author: jsdelfino
Date: Sat May 13 02:42:21 2006
New Revision: 406056
URL: http://svn.apache.org/viewcvs?rev=406056&view=rev
Log:
Fix for TUSCANY-326, resolve wires across module fragments
Modified:
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/ServiceURI.java
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/CompositeImpl.java
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleFragmentImpl.java
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ServiceURIImpl.java
Modified:
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/ServiceURI.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/ServiceURI.java?rev=406056&r1=406055&r2=406056&view=diff
==============================================================================
---
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/ServiceURI.java
(original)
+++
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/ServiceURI.java
Sat May 13 02:42:21 2006
@@ -33,6 +33,11 @@
public String getAddress();
/**
+ * @return Returns the path.
+ */
+ public String getPath();
+
+ /**
* Returns the module component name
* @return
*/
Modified:
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/CompositeImpl.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/CompositeImpl.java?rev=406056&r1=406055&r2=406056&view=diff
==============================================================================
---
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/CompositeImpl.java
(original)
+++
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/CompositeImpl.java
Sat May 13 02:42:21 2006
@@ -252,7 +252,15 @@
}
componentType.initialize(modelContext);
- // Wire the module parts
+ // Wire the parts in this composite
+ wire(modelContext);
+ }
+
+ /**
+ * Wire the parts in this composite.
+ * @param modelContext
+ */
+ protected void wire(AssemblyContext modelContext) {
for (Wire wire : getWires()) {
// Get the source reference
@@ -276,7 +284,7 @@
}
}
if (configuredReference == null) {
- throw new IllegalArgumentException("Cannot find wire source "
+ sourceURI.getAddress());
+ throw new IllegalArgumentException("Cannot find wire source "
+ sourceURI.getPath());
} else {
// Resolve the target service endpoint
@@ -293,11 +301,10 @@
configuredReference.getTargetConfiguredServices().add(configuredService);
}
} else {
- throw new IllegalArgumentException("Cannot find service
for '" + targetURI.getAddress() +"'.");
+ throw new IllegalArgumentException("Cannot find service '"
+ targetURI.getPath() +"'.");
}
}
}
-
}
public Class<?> getImplementationClass() {
Modified:
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleFragmentImpl.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleFragmentImpl.java?rev=406056&r1=406055&r2=406056&view=diff
==============================================================================
---
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleFragmentImpl.java
(original)
+++
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleFragmentImpl.java
Sat May 13 02:42:21 2006
@@ -16,6 +16,7 @@
*/
package org.apache.tuscany.model.assembly.impl;
+import org.apache.tuscany.model.assembly.AssemblyContext;
import org.apache.tuscany.model.assembly.ModuleFragment;
/**
@@ -24,6 +25,11 @@
public class ModuleFragmentImpl extends CompositeImpl implements
ModuleFragment {
protected ModuleFragmentImpl() {
+ }
+
+ protected void wire(AssemblyContext modelContext) {
+ // No wiring inside a module fragment
+ // Wires are handled at the module level
}
}
Modified:
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ServiceURIImpl.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ServiceURIImpl.java?rev=406056&r1=406055&r2=406056&view=diff
==============================================================================
---
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ServiceURIImpl.java
(original)
+++
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ServiceURIImpl.java
Sat May 13 02:42:21 2006
@@ -37,13 +37,19 @@
private String serviceName;
/**
- * Constructor
+ * Constructs a new ServiceURIImpl.
* @param address
*/
protected ServiceURIImpl(String address) {
this.address = address;
}
+ /**
+ * Constructs a new ServiceURIImpl.
+ * @param moduleComponent
+ * @param partName
+ * @param portName
+ */
protected ServiceURIImpl(ModuleComponent moduleComponent, String partName,
String portName) {
if (moduleComponent != null)
moduleComponentName = moduleComponent.getName();
@@ -54,8 +60,7 @@
}
/**
- * Constructor
- *
+ * Constructs a new ServiceURIImpl.
* @param moduleComponent
* @param configuredPort
*/
@@ -113,10 +118,6 @@
isParsed = true;
}
- /**
- * Returns true if the address scheme is sca:
- *
- */
public boolean isSCAScheme() {
if (isSCAScheme == null) {
if (address != null && address.startsWith("sca://")) {
@@ -128,13 +129,31 @@
return isSCAScheme.booleanValue();
}
- /**
- * @return Returns the address.
- */
public String getAddress() {
return address;
}
+ public String getPath() {
+ StringBuffer path = new StringBuffer();
+ String mc = getModuleComponentName();
+ if (mc != null) {
+ path.append(mc);
+ }
+ String p = getPartName();
+ if (p !=null) {
+ if (path.length()!=0)
+ path.append('/');
+ path.append(p);
+ }
+ String s = getServiceName();
+ if (s !=null) {
+ if (path.length()!=0)
+ path.append('/');
+ path.append(s);
+ }
+ return path.toString();
+ }
+
/**
* Parse the address.
*/