Hi,
I have some concerns about this change.
I assume you are referring to the case where the root of the contribution is
the direct parent of the composite file but not the root of the class path.
Let me take the validation itest [1] as an example:
1) In this case, we can call the following method:
createSCANode("Calculator.composite", new
SCAContribution("TestContribution", new
File("src/main/resources/NoMatchingBinding")
.toURL().toString()));
Please note that the "Calculator.composite" is a URI relative to the SCA
contribution.
One of the itests is working this way in the trunk [2]. I don't think we
should add a new method for this case.
2) I'm not very sure if I like the folder structure used by the itest to
support multiple contributions. It invents a strange packaging scheme and
there are more than one contributions that overlap against each other in the
same tree.
3) In the new method createSCANode(String compositeURI), the compositeURI is
not consistent with other APIs where the compositeURI is not required to be
a file.
4) We should not call the start() method as part of the node creation.
[1] https://svn.apache.org/repos/asf/tuscany/java/sca/itest/validation/
[2]
https://svn.apache.org/repos/asf/tuscany/java/sca/itest/validation/src/test/java/calculator/warning/NoMatchingBindingTestCase.java
Thanks,
Raymond
--------------------------------------------------
From: <[EMAIL PROTECTED]>
Sent: Sunday, July 13, 2008 1:31 AM
To: <[EMAIL PROTECTED]>
Subject: svn commit: r676277 -
/tuscany/java/sca/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
Author: antelder
Date: Sun Jul 13 01:31:53 2008
New Revision: 676277
URL: http://svn.apache.org/viewvc?rev=676277&view=rev
Log:
Add another createSCANode method while TUSCANY-2409 is looked at further
Modified:
tuscany/java/sca/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
Modified:
tuscany/java/sca/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java?rev=676277&r1=676276&r2=676277&view=diff
==============================================================================
---
tuscany/java/sca/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
(original)
+++
tuscany/java/sca/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
Sun Jul 13 01:31:53 2008
@@ -19,9 +19,13 @@
package org.apache.tuscany.sca.node.impl;
+import java.io.File;
+import java.net.MalformedURLException;
+
import org.apache.tuscany.sca.node.SCAContribution;
import org.apache.tuscany.sca.node.SCANode2;
import org.apache.tuscany.sca.node.SCANode2Factory;
+import org.osoa.sca.ServiceRuntimeException;
/**
* Default implementation of an SCA node factory.
@@ -51,4 +55,27 @@
public SCANode2 createSCANode(String compositeURI, String
compositeContent, SCAContribution... contributions) {
return new NodeImpl(compositeURI, compositeContent,
contributions);
}
+
+ @Override
+ public SCANode2 createSCANode(String compositeURI) {
+ try {
+
+ File compositeFile = new File(compositeURI);
+ if (!compositeFile.exists()) {
+ throw new IllegalArgumentException("composite not found:
" + compositeURI);
+ }
+
+ File compositeFolder = compositeFile.getParentFile();
+ SCAContribution contribution = new
SCAContribution(compositeFolder.getName(),
compositeFolder.toURL().toString());
+
+ SCANode2 node = createSCANode(compositeFile.getName(),
contribution);
+
+ node.start();
+
+ return node;
+
+ } catch (MalformedURLException e) {
+ throw new ServiceRuntimeException(e);
+ }
+ }
}