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 2008/03/24 05:54:25 UTC

svn commit: r640314 - in /incubator/tuscany/branches/sca-java-1.2/modules: contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ contribution-namespace/src/main/java/org/apache/tuscany/sca/contribution/namespace/impl/ contribut...

Author: jsdelfino
Date: Sun Mar 23 21:54:14 2008
New Revision: 640314

URL: http://svn.apache.org/viewvc?rev=640314&view=rev
Log:
Merged fix for TUSCANY-2120 from trunk SVN revision r640235.

Added:
    incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/NodeProcessCollectionFacadeImpl.java
      - copied unchanged from r640235, incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/NodeProcessCollectionFacadeImpl.java
    incubator/tuscany/branches/sca-java-1.2/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/builder/
      - copied from r640235, incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/builder/
    incubator/tuscany/branches/sca-java-1.2/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/builder/impl/
      - copied from r640235, incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/builder/impl/
    incubator/tuscany/branches/sca-java-1.2/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/builder/impl/ContributionDependencyBuilderImpl.java
      - copied unchanged from r640235, incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/builder/impl/ContributionDependencyBuilderImpl.java
    incubator/tuscany/branches/sca-java-1.2/modules/workspace-impl/src/test/java/org/apache/tuscany/sca/workspace/builder/
      - copied from r640235, incubator/tuscany/java/sca/modules/workspace-impl/src/test/java/org/apache/tuscany/sca/workspace/builder/
    incubator/tuscany/branches/sca-java-1.2/modules/workspace-impl/src/test/java/org/apache/tuscany/sca/workspace/builder/impl/
      - copied from r640235, incubator/tuscany/java/sca/modules/workspace-impl/src/test/java/org/apache/tuscany/sca/workspace/builder/impl/
    incubator/tuscany/branches/sca-java-1.2/modules/workspace-impl/src/test/java/org/apache/tuscany/sca/workspace/builder/impl/ContributionDependencyBuilderTestCase.java
      - copied unchanged from r640235, incubator/tuscany/java/sca/modules/workspace-impl/src/test/java/org/apache/tuscany/sca/workspace/builder/impl/ContributionDependencyBuilderTestCase.java
    incubator/tuscany/branches/sca-java-1.2/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/builder/
      - copied from r640235, incubator/tuscany/java/sca/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/builder/
    incubator/tuscany/branches/sca-java-1.2/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/builder/ContributionDependencyBuilder.java
      - copied unchanged from r640235, incubator/tuscany/java/sca/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/builder/ContributionDependencyBuilder.java
    incubator/tuscany/branches/sca-java-1.2/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/builder/ContributionDependencyBuilderMonitor.java
      - copied unchanged from r640235, incubator/tuscany/java/sca/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/builder/ContributionDependencyBuilderMonitor.java
Removed:
    incubator/tuscany/branches/sca-java-1.2/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/dependency/
    incubator/tuscany/branches/sca-java-1.2/modules/workspace-impl/src/test/java/org/apache/tuscany/sca/workspace/dependency/
Modified:
    incubator/tuscany/branches/sca-java-1.2/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportImpl.java
    incubator/tuscany/branches/sca-java-1.2/modules/contribution-namespace/src/main/java/org/apache/tuscany/sca/contribution/namespace/impl/NamespaceImportImpl.java
    incubator/tuscany/branches/sca-java-1.2/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceImportImpl.java
    incubator/tuscany/branches/sca-java-1.2/modules/implementation-node-runtime/src/main/resources/NodeDaemon.composite
    incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionCollectionImpl.java
    incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DomainAdminUtil.java
    incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/QuickStartServiceImpl.java
    incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/resources/DomainAdmin.composite
    incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/resources/cloud.html
    incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/resources/workspace.html

Modified: incubator/tuscany/branches/sca-java-1.2/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.2/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportImpl.java?rev=640314&r1=640313&r2=640314&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.2/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportImpl.java (original)
+++ incubator/tuscany/branches/sca-java-1.2/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportImpl.java Sun Mar 23 21:54:14 2008
@@ -102,4 +102,9 @@
         
         return false;
     }
+    
+    @Override
+    public String toString() {
+        return String.valueOf(packageName);
+    }
 }

Modified: incubator/tuscany/branches/sca-java-1.2/modules/contribution-namespace/src/main/java/org/apache/tuscany/sca/contribution/namespace/impl/NamespaceImportImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.2/modules/contribution-namespace/src/main/java/org/apache/tuscany/sca/contribution/namespace/impl/NamespaceImportImpl.java?rev=640314&r1=640313&r2=640314&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.2/modules/contribution-namespace/src/main/java/org/apache/tuscany/sca/contribution/namespace/impl/NamespaceImportImpl.java (original)
+++ incubator/tuscany/branches/sca-java-1.2/modules/contribution-namespace/src/main/java/org/apache/tuscany/sca/contribution/namespace/impl/NamespaceImportImpl.java Sun Mar 23 21:54:14 2008
@@ -84,4 +84,9 @@
         }
         return false;
     }
+    
+    @Override
+    public String toString() {
+        return String.valueOf(namespace);
+    }
 }

Modified: incubator/tuscany/branches/sca-java-1.2/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceImportImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.2/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceImportImpl.java?rev=640314&r1=640313&r2=640314&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.2/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceImportImpl.java (original)
+++ incubator/tuscany/branches/sca-java-1.2/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceImportImpl.java Sun Mar 23 21:54:14 2008
@@ -99,4 +99,9 @@
         }
         return false;
     }
+    
+    @Override
+    public String toString() {
+        return String.valueOf(uri);
+    }
 }

Modified: incubator/tuscany/branches/sca-java-1.2/modules/implementation-node-runtime/src/main/resources/NodeDaemon.composite
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.2/modules/implementation-node-runtime/src/main/resources/NodeDaemon.composite?rev=640314&r1=640313&r2=640314&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.2/modules/implementation-node-runtime/src/main/resources/NodeDaemon.composite (original)
+++ incubator/tuscany/branches/sca-java-1.2/modules/implementation-node-runtime/src/main/resources/NodeDaemon.composite Sun Mar 23 21:54:14 2008
@@ -25,7 +25,7 @@
     <component name="NodeProcessCollectionComponent">
         <implementation.java class="org.apache.tuscany.sca.implementation.node.launcher.NodeProcessCollectionImpl"/>
    		<service name="ItemCollection">
-   	 		<t:binding.atom uri="http://localhost:9990/process" title="Log"/>
+   	 		<t:binding.atom uri="http://localhost:9990/node/processes" title="Log"/>
    		</service>
     </component>
 

Modified: incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionCollectionImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionCollectionImpl.java?rev=640314&r1=640313&r2=640314&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionCollectionImpl.java (original)
+++ incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionCollectionImpl.java Sun Mar 23 21:54:14 2008
@@ -30,6 +30,7 @@
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URL;
 import java.net.URLDecoder;
@@ -53,6 +54,7 @@
 
 import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.builder.Problem;
 import org.apache.tuscany.sca.contribution.Contribution;
 import org.apache.tuscany.sca.contribution.ContributionFactory;
 import org.apache.tuscany.sca.contribution.DefaultModelFactoryExtensionPoint;
@@ -77,7 +79,9 @@
 import org.apache.tuscany.sca.implementation.data.collection.NotFoundException;
 import org.apache.tuscany.sca.workspace.Workspace;
 import org.apache.tuscany.sca.workspace.WorkspaceFactory;
-import org.apache.tuscany.sca.workspace.dependency.impl.ContributionDependencyAnalyzer;
+import org.apache.tuscany.sca.workspace.builder.ContributionDependencyBuilder;
+import org.apache.tuscany.sca.workspace.builder.ContributionDependencyBuilderMonitor;
+import org.apache.tuscany.sca.workspace.builder.impl.ContributionDependencyBuilderImpl;
 import org.apache.tuscany.sca.workspace.processor.impl.ContributionInfoProcessor;
 import org.apache.tuscany.sca.workspace.xml.WorkspaceProcessor;
 import org.apache.xml.serialize.OutputFormat;
@@ -212,7 +216,11 @@
         Workspace workspace = readWorkspace();
         Contribution contribution = contributionFactory.createContribution();
         contribution.setURI(key);
-        contribution.setLocation(item.getLink());
+        try {
+            contribution.setLocation(locationURL(item.getLink()).toString());
+        } catch (MalformedURLException e) {
+            throw new ServiceRuntimeException(e);
+        }
         workspace.getContributions().add(contribution);
         
         // Write the workspace
@@ -227,7 +235,11 @@
         Workspace workspace = readWorkspace();
         Contribution newContribution = contributionFactory.createContribution();
         newContribution.setURI(key);
-        newContribution.setLocation(item.getLink());
+        try {
+            newContribution.setLocation(locationURL(item.getLink()).toString());
+        } catch (MalformedURLException e) {
+            throw new ServiceRuntimeException(e);
+        }
         List<Contribution> contributions = workspace.getContributions();
         for (int i = 0, n = contributions.size(); i < n; i++) {
             if (contributions.get(i).getURI().equals(key)) {
@@ -279,8 +291,8 @@
                 if (key.equals(contribution.getURI())) {
 
                     // Compute the contribution dependencies
-                    ContributionDependencyAnalyzer analyzer = new ContributionDependencyAnalyzer();
-                    List<Contribution> dependencies = analyzer.calculateContributionDependencies(workspace, contribution);
+                    ContributionDependencyBuilder analyzer = new ContributionDependencyBuilderImpl(null);
+                    List<Contribution> dependencies = analyzer.buildContributionDependencies(workspace, contribution);
                     
                     // Returns entries for the dependencies
                     // optionally skip the specified contribution
@@ -329,9 +341,16 @@
         item.setAlternate(contribution.getLocation());
         
         // List the contribution dependencies in the item contents
+        final List<String> problems = new ArrayList<String>();
+        ContributionDependencyBuilderMonitor monitor = new ContributionDependencyBuilderMonitor() {
+            public void problem(Problem problem) {
+                problems.add(problem.getMessage() + " " + problem.getModel());
+            }
+        };
+        
         StringBuffer sb = new StringBuffer();
-        ContributionDependencyAnalyzer analyzer = new ContributionDependencyAnalyzer();
-        List<Contribution> dependencies = analyzer.calculateContributionDependencies(workspace, contribution);
+        ContributionDependencyBuilderImpl analyzer = new ContributionDependencyBuilderImpl(monitor);
+        List<Contribution> dependencies = analyzer.buildContributionDependencies(workspace, contribution);
         if (dependencies.size() > 1) {
             sb.append("Dependencies: <span id=\"dependencies\">");
             for (int i = 0, n = dependencies.size(); i < n ; i++) {
@@ -362,7 +381,16 @@
             sb.append("</span><br>");
         }
         
-        // Store the two lists in the item contents
+        // List the dependency problems
+        if (problems.size() > 1) {
+            sb.append("<span id=\"problems\" style=\"color: red\">");
+            for (int i = 0, n = problems.size(); i < n ; i++) {
+                sb.append("Problem: "+ problems.get(i) + "<br>");
+            }
+            sb.append("</span>");
+        }
+        
+        // Store in the item contents
         item.setContents(sb.toString());
         
         return item;

Modified: incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DomainAdminUtil.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DomainAdminUtil.java?rev=640314&r1=640313&r2=640314&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DomainAdminUtil.java (original)
+++ incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DomainAdminUtil.java Sun Mar 23 21:54:14 2008
@@ -154,4 +154,23 @@
         }
     }
 
+    /**
+     * Extract a node URI from an ATOM entry content.
+     * 
+     * @param content
+     * @return
+     */
+    static String nodeURI(String content) {
+        if (content != null) {
+            int bs = content.indexOf("<span id=\"nodeURI\">");
+            if (bs != -1) {
+                content = content.substring(bs + 19);
+                int es = content.indexOf("</span>");
+                if (es != -1) {
+                    return content.substring(0, es);
+                }
+            }
+        }
+        return null;
+    }
 }

Modified: incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/QuickStartServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/QuickStartServiceImpl.java?rev=640314&r1=640313&r2=640314&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/QuickStartServiceImpl.java (original)
+++ incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/QuickStartServiceImpl.java Sun Mar 23 21:54:14 2008
@@ -22,6 +22,7 @@
 import static org.apache.tuscany.sca.workspace.admin.impl.DomainAdminUtil.compositeKey;
 import static org.apache.tuscany.sca.workspace.admin.impl.DomainAdminUtil.compositeQName;
 import static org.apache.tuscany.sca.workspace.admin.impl.DomainAdminUtil.contributionURI;
+import static org.apache.tuscany.sca.workspace.admin.impl.DomainAdminUtil.nodeURI;
 
 import java.io.IOException;
 import java.net.URI;
@@ -174,20 +175,12 @@
                 Set<Integer> nodePorts = new HashSet<Integer>(); 
                 for (Entry<String, Item> entry: nodeEntries) {
                     Item item = entry.getData();
-                    String content = item.getContents();
-                    if (content != null) {
-                        int bs = content.indexOf("<span id=\"nodeURI\">");
-                        if (bs != -1) {
-                            content = content.substring(bs + 19);
-                            int es = content.indexOf("</span>");
-                            if (es != -1) {
-                                content = content.substring(0, es);
-                                URI uri = URI.create(content);
-                                int port = uri.getPort();
-                                if (port != -1) {
-                                    nodePorts.add(port);
-                                }
-                            }
+                    String uri = nodeURI(item.getContents());
+                    if (uri != null) {
+                        URI u = URI.create(uri);
+                        int port = u.getPort();
+                        if (port != -1) {
+                            nodePorts.add(port);
                         }
                     }
                 }

Modified: incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/resources/DomainAdmin.composite
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/resources/DomainAdmin.composite?rev=640314&r1=640313&r2=640314&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/resources/DomainAdmin.composite (original)
+++ incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/resources/DomainAdmin.composite Sun Mar 23 21:54:14 2008
@@ -67,7 +67,7 @@
 		 <reference name="cloudComposite" target="CloudCollectionComponent/ItemCollection">
 		 	<t:binding.atom/>
 		 </reference>
-		 <reference name="processCollection" target="NodeProcessCollectionComponent/ItemCollection">
+		 <reference name="processCollection" target="NodeProcessCollectionFacadeComponent/ItemCollection">
 		 	<t:binding.atom/>
 		 </reference>
     </component>
@@ -162,10 +162,21 @@
    		<reference name="processCollection" target="NodeProcessCollectionComponent/LocalItemCollection"/>
     </component>
 
+    <component name="NodeProcessCollectionFacadeComponent">
+        <implementation.java class="org.apache.tuscany.sca.workspace.admin.impl.NodeProcessCollectionFacadeImpl"/>
+   		<service name="ItemCollection">
+   	 		<t:binding.atom uri="http://localhost:9990/processes" title="Log"/>
+   		</service>
+   		<reference name="cloudCollection" target="CloudCollectionComponent/LocalItemCollection"/>
+   		<reference name="processCollection" target="NodeProcessCollectionComponent/ItemCollection">
+   	 		<t:binding.atom/>
+   		</reference>
+    </component>
+
     <component name="NodeProcessCollectionComponent">
         <implementation.java class="org.apache.tuscany.sca.implementation.node.launcher.NodeProcessCollectionImpl"/>
    		<service name="ItemCollection">
-   	 		<t:binding.atom uri="http://localhost:9990/process" title="Log"/>
+   	 		<t:binding.atom uri="http://localhost:9990/node/processes" title="Log"/>
    		</service>
     </component>
 

Modified: incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/resources/cloud.html
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/resources/cloud.html?rev=640314&r1=640313&r2=640314&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/resources/cloud.html (original)
+++ incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/resources/cloud.html Sun Mar 23 21:54:14 2008
@@ -104,7 +104,7 @@
 					composites += '<td><a href="/contribution/' + uri + '">' + uri + '</a></td>';
 				}
 				composites += '<td><a href="/node-image/' + nodeName + '"><img src="icons/feed-icon.png" border="0"></a></td>';
-				composites += '<td><a href="/process/?node=' + nodeName + '"><img src="icons/feed-icon.png" border="0"></a></td>';
+				composites += '<td><a href="/processes/?node=' + nodeName + '"><img src="icons/feed-icon.png" border="0"></a></td>';
 				composites += '</tr>';
 			}
 			composites += '</table>';

Modified: incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/resources/workspace.html
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/resources/workspace.html?rev=640314&r1=640313&r2=640314&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/resources/workspace.html (original)
+++ incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/resources/workspace.html Sun Mar 23 21:54:14 2008
@@ -63,8 +63,18 @@
 					var es = content.indexOf('</span>', bs); 
 					deployables = content.substring(bs, es + 7);
 				}
+				
+				var problems = "";
+				var bs = content.indexOf('<span id="problems" ');
+				if (bs != -1) {
+					var es = content.indexOf('</span>', bs);
+					if (dependencies.length != 0) {
+					  problems = '<br>';
+					} 
+					problems += content.substring(bs, es + 7);
+				}
 											
-				contributions += '<td class=tdw>' + dependencies +' </td>';
+				contributions += '<td class=tdw>' + dependencies + ' </td>';
 				contributions += '<td class=tdw>' + deployables + '</td>';
 				contributions += '</tr>';
 			}
@@ -138,7 +148,7 @@
     <br>
     <table>
     <tr><td>Contribution URI:</td><td><input type="text" name="contributionID" size="50"/></td></td><td>e.g. mycontrib, http://mycontrib</td></tr> 
-    <tr><td>Address:</td><td><input type="text" name="contributionLocation" size="50"/></td></td><td>e.g. http://host/myjar.jar, file:/mydir, file:/myjar.jar</td></tr>
+    <tr><td>Location:</td><td><input type="text" name="contributionLocation" size="50"/></td></td><td>e.g. http://host/myjar.jar, file:/mydir, file:/myjar.jar</td></tr>
     </table>
     <input type="button" onClick="addContribution()" value="Add" />
   </form>



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