Add results perspective with engine
diff --git a/taverna-workbench-impl/pom.xml b/taverna-workbench-impl/pom.xml
index 6fda97b..bcb0a54 100644
--- a/taverna-workbench-impl/pom.xml
+++ b/taverna-workbench-impl/pom.xml
@@ -219,10 +219,54 @@
<dependency>
<groupId>org.apache.taverna.engine</groupId>
+ <artifactId>taverna-capability-impl</artifactId>
+ <version>${taverna.engine.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.taverna.engine</groupId>
+ <artifactId>taverna-workflowmodel-extensions</artifactId>
+ <version>${taverna.engine.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.taverna.engine</groupId>
+ <artifactId>taverna-dataflow-activity</artifactId>
+ <version>${taverna.engine.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.taverna.engine</groupId>
+ <artifactId>taverna-stringconstant-activity</artifactId>
+ <version>${taverna.engine.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.taverna.commonactivities</groupId>
+ <artifactId>taverna-beanshell-activity</artifactId>
+ <version>${taverna.commonactivities.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.taverna.engine</groupId>
<artifactId>taverna-services-impl</artifactId>
<version>${taverna.engine.version}</version>
<scope>test</scope>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.taverna.engine</groupId>
+ <artifactId>taverna-run-impl</artifactId>
+ <version>${taverna.engine.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.taverna.engine</groupId>
+ <artifactId>taverna-execution-impl</artifactId>
+ <version>${taverna.engine.version}</version>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>${project.parent.groupId}</groupId>
<artifactId>taverna-contextual-views-impl</artifactId>
@@ -242,6 +286,20 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>${project.parent.groupId}</groupId>
+ <artifactId>taverna-renderers-impl</artifactId>
+ <version>${project.parent.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <!-- Not really needed for testing, disabled to avoid classpath issues
+ <dependency>
+ <groupId>${project.parent.groupId}</groupId>
+ <artifactId>taverna-renderers-exts</artifactId>
+ <version>${project.parent.version}</version>
+ <scope>test</scope>
+ </dependency>
+ -->
+ <dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.2</version>
diff --git a/taverna-workbench-impl/src/test/java/org/apache/taverna/workbench/ui/impl/WorkbenchTest.java b/taverna-workbench-impl/src/test/java/org/apache/taverna/workbench/ui/impl/WorkbenchTest.java
index 653894a..a62440e 100644
--- a/taverna-workbench-impl/src/test/java/org/apache/taverna/workbench/ui/impl/WorkbenchTest.java
+++ b/taverna-workbench-impl/src/test/java/org/apache/taverna/workbench/ui/impl/WorkbenchTest.java
@@ -14,16 +14,47 @@
import javax.swing.ImageIcon;
import org.apache.commons.beanutils.BeanUtils;
-import org.apache.taverna.configuration.Configurable;
import org.apache.taverna.configuration.ConfigurationManager;
import org.apache.taverna.configuration.app.ApplicationConfiguration;
import org.apache.taverna.configuration.app.impl.ApplicationConfigurationImpl;
import org.apache.taverna.configuration.impl.ConfigurationManagerImpl;
import org.apache.taverna.lang.observer.Observer;
+import org.apache.taverna.platform.capability.activity.impl.ActivityServiceImpl;
+import org.apache.taverna.platform.capability.api.ActivityService;
+import org.apache.taverna.platform.capability.api.DispatchLayerService;
+import org.apache.taverna.platform.capability.dispatch.impl.DispatchLayerServiceImpl;
+import org.apache.taverna.platform.execution.api.ExecutionEnvironmentService;
+import org.apache.taverna.platform.execution.api.ExecutionService;
+import org.apache.taverna.platform.execution.impl.ExecutionEnvironmentServiceImpl;
+import org.apache.taverna.platform.execution.impl.local.LocalExecutionService;
+import org.apache.taverna.platform.run.api.RunService;
+import org.apache.taverna.platform.run.impl.RunServiceImpl;
import org.apache.taverna.plugin.Plugin;
import org.apache.taverna.plugin.PluginException;
import org.apache.taverna.plugin.PluginManager;
import org.apache.taverna.plugin.xml.jaxb.PluginVersions;
+import org.apache.taverna.reference.ExternalReferenceBuilderSPI;
+import org.apache.taverna.reference.ExternalReferenceTranslatorSPI;
+import org.apache.taverna.reference.ListService;
+import org.apache.taverna.reference.ReferenceService;
+import org.apache.taverna.reference.StreamToValueConverterSPI;
+import org.apache.taverna.reference.ValueToReferenceConverterSPI;
+import org.apache.taverna.reference.impl.ErrorDocumentServiceImpl;
+import org.apache.taverna.reference.impl.InMemoryErrorDocumentDao;
+import org.apache.taverna.reference.impl.InMemoryListDao;
+import org.apache.taverna.reference.impl.InMemoryReferenceSetDao;
+import org.apache.taverna.reference.impl.ListServiceImpl;
+import org.apache.taverna.reference.impl.ReferenceServiceImpl;
+import org.apache.taverna.reference.impl.ReferenceSetAugmentorImpl;
+import org.apache.taverna.reference.impl.ReferenceSetServiceImpl;
+import org.apache.taverna.reference.impl.SimpleT2ReferenceGenerator;
+import org.apache.taverna.reference.impl.external.object.InlineByteArrayReferenceBuilder;
+import org.apache.taverna.reference.impl.external.object.InlineByteToInlineStringTranslator;
+import org.apache.taverna.reference.impl.external.object.InlineStringReferenceBuilder;
+import org.apache.taverna.reference.impl.external.object.InlineStringToInlineByteTranslator;
+import org.apache.taverna.renderers.Renderer;
+import org.apache.taverna.renderers.RendererRegistry;
+import org.apache.taverna.renderers.impl.RendererRegistryImpl;
import org.apache.taverna.scufl2.api.common.WorkflowBean;
import org.apache.taverna.scufl2.api.profiles.Profile;
import org.apache.taverna.scufl2.validation.Status;
@@ -70,9 +101,16 @@
import org.apache.taverna.workbench.ui.zaria.PerspectiveSPI;
import org.apache.taverna.workbench.ui.zaria.UIComponentFactorySPI;
import org.apache.taverna.workbench.ui.zaria.UIComponentSPI;
-import org.apache.taverna.workbench.views.graph.GraphViewComponent;
import org.apache.taverna.workbench.views.graph.GraphViewComponentFactory;
import org.apache.taverna.workbench.views.graph.config.GraphViewConfiguration;
+import org.apache.taverna.workbench.views.results.saveactions.SaveAllResultsSPI;
+import org.apache.taverna.workbench.views.results.saveactions.SaveIndividualResultSPI;
+import org.apache.taverna.workflowmodel.Edits;
+import org.apache.taverna.workflowmodel.processor.activity.ActivityFactory;
+import org.apache.taverna.workflowmodel.processor.dispatch.DispatchLayerFactory;
+import org.apache.taverna.workflowmodel.processor.dispatch.layers.CoreDispatchLayerFactory;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventAdmin;
public class WorkbenchTest {
@@ -152,10 +190,128 @@
public ResultsPerspective getResultsPerspective() {
ResultsPerspective perspective = new ResultsPerspective();
- // TODO: Various setters
+ perspective.setActivityIconManager(getActivityIconManager());
+ perspective.setApplicationConfiguration(getApplicationConfiguration());
+ perspective.setColourManager(getColourManager());
+ perspective.setRendererRegistry(getRendererRegistry());
+ perspective.setRunService(getRunService());
+ perspective.setSaveAllResultsSPIs(serviceLoader(SaveAllResultsSPI.class));
+ perspective.setSaveIndividualResultSPIs(serviceLoader(SaveIndividualResultSPI.class));
+ perspective.setSelectionManager(getSelectionManager());
+ perspective.setWorkbenchConfiguration(getWorkbenchConfiguration());
return perspective;
}
+
+ public RunService getRunService() {
+ RunServiceImpl runServiceImpl = new RunServiceImpl();
+ runServiceImpl.setEventAdmin(getEventAdmin());
+ runServiceImpl.setExecutionEnvironmentService(getExecutionEnvironmentService());
+ return runServiceImpl;
+ }
+
+ private ExecutionEnvironmentService getExecutionEnvironmentService() {
+ ExecutionEnvironmentServiceImpl serviceImpl = new ExecutionEnvironmentServiceImpl();
+ Set<ExecutionService> executionServices = Collections.singleton(getLocalExecutionService());
+ serviceImpl.setExecutionServices(executionServices);
+ return serviceImpl;
+ }
+
+ private ExecutionService getLocalExecutionService() {
+ LocalExecutionService localExecutionService = new LocalExecutionService();
+ localExecutionService.setActivityService(getActivityService());
+ localExecutionService.setDispatchLayerService(getDispatchLayerService());
+ localExecutionService.setEdits(getEdits());
+ localExecutionService.setReferenceService(getReferenceService());
+ return localExecutionService;
+ }
+
+ private Edits getEdits() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ private ReferenceService getReferenceService() {
+ // Adapted from org.apache.taverna.activities.testutils.ActivityInvoker
+
+ ReferenceServiceImpl referenceServiceImpl = new ReferenceServiceImpl();
+ ReferenceSetServiceImpl referenceSetService = new ReferenceSetServiceImpl();
+ ReferenceServiceImpl referenceService = new ReferenceServiceImpl();
+
+ SimpleT2ReferenceGenerator referenceGenerator = new SimpleT2ReferenceGenerator();
+ ReferenceSetAugmentorImpl referenceSetAugmentor = new ReferenceSetAugmentorImpl();
+ referenceSetAugmentor.setBuilders(getBuilders());
+ referenceSetAugmentor.setTranslators(getTranslators());
+ referenceSetService.setReferenceSetAugmentor(referenceSetAugmentor);
+
+ referenceSetService.setT2ReferenceGenerator(referenceGenerator);
+ referenceSetService.setReferenceSetDao(new InMemoryReferenceSetDao());
+ referenceService.setReferenceSetService(referenceSetService);
+
+ ListServiceImpl listService = new ListServiceImpl();
+ listService.setT2ReferenceGenerator(referenceGenerator);
+ listService.setListDao(new InMemoryListDao());
+ referenceService.setListService(listService);
+
+ ErrorDocumentServiceImpl errorDocumentService = new ErrorDocumentServiceImpl();
+ errorDocumentService.setT2ReferenceGenerator(referenceGenerator);
+ errorDocumentService.setErrorDao(new InMemoryErrorDocumentDao());
+
+ referenceService.setErrorDocumentService(errorDocumentService);
+ referenceService.setConverters(serviceLoader(ValueToReferenceConverterSPI.class));
+ referenceService.setValueBuilders(serviceLoader(StreamToValueConverterSPI.class));
+ return referenceService;
+
+ }
+
+ @SuppressWarnings("unchecked")
+ private List<ExternalReferenceBuilderSPI<?>> getBuilders() {
+ List<ExternalReferenceBuilderSPI<?>> builders = new ArrayList<>();
+ builders.add(new InlineByteArrayReferenceBuilder());
+ builders.add(new InlineStringReferenceBuilder());
+ return builders;
+ }
+
+ private List<ExternalReferenceTranslatorSPI<?, ?>> getTranslators() {
+ List<ExternalReferenceTranslatorSPI<?, ?>> translators = new ArrayList<>();
+ translators.add(new InlineByteToInlineStringTranslator());
+ translators.add(new InlineStringToInlineByteTranslator());
+ return translators;
+ }
+
+ private DispatchLayerService getDispatchLayerService() {
+ DispatchLayerServiceImpl dispatchLayerServiceImpl = new DispatchLayerServiceImpl();
+ List<DispatchLayerFactory> list = new ArrayList<>();
+ list.add(new CoreDispatchLayerFactory());
+ dispatchLayerServiceImpl.setDispatchLayerFactories(list);
+ return dispatchLayerServiceImpl;
+ }
+
+ private ActivityService getActivityService() {
+ ActivityServiceImpl serviceImpl = new ActivityServiceImpl();
+ serviceImpl.setActivityFactories(serviceLoader(ActivityFactory.class));
+ return serviceImpl;
+ }
+
+ private EventAdmin getEventAdmin() {
+ // We're outside osgi, so we'll have to make a fake one
+ return new EventAdmin() {
+ @Override
+ public void postEvent(Event event) {
+ System.out.println("Posted event: " + event.getTopic());
+ }
+ @Override
+ public void sendEvent(Event event) {
+ System.out.println("Sent event: " + event.getTopic());
+ }};
+ }
+
+ public RendererRegistry getRendererRegistry() {
+ RendererRegistryImpl rendererRegistryImpl = new RendererRegistryImpl();
+ rendererRegistryImpl.setRenderers(serviceLoader(Renderer.class));
+ return rendererRegistryImpl;
+ }
+
public DesignPerspective getDesignPerspective() {
DesignPerspective p = new DesignPerspective();
p.setEditManager(getEditManager());
@@ -168,8 +324,6 @@
p.setReportViewComponentFactory(getReportViewComponentFactory());
p.setContextualViewComponentFactory(getContextualViewComponentFactory());
p.setGraphViewComponentFactory(getGraphViewComponentFactory());
-
- // TODO: More setters
return p;
}
@@ -186,11 +340,11 @@
return f;
}
- private GraphViewConfiguration getGraphViewConfiguration() {
+ public GraphViewConfiguration getGraphViewConfiguration() {
return new GraphViewConfiguration(getConfigurationManager());
}
- private ColourManager getColourManager() {
+ public ColourManager getColourManager() {
return new ColourManagerImpl(getConfigurationManager());
}
@@ -201,7 +355,7 @@
return configurationManager;
}
- private UIComponentFactorySPI getReportViewComponentFactory() {
+ public UIComponentFactorySPI getReportViewComponentFactory() {
// The report view is broken, so we'll return a dummy instead.
return dummyUiComponentFactory("Report view not implemented");
}
@@ -313,7 +467,7 @@
};
}
- private ActivityIconManager getActivityIconManager() {
+ public ActivityIconManager getActivityIconManager() {
ActivityIconManagerImpl activityIconManagerImpl = new ActivityIconManagerImpl();
activityIconManagerImpl.setActivityIcons(serviceLoader(ActivityIconSPI.class));
return activityIconManagerImpl;
@@ -328,7 +482,7 @@
BeanUtils.copyProperties(this, impl);
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
- // continue;
+ // continue ?
}
}
return spis;