Removed Raven class loading of artifact dependencies. git-svn-id: http://taverna.googlecode.com/svn/taverna/engine/net.sf.taverna.t2.activities/trunk/dependency-activity@11938 bf327186-88b3-11dd-a302-d386e5130c1c
Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/commit/f3a8212f Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/tree/f3a8212f Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/diff/f3a8212f Branch: refs/heads/master Commit: f3a8212fcb9e88b80b319484c99d305acf0198bc Parents: 0c88ecf Author: [email protected] <[email protected]@bf327186-88b3-11dd-a302-d386e5130c1c> Authored: Mon Nov 15 16:59:32 2010 +0000 Committer: [email protected] <[email protected]@bf327186-88b3-11dd-a302-d386e5130c1c> Committed: Mon Nov 15 16:59:32 2010 +0000 ---------------------------------------------------------------------- .../AbstractAsynchronousDependencyActivity.java | 156 +++++++++---------- .../DependencyActivityConfigurationBean.java | 58 +------ 2 files changed, 78 insertions(+), 136 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/f3a8212f/src/main/java/net/sf/taverna/t2/activities/dependencyactivity/AbstractAsynchronousDependencyActivity.java ---------------------------------------------------------------------- diff --git a/src/main/java/net/sf/taverna/t2/activities/dependencyactivity/AbstractAsynchronousDependencyActivity.java b/src/main/java/net/sf/taverna/t2/activities/dependencyactivity/AbstractAsynchronousDependencyActivity.java index 37a9503..f5fe2ab 100644 --- a/src/main/java/net/sf/taverna/t2/activities/dependencyactivity/AbstractAsynchronousDependencyActivity.java +++ b/src/main/java/net/sf/taverna/t2/activities/dependencyactivity/AbstractAsynchronousDependencyActivity.java @@ -25,24 +25,15 @@ import java.io.FilenameFilter; import java.lang.ref.WeakReference; import java.net.URL; import java.net.URLClassLoader; -import java.util.Arrays; import java.util.HashSet; -import java.util.Set; import java.util.WeakHashMap; -import net.sf.taverna.raven.appconfig.ApplicationRuntime; -import net.sf.taverna.raven.prelauncher.BootstrapClassLoader; -import net.sf.taverna.raven.prelauncher.PreLauncher; -import net.sf.taverna.raven.repository.BasicArtifact; -import net.sf.taverna.raven.repository.impl.LocalArtifactClassLoader; -import net.sf.taverna.raven.repository.impl.LocalRepository; import net.sf.taverna.t2.facade.WorkflowInstanceFacade; import net.sf.taverna.t2.workflowmodel.Dataflow; import net.sf.taverna.t2.workflowmodel.Processor; import net.sf.taverna.t2.workflowmodel.processor.activity.AbstractAsynchronousActivity; import net.sf.taverna.t2.workflowmodel.processor.activity.Activity; import net.sf.taverna.t2.workflowmodel.processor.activity.NestedDataflow; -import net.sf.taverna.t2.workflowmodel.utils.Tools; import org.apache.log4j.Logger; @@ -89,7 +80,8 @@ public abstract class AbstractAsynchronousDependencyActivity<ConfigType> extends * The location of the <code>lib</code> directory in TAVERNA_HOME, * where local JAR files the activity depends on should be located. */ - public static File libDir = new File(ApplicationRuntime.getInstance().getApplicationHomeDir(), "lib"); +// public static File libDir = new File(ApplicationRuntime.getInstance().getApplicationHomeDir(), "lib"); + public static File libDir = null; /** * Different ways to share a class loader among activities: @@ -144,24 +136,24 @@ public abstract class AbstractAsynchronousDependencyActivity<ConfigType> extends } } if (classLoaderSharing == ClassLoaderSharing.system) { - if (systemClassLoader == null) - systemClassLoader = PreLauncher.getInstance().getLaunchingClassLoader(); +// if (systemClassLoader == null) +// systemClassLoader = PreLauncher.getInstance().getLaunchingClassLoader(); - if (systemClassLoader instanceof BootstrapClassLoader){ - // Add local and artifact dependencies to the classloader - updateBootstrapClassLoader( - (BootstrapClassLoader) systemClassLoader, - configurationBean, workflowRunID); - return systemClassLoader; - } - else{ +// if (systemClassLoader instanceof BootstrapClassLoader){ +// // Add local and artifact dependencies to the classloader +// updateBootstrapClassLoader( +// (BootstrapClassLoader) systemClassLoader, +// configurationBean, workflowRunID); +// return systemClassLoader; +// } +// else{ // Local dependencies will have to be set with the -classpath option // We cannot have artifact dependencies in this case String message = "System classloader is not Taverna's BootstrapClassLoader, so local dependencies " + "have to defined with -classpath. Artifact dependencies are ignored completely."; logger.warn(message); return systemClassLoader; - } +// } } String message = "Unknown classloader sharing policy named '"+ classLoaderSharing+ "' for " + this.getClass(); logger.error(message); @@ -179,10 +171,10 @@ public abstract class AbstractAsynchronousDependencyActivity<ConfigType> extends String workflowID) { // Find all artifact dependencies - HashSet<URL> urls = findDependencies(ARTIFACTS, configurationBean, workflowID); +// HashSet<URL> urls = findDependencies(ARTIFACTS, configurationBean, workflowID); // Add all local jar dependencies - urls.addAll(findDependencies(LOCAL_JARS, configurationBean, workflowID)); + HashSet<URL> urls = findDependencies(LOCAL_JARS, configurationBean, workflowID); // Create the classloader capable of loading both local jar and artifact dependencies ClassLoader parent = this.getClass().getClassLoader(); // this will be a LocalArtifactClassLoader @@ -210,24 +202,24 @@ public abstract class AbstractAsynchronousDependencyActivity<ConfigType> extends * * @param loader The augmented BootstrapClassLoader system classloader */ - private void updateBootstrapClassLoader(BootstrapClassLoader loader, - DependencyActivityConfigurationBean configurationBean, - String workflowRunID) { - - HashSet<URL> depsURLs = new HashSet<URL>(); - depsURLs.addAll(findDependencies(LOCAL_JARS, configurationBean, workflowRunID)); - depsURLs.addAll(findDependencies(ARTIFACTS, configurationBean, workflowRunID)); - - Set<URL> exists = new HashSet<URL>(Arrays.asList(loader.getURLs())); - for (URL url : depsURLs) { - if (exists.contains(url)) { - continue; - } - logger.info("Registering with system classloader: " + url); - loader.addURL(url); - exists.add(url); - } - } +// private void updateBootstrapClassLoader(BootstrapClassLoader loader, +// DependencyActivityConfigurationBean configurationBean, +// String workflowRunID) { +// +// HashSet<URL> depsURLs = new HashSet<URL>(); +// depsURLs.addAll(findDependencies(LOCAL_JARS, configurationBean, workflowRunID)); +// depsURLs.addAll(findDependencies(ARTIFACTS, configurationBean, workflowRunID)); +// +// Set<URL> exists = new HashSet<URL>(Arrays.asList(loader.getURLs())); +// for (URL url : depsURLs) { +// if (exists.contains(url)) { +// continue; +// } +// logger.info("Registering with system classloader: " + url); +// loader.addURL(url); +// exists.add(url); +// } +// } /** * Finds either local jar or artifact dependencies' URLs for the given classloader @@ -260,7 +252,7 @@ public abstract class AbstractAsynchronousDependencyActivity<ConfigType> extends // as this activity for (Processor proc : wf.getProcessors()) { // Nested workflow case - if (Tools.containsNestedWorkflow(proc)){ + if (!proc.getActivityList().isEmpty() && proc.getActivityList().get(0) instanceof NestedDataflow){ // Get the nested workflow Dataflow nestedWorkflow = ((NestedDataflow) proc.getActivityList().get(0)).getNestedDataflow(); dependenciesURLs.addAll(findNestedDependencies(dependencyType, configurationBean, nestedWorkflow)); @@ -270,7 +262,7 @@ public abstract class AbstractAsynchronousDependencyActivity<ConfigType> extends if (activity instanceof AbstractAsynchronousDependencyActivity){ if (((DependencyActivityConfigurationBean) activity .getConfiguration()).getClassLoaderSharing() == classLoaderSharing) { - if (dependencyType.equals(LOCAL_JARS)){ +// if (dependencyType.equals(LOCAL_JARS)){ // Collect the files of all found local dependencies for (String jar : ((DependencyActivityConfigurationBean)activity.getConfiguration()).getLocalDependencies()) { try { @@ -280,22 +272,22 @@ public abstract class AbstractAsynchronousDependencyActivity<ConfigType> extends continue; } } - } else if (dependencyType.equals(ARTIFACTS) && this.getClass().getClassLoader() instanceof LocalArtifactClassLoader){ - LocalArtifactClassLoader cl = (LocalArtifactClassLoader) this.getClass().getClassLoader(); // this class is always loaded with LocalArtifactClassLoader - // Get the LocalReposotpry capable of finding artifact jar files - LocalRepository rep = (LocalRepository) cl.getRepository(); - for (BasicArtifact art : ((DependencyActivityConfigurationBean) activity - .getConfiguration()) - .getArtifactDependencies()){ - dependencies.add(rep.jarFile(art)); - } - } +// } else if (dependencyType.equals(ARTIFACTS) && this.getClass().getClassLoader() instanceof LocalArtifactClassLoader){ +// LocalArtifactClassLoader cl = (LocalArtifactClassLoader) this.getClass().getClassLoader(); // this class is always loaded with LocalArtifactClassLoader +// // Get the LocalReposotpry capable of finding artifact jar files +// LocalRepository rep = (LocalRepository) cl.getRepository(); +// for (BasicArtifact art : ((DependencyActivityConfigurationBean) activity +// .getConfiguration()) +// .getArtifactDependencies()){ +// dependencies.add(rep.jarFile(art)); +// } +// } } } } } } else { // Just add dependencies for this activity since we can't get hold of the whole workflow - if (dependencyType.equals(LOCAL_JARS)){ +// if (dependencyType.equals(LOCAL_JARS)){ for (String jar : configurationBean.getLocalDependencies()) { try { dependencies.add(new File(libDir, jar)); @@ -304,23 +296,23 @@ public abstract class AbstractAsynchronousDependencyActivity<ConfigType> extends continue; } } - } - else if (dependencyType.equals(ARTIFACTS)){ - if (this.getClass().getClassLoader() instanceof LocalArtifactClassLoader){ // This should normally be the case - LocalArtifactClassLoader cl = (LocalArtifactClassLoader)this.getClass().getClassLoader(); - LocalRepository rep = (LocalRepository)cl.getRepository(); - if (rep != null){ - for (BasicArtifact art : configurationBean.getArtifactDependencies()){ - dependencies.add(rep.jarFile(art)); - } - } - } - else{ - // Tests will not be loaded using the LocalArtifactClassLoader as athey are loaded - // outside Raven so there is nothing we can do about this - some tests - // with dependencies will probably fail - } - } +// } +// else if (dependencyType.equals(ARTIFACTS)){ +// if (this.getClass().getClassLoader() instanceof LocalArtifactClassLoader){ // This should normally be the case +// LocalArtifactClassLoader cl = (LocalArtifactClassLoader)this.getClass().getClassLoader(); +// LocalRepository rep = (LocalRepository)cl.getRepository(); +// if (rep != null){ +// for (BasicArtifact art : configurationBean.getArtifactDependencies()){ +// dependencies.add(rep.jarFile(art)); +// } +// } +// } +// else{ +// // Tests will not be loaded using the LocalArtifactClassLoader as athey are loaded +// // outside Raven so there is nothing we can do about this - some tests +// // with dependencies will probably fail +// } +// } } // Collect the URLs of all found dependencies @@ -352,7 +344,7 @@ public abstract class AbstractAsynchronousDependencyActivity<ConfigType> extends for (Processor proc : nestedWorkflow.getProcessors()) { // Another nested workflow - if (Tools.containsNestedWorkflow(proc)){ + if (!proc.getActivityList().isEmpty() && proc.getActivityList().get(0) instanceof NestedDataflow){ // Get the nested workflow Dataflow nestedNestedWorkflow = ((NestedDataflow) proc.getActivityList().get(0)).getNestedDataflow(); dependenciesURLs.addAll(findNestedDependencies(dependencyType, configurationBean, nestedNestedWorkflow)); @@ -364,7 +356,7 @@ public abstract class AbstractAsynchronousDependencyActivity<ConfigType> extends if (((DependencyActivityConfigurationBean) activity .getConfiguration()).getClassLoaderSharing() == classLoaderSharing) { - if (dependencyType.equals(LOCAL_JARS)){ +// if (dependencyType.equals(LOCAL_JARS)){ // Collect the files of all found local dependencies for (String jar : ((DependencyActivityConfigurationBean)activity.getConfiguration()).getLocalDependencies()) { try { @@ -373,16 +365,16 @@ public abstract class AbstractAsynchronousDependencyActivity<ConfigType> extends logger.warn("Invalid URL for " + jar, ex); continue; } - } } - else if (dependencyType.equals(ARTIFACTS) && this.getClass().getClassLoader() instanceof LocalArtifactClassLoader){ - LocalArtifactClassLoader cl = (LocalArtifactClassLoader) this.getClass().getClassLoader(); // this class is always loaded with LocalArtifactClassLoader - LocalRepository rep = (LocalRepository) cl.getRepository(); - for (BasicArtifact art : ((DependencyActivityConfigurationBean) activity - .getConfiguration()) - .getArtifactDependencies()){ - dependencies.add(rep.jarFile(art)); } - } +// } else if (dependencyType.equals(ARTIFACTS) && this.getClass().getClassLoader() instanceof LocalArtifactClassLoader){ +// LocalArtifactClassLoader cl = (LocalArtifactClassLoader) this.getClass().getClassLoader(); // this class is always loaded with LocalArtifactClassLoader +// LocalRepository rep = (LocalRepository) cl.getRepository(); +// for (BasicArtifact art : ((DependencyActivityConfigurationBean) activity +// .getConfiguration()) +// .getArtifactDependencies()){ +// dependencies.add(rep.jarFile(art)); +// } +// } } } } http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/f3a8212f/src/main/java/net/sf/taverna/t2/activities/dependencyactivity/DependencyActivityConfigurationBean.java ---------------------------------------------------------------------- diff --git a/src/main/java/net/sf/taverna/t2/activities/dependencyactivity/DependencyActivityConfigurationBean.java b/src/main/java/net/sf/taverna/t2/activities/dependencyactivity/DependencyActivityConfigurationBean.java index 8b63590..aab3a6c 100644 --- a/src/main/java/net/sf/taverna/t2/activities/dependencyactivity/DependencyActivityConfigurationBean.java +++ b/src/main/java/net/sf/taverna/t2/activities/dependencyactivity/DependencyActivityConfigurationBean.java @@ -20,19 +20,17 @@ ******************************************************************************/ package net.sf.taverna.t2.activities.dependencyactivity; -import java.net.URL; import java.util.LinkedHashSet; -import net.sf.taverna.raven.repository.BasicArtifact; import net.sf.taverna.t2.activities.dependencyactivity.AbstractAsynchronousDependencyActivity.ClassLoaderSharing; import net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityPortsDefinitionBean; /** - * Parent configuration bean for activities that have local JAR or artifact dependencies, + * Parent configuration bean for activities that have local JAR, * such as API Consumer and Beanshell activity. * * @author Alex Nenadic - * + * @author David Withers */ public class DependencyActivityConfigurationBean extends ActivityPortsDefinitionBean { @@ -48,28 +46,13 @@ public class DependencyActivityConfigurationBean extends * and the paths should be relative. */ private LinkedHashSet<String> localDependencies ;//= new LinkedHashSet<String>(); - - /** - * Artifact dependencies. These artifacts should be available from - * the centrally known repositories or from one of the listed repositories in - * {@link #repositories}. - */ - private LinkedHashSet<BasicArtifact> artifactDependencies ;//= new LinkedHashSet<BasicArtifact>(); - - /** - * Repositoryies to use when searching for artifacts. In addition, the system - * repositories will be searched. - */ - @Deprecated - private LinkedHashSet<URL> repositories ;//= new LinkedHashSet<URL>(); - + /** * Constructor. */ public DependencyActivityConfigurationBean(){ classLoaderSharing = ClassLoaderSharing.workflow; localDependencies = new LinkedHashSet<String>(); - artifactDependencies = new LinkedHashSet<BasicArtifact>(); } /** @@ -84,9 +67,6 @@ public class DependencyActivityConfigurationBean extends if (localDependencies == null) localDependencies = new LinkedHashSet<String>(); - if (artifactDependencies == null) - artifactDependencies = new LinkedHashSet<BasicArtifact>(); - return this; } @@ -133,36 +113,6 @@ public class DependencyActivityConfigurationBean extends public void removeLocalDependency(String dep){ localDependencies.remove(dep); } - - /** - * @return the artifactDependencies - */ - public LinkedHashSet<BasicArtifact> getArtifactDependencies() { - return artifactDependencies; - } - - /** - * @param artifactDependencies the artifactDependencies to set - */ - public void setArtifactDependencies(LinkedHashSet<BasicArtifact> artifactDependencies) { - this.artifactDependencies = artifactDependencies; - } - - /** - * Adds an artifact dependency to the list of local dependencies. - * @param dep - */ - public void addArtifactDependency(BasicArtifact dep){ - artifactDependencies.add(dep); - } - - /** - * Removes an artifact dependency from the list of local dependencies. - * @param dep - */ - public void removeArtifacteDependency(BasicArtifact dep){ - artifactDependencies.remove(dep); - } - + }
