You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jb...@apache.org on 2007/02/23 03:46:21 UTC
svn commit: r510773 - in /incubator/tuscany/java/sca/runtime:
itest/plugin/src/main/java/org/apache/tuscany/sca/plugin/itest/
itest/smoketest/
webapp/plugin.war/src/main/java/org/apache/tuscany/plugin/war/
Author: jboynes
Date: Thu Feb 22 18:46:21 2007
New Revision: 510773
URL: http://svn.apache.org/viewvc?view=rev&rev=510773
Log:
support classpath extension for the itest plugin
Modified:
incubator/tuscany/java/sca/runtime/itest/plugin/src/main/java/org/apache/tuscany/sca/plugin/itest/Dependency.java
incubator/tuscany/java/sca/runtime/itest/plugin/src/main/java/org/apache/tuscany/sca/plugin/itest/TuscanyITestMojo.java
incubator/tuscany/java/sca/runtime/itest/smoketest/pom.xml
incubator/tuscany/java/sca/runtime/webapp/plugin.war/src/main/java/org/apache/tuscany/plugin/war/Dependency.java
Modified: incubator/tuscany/java/sca/runtime/itest/plugin/src/main/java/org/apache/tuscany/sca/plugin/itest/Dependency.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/itest/plugin/src/main/java/org/apache/tuscany/sca/plugin/itest/Dependency.java?view=diff&rev=510773&r1=510772&r2=510773
==============================================================================
--- incubator/tuscany/java/sca/runtime/itest/plugin/src/main/java/org/apache/tuscany/sca/plugin/itest/Dependency.java (original)
+++ incubator/tuscany/java/sca/runtime/itest/plugin/src/main/java/org/apache/tuscany/sca/plugin/itest/Dependency.java Thu Feb 22 18:46:21 2007
@@ -21,10 +21,9 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.factory.ArtifactFactory;
-
/**
* Represents a configured tuscany dependency for boot and extension libraries.
- *
+ *
* @version $Rev$ $Date$
*/
public class Dependency {
@@ -57,10 +56,10 @@
/**
* Initializes the field.
- *
- * @param groupId Group id.
+ *
+ * @param groupId Group id.
* @param artifactId Artifact id.
- * @param version Artifact version.
+ * @param version Artifact version.
*/
public Dependency(String groupId, String artifactId, String version) {
super();
@@ -71,7 +70,7 @@
/**
* Gets the artifact using the specified artifact factory.
- *
+ *
* @param artifactFactory Artifact factory to use.
* @return Artifact identified by the dependency.
*/
Modified: incubator/tuscany/java/sca/runtime/itest/plugin/src/main/java/org/apache/tuscany/sca/plugin/itest/TuscanyITestMojo.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/itest/plugin/src/main/java/org/apache/tuscany/sca/plugin/itest/TuscanyITestMojo.java?view=diff&rev=510773&r1=510772&r2=510773
==============================================================================
--- incubator/tuscany/java/sca/runtime/itest/plugin/src/main/java/org/apache/tuscany/sca/plugin/itest/TuscanyITestMojo.java (original)
+++ incubator/tuscany/java/sca/runtime/itest/plugin/src/main/java/org/apache/tuscany/sca/plugin/itest/TuscanyITestMojo.java Thu Feb 22 18:46:21 2007
@@ -28,11 +28,19 @@
import java.util.Map;
import java.util.Properties;
import java.util.Collection;
+import java.util.Set;
+import java.util.HashSet;
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
+import org.apache.maven.artifact.metadata.ResolutionGroup;
+import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.resolver.ArtifactResolver;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
+import org.apache.maven.artifact.Artifact;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
@@ -56,6 +64,7 @@
import org.apache.tuscany.spi.model.CompositeImplementation;
import org.apache.tuscany.spi.model.Implementation;
import org.apache.tuscany.spi.model.Operation;
+import org.apache.tuscany.spi.deployer.CompositeClassLoader;
/**
* Integration-tests an SCA composite by running it in local copy of Apache Tuscany
@@ -125,6 +134,13 @@
public URL systemScdl;
/**
+ * Set of extension artifacts that should be deployed to the runtime.
+ *
+ * @parameter
+ */
+ public Dependency[] extensions;
+
+ /**
* @parameter expression="${project.testClasspathElements}"
* @required
* @readonly
@@ -179,7 +195,8 @@
public void execute() throws MojoExecutionException, MojoFailureException {
Log log = getLog();
log.info("Starting Tuscany...");
- MavenEmbeddedRuntime runtime = createRuntime();
+ ClassLoader cl = createHostClassLoader(getClass().getClassLoader(), extensions);
+ MavenEmbeddedRuntime runtime = createRuntime(cl);
runtime.setMonitorFactory(new MavenMonitorFactory(log));
try {
runtime.initialize();
@@ -229,6 +246,59 @@
}
}
+ protected ClassLoader createHostClassLoader(ClassLoader parent, Dependency[] extensions)
+ throws MojoExecutionException {
+ if (extensions == null || extensions.length == 0) {
+ return parent;
+ }
+
+ Set<Artifact> artifacts = new HashSet<Artifact>();
+ for (Dependency extension : extensions) {
+ Artifact artifact = extension.getArtifact(artifactFactory);
+ try {
+ resolver.resolve(artifact, remoteRepositories, localRepository);
+ ResolutionGroup resolutionGroup = metadataSource.retrieve(artifact,
+ localRepository,
+ remoteRepositories);
+ ArtifactResolutionResult result = resolver.resolveTransitively(resolutionGroup.getArtifacts(),
+ artifact,
+ remoteRepositories,
+ localRepository,
+ metadataSource);
+ artifacts.add(artifact);
+ artifacts.addAll(result.getArtifacts());
+ } catch (ArtifactResolutionException e) {
+ throw new MojoExecutionException(e.getMessage(), e);
+ } catch (ArtifactNotFoundException e) {
+ throw new MojoExecutionException(e.getMessage(), e);
+ } catch (ArtifactMetadataRetrievalException e) {
+ throw new MojoExecutionException(e.getMessage(), e);
+ }
+ }
+ URL[] urls = new URL[artifacts.size()];
+ int i = 0;
+ for (Artifact artifact : artifacts) {
+ File file = artifact.getFile();
+ assert file != null;
+ try {
+ urls[i++] = file.toURI().toURL();
+ } catch (MalformedURLException e) {
+ // toURI should have made this valid
+ throw new AssertionError();
+ }
+ }
+
+ Log log = getLog();
+ if (log.isDebugEnabled()) {
+ log.debug("Tuscany extension classpath:");
+ for (URL url : urls) {
+ log.debug(" " + url);
+ }
+ }
+
+ return new CompositeClassLoader(urls, parent);
+ }
+
public boolean runSurefire(SurefireTestSuite testSuite) throws MojoExecutionException {
try {
Properties status = new Properties();
@@ -264,8 +334,7 @@
return reporterManager.getNumErrors() == 0 && reporterManager.getNumFailures() == 0;
}
- protected MavenEmbeddedRuntime createRuntime() throws MojoExecutionException {
- ClassLoader hostClassLoader = getClass().getClassLoader();
+ protected MavenEmbeddedRuntime createRuntime(ClassLoader hostClassLoader) throws MojoExecutionException {
if (systemScdl == null) {
systemScdl = hostClassLoader.getResource("META-INF/tuscany/embeddedMaven.scdl");
}
@@ -332,7 +401,7 @@
Map services = componentType.getServices();
JavaMappedService testService = (JavaMappedService) services.get("testService");
if (testService == null) {
- throw new MojoExecutionException("No testServic defined on component: " + definition.getUri());
+ throw new MojoExecutionException("No testService defined on component: " + definition.getUri());
}
Map<String, ? extends Operation<?>> operations = testService.getServiceContract().getOperations();
return new SCATestSet(runtime, name, uri, operations.values());
Modified: incubator/tuscany/java/sca/runtime/itest/smoketest/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/itest/smoketest/pom.xml?view=diff&rev=510773&r1=510772&r2=510773
==============================================================================
--- incubator/tuscany/java/sca/runtime/itest/smoketest/pom.xml (original)
+++ incubator/tuscany/java/sca/runtime/itest/smoketest/pom.xml Thu Feb 22 18:46:21 2007
@@ -52,6 +52,15 @@
</goals>
</execution>
</executions>
+ <configuration>
+ <extensions>
+ <dependency>
+ <groupId>org.apache.tuscany.sca.kernel</groupId>
+ <artifactId>tuscany-spi</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ </extensions>
+ </configuration>
</plugin>
</plugins>
</build>
Modified: incubator/tuscany/java/sca/runtime/webapp/plugin.war/src/main/java/org/apache/tuscany/plugin/war/Dependency.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/webapp/plugin.war/src/main/java/org/apache/tuscany/plugin/war/Dependency.java?view=diff&rev=510773&r1=510772&r2=510773
==============================================================================
--- incubator/tuscany/java/sca/runtime/webapp/plugin.war/src/main/java/org/apache/tuscany/plugin/war/Dependency.java (original)
+++ incubator/tuscany/java/sca/runtime/webapp/plugin.war/src/main/java/org/apache/tuscany/plugin/war/Dependency.java Thu Feb 22 18:46:21 2007
@@ -23,7 +23,7 @@
/**
* Represents a configured tuscany dependency for boot and extension libraries.
- *
+ *
* @version $Rev$ $Date$
*/
public class Dependency {
@@ -50,20 +50,16 @@
/**
* Default constructor.
- *
*/
public Dependency() {
}
/**
* Initializes the field.
- *
- * @param groupId
- * Group id.
- * @param artifactId
- * Artifact id.
- * @param version
- * Artifact version.
+ *
+ * @param groupId Group id.
+ * @param artifactId Artifact id.
+ * @param version Artifact version.
*/
public Dependency(String groupId, String artifactId, String version) {
super();
@@ -74,9 +70,8 @@
/**
* Gets the artifact using the specified artifact factory.
- *
- * @param artifactFactory
- * Artifact factory to use.
+ *
+ * @param artifactFactory Artifact factory to use.
* @return Artifact identified by the dependency.
*/
public Artifact getArtifact(ArtifactFactory artifactFactory) {
@@ -85,13 +80,11 @@
/**
* Checks whether the specified artifact has the same artifact id.
- *
- * @param artifact
- * Artifact to be matched.
- * @return True if the sepcified artifact has the same id.
+ *
+ * @param artifact Artifact to be matched.
+ * @return True if the specified artifact has the same id.
*/
public boolean match(Artifact artifact) {
- // TODO Auto-generated method stub
return artifact.getArtifactId().equals(artifactId);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org