You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by st...@apache.org on 2016/10/21 09:48:46 UTC

[12/29] incubator-taverna-workbench git commit: Playing with latest Spring ..

Playing with latest Spring ..


Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/commit/e2896bda
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/tree/e2896bda
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/diff/e2896bda

Branch: refs/heads/master
Commit: e2896bda5739c73d2b73a1b02f5be6f65b0e339b
Parents: 1030bbc
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Wed Sep 7 12:17:29 2016 +0100
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Fri Oct 21 09:17:18 2016 +0200

----------------------------------------------------------------------
 taverna-workbench-impl/pom.xml                  |  10 +-
 .../workbench/ui/impl/WorkbenchImpl.java        |   3 +
 .../taverna/workbench/ui/impl/Application.java  |  31 +++
 .../workbench/ui/impl/WorkbenchLauncher.java    |  52 ++--
 .../workbench/ui/impl/WorkbenchTest.java        | 267 +++++++++++--------
 5 files changed, 230 insertions(+), 133 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/e2896bda/taverna-workbench-impl/pom.xml
----------------------------------------------------------------------
diff --git a/taverna-workbench-impl/pom.xml b/taverna-workbench-impl/pom.xml
index 19f49e2..27d313b 100644
--- a/taverna-workbench-impl/pom.xml
+++ b/taverna-workbench-impl/pom.xml
@@ -77,7 +77,7 @@
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-test</artifactId>
-			<version>1.3.6.RELEASE</version>
+			<version>1.4.0.RELEASE</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
@@ -138,7 +138,7 @@
 		<dependency>
 			<groupId>junit</groupId>
 			<artifactId>junit</artifactId>
-			<version>${junit.version}</version>
+			<version>4.12</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
@@ -261,6 +261,12 @@
 			<version>${taverna.commonactivities.version}</version>
 			<scope>test</scope>
 		</dependency>
+		<dependency>
+			<groupId>org.apache.taverna.commonactivities</groupId>					
+			<artifactId>taverna-cwl-activity-ui</artifactId>
+			<version>2.1.1-incubating-SNAPSHOT</version>
+			<scope>test</scope>
+		</dependency>
 
 		<dependency>
 			<groupId>org.apache.taverna.engine</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/e2896bda/taverna-workbench-impl/src/main/java/org/apache/taverna/workbench/ui/impl/WorkbenchImpl.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-impl/src/main/java/org/apache/taverna/workbench/ui/impl/WorkbenchImpl.java b/taverna-workbench-impl/src/main/java/org/apache/taverna/workbench/ui/impl/WorkbenchImpl.java
index 62e3cf1..40ecf90 100644
--- a/taverna-workbench-impl/src/main/java/org/apache/taverna/workbench/ui/impl/WorkbenchImpl.java
+++ b/taverna-workbench-impl/src/main/java/org/apache/taverna/workbench/ui/impl/WorkbenchImpl.java
@@ -86,6 +86,7 @@ import org.simplericity.macify.eawt.ApplicationAdapter;
 import org.simplericity.macify.eawt.ApplicationEvent;
 import org.simplericity.macify.eawt.ApplicationListener;
 import org.simplericity.macify.eawt.DefaultApplication;
+import org.springframework.stereotype.Component;
 
 /**
  * The main workbench frame.
@@ -93,6 +94,8 @@ import org.simplericity.macify.eawt.DefaultApplication;
  * @author David Withers
  * @author Stian Soiland-Reyes
  */
+
+@Component
 public class WorkbenchImpl extends JFrame implements Workbench {
 	private static final String NIMBUS = "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel";
 	private static final String LAUNCHER_LOGO_PNG = "/launcher_logo.png";

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/e2896bda/taverna-workbench-impl/src/test/java/org/apache/taverna/workbench/ui/impl/Application.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-impl/src/test/java/org/apache/taverna/workbench/ui/impl/Application.java b/taverna-workbench-impl/src/test/java/org/apache/taverna/workbench/ui/impl/Application.java
new file mode 100644
index 0000000..8ad7429
--- /dev/null
+++ b/taverna-workbench-impl/src/test/java/org/apache/taverna/workbench/ui/impl/Application.java
@@ -0,0 +1,31 @@
+package org.apache.taverna.workbench.ui.impl;
+
+import java.util.Arrays;
+
+import org.apache.taverna.workbench.ui.Workbench;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.ApplicationContext;
+
+@SpringBootApplication
+public class Application {
+
+		@Autowired
+		Workbench workbench;
+
+	
+	    public static void main(String[] args) {
+	    	ApplicationContext ctx = SpringApplication.run(Application.class, args);
+	        System.out.println("Oooo");
+
+	        System.out.println("Let's inspect the beans provided by Spring Boot:");
+
+	        String[] beanNames = ctx.getBeanDefinitionNames();
+	        Arrays.sort(beanNames);
+	        for (String beanName : beanNames) {
+	            System.out.println(beanName);
+	        }	        
+	    }
+	
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/e2896bda/taverna-workbench-impl/src/test/java/org/apache/taverna/workbench/ui/impl/WorkbenchLauncher.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-impl/src/test/java/org/apache/taverna/workbench/ui/impl/WorkbenchLauncher.java b/taverna-workbench-impl/src/test/java/org/apache/taverna/workbench/ui/impl/WorkbenchLauncher.java
index 02e3d49..0e54033 100644
--- a/taverna-workbench-impl/src/test/java/org/apache/taverna/workbench/ui/impl/WorkbenchLauncher.java
+++ b/taverna-workbench-impl/src/test/java/org/apache/taverna/workbench/ui/impl/WorkbenchLauncher.java
@@ -1,23 +1,29 @@
-package org.apache.taverna.workbench.ui.impl;
-
-import org.apache.taverna.workbench.ui.Workbench;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.ContextHierarchy;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-public class WorkbenchLauncher {
-
-	@Autowired
-	Workbench workbench;
-
-	@Test
-	public void testName() throws Exception {
-		Thread.sleep(1000);
-		System.out.println(workbench.toString());
-	}
-	
-}
+//package org.apache.taverna.workbench.ui.impl;
+//
+//import org.apache.taverna.workbench.ui.Workbench;
+//import org.junit.Test;
+//import org.junit.runner.RunWith;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+//import org.springframework.boot.test.context.SpringBootTest;
+//import org.springframework.test.context.junit4.SpringRunner;
+//
+//
+//
+////@RunWith(SpringJUnit4ClassRunner.class)
+////@RunWith(SpringRunner.class)
+////@SpringBootTest
+////@AutoConfigureMockMvc
+////@AutoConfigureCache
+//public class WorkbenchLauncher {
+//
+////	@Autowired
+////	Workbench workbench;
+//
+//	@Test
+//	public void testName() throws Exception {
+//		Thread.sleep(1000);
+//		System.out.println(workbench.toString());
+//	}
+//	
+//}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/e2896bda/taverna-workbench-impl/src/test/java/org/apache/taverna/workbench/ui/impl/WorkbenchTest.java
----------------------------------------------------------------------
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 a62440e..006a1dd 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
@@ -35,7 +35,6 @@ 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;
@@ -106,6 +105,7 @@ 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.impl.EditsImpl;
 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;
@@ -119,10 +119,15 @@ public class WorkbenchTest {
 		
 		WorkbenchImpl w = new WorkbenchTest().getWorkbench();
 		w.initialize();
+		// NOTE: The above will do w.setVisible(true);
+		// which blocks until the workbench window is closed.
+		System.out.println("Closing..");
+		
+		
 		synchronized(w) {
 			// It won't actually get interrupted, but it means we persist 
-			// as long as w rather than exiting
-			w.wait();
+			// as long as w, rather than exiting right away
+		//	w.wait();
 		}
 	}
 
@@ -138,6 +143,21 @@ public class WorkbenchTest {
 	private WorkflowExplorerFactory workflowExplorerFactory;
 	private ServiceDescriptionRegistryImpl serviceDescriptionRegistry;
 	private ConfigurationManagerImpl configurationManager;
+	private DesignPerspective designPerspective;
+	private ResultsPerspective resultsPerspective;
+	private ContextualViewComponentFactory contextualViewComponentFactory;
+	private ApplicationConfiguration appConfig;
+	private List<StartupSPI> startupHooks;
+	private ServiceRegistryImpl serviceRegistry;
+	private ActivityServiceImpl activityService;
+	private DispatchLayerServiceImpl dispatchLayerService;
+	private RendererRegistryImpl rendererRegistry;
+	private ReferenceServiceImpl referenceService;
+	private LocalExecutionService localExecutionService;
+	private ExecutionEnvironmentServiceImpl executionEnvironmentService;
+	private RunServiceImpl runService;
+	private ActivityIconManagerImpl activityIconManager;
+	private GraphViewComponentFactory graphViewComponentFactory;
 
 	public FileManager getFileManager() {
 		if (fileManager == null) {
@@ -189,82 +209,88 @@ public class WorkbenchTest {
 	}
 
 	public ResultsPerspective getResultsPerspective() {
-		ResultsPerspective perspective = new ResultsPerspective();
-		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;
+		if (resultsPerspective == null) {
+			resultsPerspective = new ResultsPerspective();
+			resultsPerspective.setActivityIconManager(getActivityIconManager());
+			resultsPerspective.setApplicationConfiguration(getApplicationConfiguration());
+			resultsPerspective.setColourManager(getColourManager());
+			resultsPerspective.setRendererRegistry(getRendererRegistry());
+			resultsPerspective.setRunService(getRunService());
+			resultsPerspective.setSaveAllResultsSPIs(serviceLoader(SaveAllResultsSPI.class));
+			resultsPerspective.setSaveIndividualResultSPIs(serviceLoader(SaveIndividualResultSPI.class));
+			resultsPerspective.setSelectionManager(getSelectionManager());
+			resultsPerspective.setWorkbenchConfiguration(getWorkbenchConfiguration());
+		}
+		return resultsPerspective;
 	}
 
 
 	public RunService getRunService() {
-		RunServiceImpl runServiceImpl = new RunServiceImpl();
-		runServiceImpl.setEventAdmin(getEventAdmin());
-		runServiceImpl.setExecutionEnvironmentService(getExecutionEnvironmentService());
-		return runServiceImpl;
+		if (runService == null) {
+			runService = new RunServiceImpl();
+			runService.setEventAdmin(getEventAdmin());
+			runService.setExecutionEnvironmentService(getExecutionEnvironmentService());
+		}
+		return runService;
 	}
 
 	private ExecutionEnvironmentService getExecutionEnvironmentService() {
-		ExecutionEnvironmentServiceImpl serviceImpl = new ExecutionEnvironmentServiceImpl();
-		Set<ExecutionService> executionServices = Collections.singleton(getLocalExecutionService());
-		serviceImpl.setExecutionServices(executionServices);
-		return serviceImpl;
+		if (executionEnvironmentService == null) {
+			executionEnvironmentService = new ExecutionEnvironmentServiceImpl();
+			Set<ExecutionService> executionServices = Collections.singleton(getLocalExecutionService());
+			executionEnvironmentService.setExecutionServices(executionServices);
+		}
+		return executionEnvironmentService;
 	}
 
 	private ExecutionService getLocalExecutionService() {
-		LocalExecutionService localExecutionService = new LocalExecutionService();
-		localExecutionService.setActivityService(getActivityService());
-		localExecutionService.setDispatchLayerService(getDispatchLayerService());
-		localExecutionService.setEdits(getEdits());
-		localExecutionService.setReferenceService(getReferenceService());
+		if (localExecutionService == null) {
+			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;
+		return new EditsImpl();
 	}
 
 	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));		
+		if (referenceService == null) {
+			// Adapted from org.apache.taverna.activities.testutils.ActivityInvoker		
+			ReferenceSetServiceImpl referenceSetService = new ReferenceSetServiceImpl();
+			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());
@@ -279,18 +305,22 @@ public class WorkbenchTest {
 		return translators;
 	}
 
-	private DispatchLayerService getDispatchLayerService() {
-		DispatchLayerServiceImpl dispatchLayerServiceImpl = new DispatchLayerServiceImpl();		
-		List<DispatchLayerFactory> list = new ArrayList<>();
-		list.add(new CoreDispatchLayerFactory());
-		dispatchLayerServiceImpl.setDispatchLayerFactories(list);
-		return dispatchLayerServiceImpl;
+	public DispatchLayerService getDispatchLayerService() {
+		if (dispatchLayerService == null) {
+			dispatchLayerService = new DispatchLayerServiceImpl();		
+			List<DispatchLayerFactory> list = new ArrayList<>();
+			list.add(new CoreDispatchLayerFactory());
+			dispatchLayerService.setDispatchLayerFactories(list);
+		}
+		return dispatchLayerService;
 	}
 
-	private ActivityService getActivityService() {
-		ActivityServiceImpl serviceImpl = new ActivityServiceImpl();		
-		serviceImpl.setActivityFactories(serviceLoader(ActivityFactory.class));
-		return serviceImpl;
+	public ActivityService getActivityService() {
+		if (activityService == null) {
+			activityService = new ActivityServiceImpl();		
+			activityService.setActivityFactories(serviceLoader(ActivityFactory.class));
+		}	
+		return activityService;
 	}
 
 	private EventAdmin getEventAdmin() {
@@ -307,37 +337,43 @@ public class WorkbenchTest {
 	}
 
 	public RendererRegistry getRendererRegistry() {
-		RendererRegistryImpl rendererRegistryImpl = new RendererRegistryImpl();
-		rendererRegistryImpl.setRenderers(serviceLoader(Renderer.class));
-		return rendererRegistryImpl;
+		if (rendererRegistry == null) {
+			rendererRegistry = new RendererRegistryImpl();
+			rendererRegistry.setRenderers(serviceLoader(Renderer.class));
+		}
+		return rendererRegistry;
 	}
 
 	public DesignPerspective getDesignPerspective() {
-		DesignPerspective p = new DesignPerspective();
-		p.setEditManager(getEditManager());
-		p.setFileManager(getFileManager());
-		p.setMenuManager(getMenuManager());
-		p.setSelectionManager(getSelectionManager());
-
-		p.setServicePanelComponentFactory(getServicePanelComponentFactory());
-		p.setWorkflowExplorerFactory(getWorkflowExplorerFactory());
-		p.setReportViewComponentFactory(getReportViewComponentFactory());
-		p.setContextualViewComponentFactory(getContextualViewComponentFactory());
-		p.setGraphViewComponentFactory(getGraphViewComponentFactory());
-		return p;
+		if (designPerspective == null) {
+			designPerspective = new DesignPerspective();
+			designPerspective.setEditManager(getEditManager());
+			designPerspective.setFileManager(getFileManager());
+			designPerspective.setMenuManager(getMenuManager());
+			designPerspective.setSelectionManager(getSelectionManager());
+	
+			designPerspective.setServicePanelComponentFactory(getServicePanelComponentFactory());
+			designPerspective.setWorkflowExplorerFactory(getWorkflowExplorerFactory());
+			designPerspective.setReportViewComponentFactory(getReportViewComponentFactory());
+			designPerspective.setContextualViewComponentFactory(getContextualViewComponentFactory());
+			designPerspective.setGraphViewComponentFactory(getGraphViewComponentFactory());
+		}
+		return designPerspective;
 	}
 
 	private UIComponentFactorySPI getGraphViewComponentFactory() {
-		GraphViewComponentFactory f = new GraphViewComponentFactory();
-		f.setColourManager(getColourManager());
-		f.setEditManager(getEditManager());
-		f.setFileManager(getFileManager());
-		f.setGraphViewConfiguration(getGraphViewConfiguration());
-		f.setMenuManager(getMenuManager());
-		f.setSelectionManager(getSelectionManager());
-		f.setServiceRegistry(getServiceRegistry());
-		f.setWorkbenchConfiguration(getWorkbenchConfiguration());
-		return f;
+		if (graphViewComponentFactory == null) {
+			graphViewComponentFactory = new GraphViewComponentFactory();
+			graphViewComponentFactory.setColourManager(getColourManager());
+			graphViewComponentFactory.setEditManager(getEditManager());
+			graphViewComponentFactory.setFileManager(getFileManager());
+			graphViewComponentFactory.setGraphViewConfiguration(getGraphViewConfiguration());
+			graphViewComponentFactory.setMenuManager(getMenuManager());
+			graphViewComponentFactory.setSelectionManager(getSelectionManager());
+			graphViewComponentFactory.setServiceRegistry(getServiceRegistry());
+			graphViewComponentFactory.setWorkbenchConfiguration(getWorkbenchConfiguration());
+		}
+		return graphViewComponentFactory;
 	}
 
 	public GraphViewConfiguration getGraphViewConfiguration() {
@@ -468,9 +504,11 @@ public class WorkbenchTest {
 	}
 
 	public ActivityIconManager getActivityIconManager() {
-		ActivityIconManagerImpl activityIconManagerImpl = new ActivityIconManagerImpl();
-		activityIconManagerImpl.setActivityIcons(serviceLoader(ActivityIconSPI.class));
-		return activityIconManagerImpl;
+		if (activityIconManager == null) {		
+			activityIconManager = new ActivityIconManagerImpl();
+			activityIconManager.setActivityIcons(serviceLoader(ActivityIconSPI.class));
+		}
+		return activityIconManager;
 	}
 
 	@SuppressWarnings("unchecked")
@@ -502,7 +540,11 @@ public class WorkbenchTest {
 	}
 
 	public ServiceRegistry getServiceRegistry() {
-		return new ServiceRegistryImpl();
+		if (serviceRegistry == null) {
+			serviceRegistry = new ServiceRegistryImpl();
+			serviceRegistry.setActivityService(getActivityService());
+		}
+		return serviceRegistry;
 	}
 
 	public ServiceDescriptionRegistry getServiceDescriptionRegistry() {
@@ -514,10 +556,12 @@ public class WorkbenchTest {
 	}
 
 	public UIComponentFactorySPI getContextualViewComponentFactory() {
-		ContextualViewComponentFactory contextualViewComponentFactory = new ContextualViewComponentFactory();
-		contextualViewComponentFactory.setEditManager(getEditManager());
-		contextualViewComponentFactory.setSelectionManager(getSelectionManager());
-		contextualViewComponentFactory.setContextualViewFactoryRegistry(getContextualViewFactoryRegistry());
+		if (contextualViewComponentFactory == null) {
+			contextualViewComponentFactory = new ContextualViewComponentFactory();
+			contextualViewComponentFactory.setEditManager(getEditManager());
+			contextualViewComponentFactory.setSelectionManager(getSelectionManager());
+			contextualViewComponentFactory.setContextualViewFactoryRegistry(getContextualViewFactoryRegistry());
+		}
 		return contextualViewComponentFactory;
 	}
 
@@ -693,12 +737,15 @@ public class WorkbenchTest {
 		};
 	}
 
-	public List<StartupSPI> getStartupHooks() {
-		SetCredManAuthenticatorStartupHook credManAuthenticatorStartupHook = new SetCredManAuthenticatorStartupHook();
-		credManAuthenticatorStartupHook.setCredentialManager(getCredentialManager());
-		InitialiseSSLStartupHook initialiseSSLStartupHook = new InitialiseSSLStartupHook();
-		initialiseSSLStartupHook.setCredentialManager(getCredentialManager());
-		return Arrays.asList(initialiseSSLStartupHook, credManAuthenticatorStartupHook);
+	public List<StartupSPI> getStartupHooks() {	
+		if (startupHooks == null) {
+			SetCredManAuthenticatorStartupHook credManAuthenticatorStartupHook = new SetCredManAuthenticatorStartupHook();
+			credManAuthenticatorStartupHook.setCredentialManager(getCredentialManager());
+			InitialiseSSLStartupHook initialiseSSLStartupHook = new InitialiseSSLStartupHook();
+			initialiseSSLStartupHook.setCredentialManager(getCredentialManager());
+			startupHooks = Arrays.asList(initialiseSSLStartupHook, credManAuthenticatorStartupHook);
+		}
+		return startupHooks;
 	}
 
 	public CredentialManager getCredentialManager() {
@@ -707,6 +754,7 @@ public class WorkbenchTest {
 				credentialManager = new CredentialManagerImpl();			
 			} catch (CMException e) {
 				e.printStackTrace();
+				throw new IllegalStateException(e);
 			}
 		}
 		return credentialManager;
@@ -717,7 +765,10 @@ public class WorkbenchTest {
 	}
 
 	public ApplicationConfiguration getApplicationConfiguration() {
-		return new ApplicationConfigurationImpl();
+		if (appConfig == null) {
+			appConfig = new ApplicationConfigurationImpl(); 
+		}
+		return appConfig;
 	}
 	
 }