diff options
author | antelder <antelder@13f79535-47bb-0310-9956-ffa450edef68> | 2010-04-19 15:05:53 +0000 |
---|---|---|
committer | antelder <antelder@13f79535-47bb-0310-9956-ffa450edef68> | 2010-04-19 15:05:53 +0000 |
commit | c685f5cc5df3ca8a0b609fd78b29215fa831b47d (patch) | |
tree | 61c2b124120762de88f947afbd8d03b73a2f42d8 /maven-plugins | |
parent | cb340e0c96deca47be86fe22f3890cc4dd6385ff (diff) |
Update tuscany run plugin to support specifying additional contributions in the plugin config xml, and to support NodeFactory config properties
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@935611 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'maven-plugins')
-rw-r--r-- | maven-plugins/trunk/maven-tuscany-plugin/src/main/java/org/apache/tuscany/maven/plugin/TuscanyRunMojo.java | 65 |
1 files changed, 51 insertions, 14 deletions
diff --git a/maven-plugins/trunk/maven-tuscany-plugin/src/main/java/org/apache/tuscany/maven/plugin/TuscanyRunMojo.java b/maven-plugins/trunk/maven-tuscany-plugin/src/main/java/org/apache/tuscany/maven/plugin/TuscanyRunMojo.java index 1e35b1dbc1..c60eeb4793 100644 --- a/maven-plugins/trunk/maven-tuscany-plugin/src/main/java/org/apache/tuscany/maven/plugin/TuscanyRunMojo.java +++ b/maven-plugins/trunk/maven-tuscany-plugin/src/main/java/org/apache/tuscany/maven/plugin/TuscanyRunMojo.java @@ -22,13 +22,15 @@ import java.io.File; import java.net.MalformedURLException; import java.util.ArrayList; import java.util.List; -import java.util.StringTokenizer; +import org.apache.maven.artifact.Artifact; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugin.logging.Log; -import org.apache.tuscany.sca.domain.node.DomainNode; +import org.apache.maven.project.MavenProject; +import org.apache.tuscany.sca.node.Node; +import org.apache.tuscany.sca.node.NodeFactory; /** * Maven Mojo to run the SCA contribution project in Tuscany. @@ -42,6 +44,15 @@ import org.apache.tuscany.sca.domain.node.DomainNode; public class TuscanyRunMojo extends AbstractMojo { /** + * The maven project. + * + * @parameter expression="${project}" + * @required + * @readonly + */ + private MavenProject project; + + /** * The project artifactId. * * @parameter expression="${project.artifactId}" @@ -74,14 +85,18 @@ public class TuscanyRunMojo extends AbstractMojo { protected File finalName; /** - * @parameter expression="${domain}" default-value="tuscany:default" + * @parameter expression="${domain}" default-value="default" */ private String domain; /** + * @parameter expression="${config}" default-value="uri:defaultDomain" + */ + private String config; + /** * @parameter expression="${contributions}" */ - private String contributions; + private String[] contributions; public void execute() throws MojoExecutionException, MojoFailureException { getLog().info("Starting Tuscany Runtime..."); @@ -89,17 +104,39 @@ public class TuscanyRunMojo extends AbstractMojo { List<String> contributionList = new ArrayList<String>(); addProjectContribution(contributionList); + + addAdditionalContributions(contributionList); + + Node node = NodeFactory.newInstance(config).createNode((String)null, contributionList.toArray(new String[contributionList.size()])).start(); + waitForShutdown(node, getLog()); + } + + private void addAdditionalContributions(List<String> contributionList) throws MojoExecutionException { if (contributions != null) { - StringTokenizer st = new StringTokenizer(contributions, ","); - while (st.hasMoreTokens()) { - contributionList.add(st.nextToken()); + for (String s : contributions) { + if (new File(s).exists()) { + contributionList.add(s); + } else { + boolean found = false; + for (Object o : project.getDependencyArtifacts()) { + Artifact a = (Artifact) o; + if (a.getId().startsWith(s)) { + try { + contributionList.add(a.getFile().toURI().toURL().toString()); + } catch (MalformedURLException e) { + throw new MojoExecutionException("", e); + } + found = true; + break; + } + } + if (!found) { + throw new IllegalArgumentException("Contribution not found as file or dependency: " + s); + } + } } } - - DomainNode domainNode = new DomainNode(domain, contributionList.toArray(new String[contributionList.size()])); - - waitForShutdown(domainNode, getLog()); } protected void addProjectContribution(List<String> cs) throws MojoExecutionException { @@ -118,7 +155,7 @@ public class TuscanyRunMojo extends AbstractMojo { } } - protected void waitForShutdown(DomainNode node, Log log) { + protected void waitForShutdown(Node node, Log log) { Runtime.getRuntime().addShutdownHook(new ShutdownThread(node, log)); synchronized (this) { try { @@ -132,10 +169,10 @@ public class TuscanyRunMojo extends AbstractMojo { protected static class ShutdownThread extends Thread { - private DomainNode node; + private Node node; private Log log; - public ShutdownThread(DomainNode node, Log log) { + public ShutdownThread(Node node, Log log) { super(); this.node = node; this.log = log; |