test-class to start workbench outside osgi

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/d234ff10
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/tree/d234ff10
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/diff/d234ff10

Branch: refs/heads/master
Commit: d234ff10b8d2406bcbdf7efb328840fa576a2aef
Parents: 5877a03
Author: Stian Soiland-Reyes <[email protected]>
Authored: Thu Aug 18 15:04:26 2016 +0100
Committer: Stian Soiland-Reyes <[email protected]>
Committed: Fri Oct 21 09:16:26 2016 +0200

----------------------------------------------------------------------
 taverna-workbench-impl/pom.xml                  | 162 +++++++---
 .../ui/impl/SetConsoleLoggerStartup.java        |  11 +-
 .../workbench/ui/impl/WorkbenchImpl.java        |   2 +-
 .../org.apache.taverna.ui.menu.MenuComponent    |   5 +-
 .../workbench/ui/impl/WorkbenchLauncher.java    |  23 ++
 .../workbench/ui/impl/WorkbenchTest.java        | 318 +++++++++++++++++++
 6 files changed, 474 insertions(+), 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/d234ff10/taverna-workbench-impl/pom.xml
----------------------------------------------------------------------
diff --git a/taverna-workbench-impl/pom.xml b/taverna-workbench-impl/pom.xml
index 0db5d13..8a97e2e 100644
--- a/taverna-workbench-impl/pom.xml
+++ b/taverna-workbench-impl/pom.xml
@@ -47,12 +47,12 @@
                        <artifactId>taverna-scufl2-api</artifactId>
                        <version>${taverna.language.version}</version>
                </dependency>
-                
-                <dependency>
-                        <groupId>${project.parent.groupId}</groupId>
-                        <artifactId>taverna-selection-api</artifactId>
-                       <version>${project.parent.version}</version>
-                </dependency>
+
+               <dependency>
+                       <groupId>${project.parent.groupId}</groupId>
+                       <artifactId>taverna-selection-api</artifactId>
+                       <version>${project.parent.version}</version>
+               </dependency>
                <dependency>
                        <groupId>org.apache.taverna.engine</groupId>
                        <artifactId>taverna-observer</artifactId>
@@ -75,56 +75,70 @@
                        <version>${taverna.osgi.version}</version>
                </dependency>
                <dependency>
+                       <groupId>org.springframework.boot</groupId>
+                       <artifactId>spring-boot-starter-test</artifactId>
+                       <version>1.3.6.RELEASE</version>
+                       <scope>test</scope>
+               </dependency>
+               <dependency>
+                       <groupId>org.springframework</groupId>
+                       <artifactId>spring-beans</artifactId>
+                       <version>4.3.1.RELEASE</version>
+               </dependency>
+
+               <dependency>
                        <groupId>org.apache.taverna.osgi</groupId>
                        <artifactId>taverna-app-configuration-api</artifactId>
                        <version>${taverna.osgi.version}</version>
                </dependency>
 
-                <dependency>
-                        <groupId>${project.parent.groupId}</groupId>
-                        <artifactId>taverna-file-api</artifactId>
-                        <version>${project.parent.version}</version>
-                </dependency>
-         
-                <dependency>
-                        <groupId>${project.parent.groupId}</groupId>
-                        <artifactId>taverna-menu-api</artifactId>
-                        <version>${project.parent.version}</version>
-               </dependency>
-
-                <dependency>
-                        <groupId>${project.parent.groupId}</groupId>
-                        <artifactId>taverna-configuration-ui-api</artifactId>
-                        <version>${project.parent.version}</version>
-                </dependency>
-
-                <dependency>
-                        <groupId>${project.parent.groupId}</groupId>
-                        <artifactId>taverna-helper-api</artifactId>
-                        <version>${project.parent.version}</version>
-                </dependency>
-                
-                <dependency>
-                        <groupId>${project.parent.groupId}</groupId>
-                        <artifactId>taverna-ui</artifactId>
-                        <version>${project.parent.version}</version>
-                </dependency>
-         
+               <dependency>
+                       <groupId>${project.parent.groupId}</groupId>
+                       <artifactId>taverna-file-api</artifactId>
+                       <version>${project.parent.version}</version>
+               </dependency>
+
+               <dependency>
+                       <groupId>${project.parent.groupId}</groupId>
+                       <artifactId>taverna-menu-api</artifactId>
+                       <version>${project.parent.version}</version>
+               </dependency>
+
+               <dependency>
+                       <groupId>${project.parent.groupId}</groupId>
+                       <artifactId>taverna-configuration-ui-api</artifactId>
+                       <version>${project.parent.version}</version>
+               </dependency>
+
+               <dependency>
+                       <groupId>${project.parent.groupId}</groupId>
+                       <artifactId>taverna-helper-api</artifactId>
+                       <version>${project.parent.version}</version>
+               </dependency>
+
+               <dependency>
+                       <groupId>${project.parent.groupId}</groupId>
+                       <artifactId>taverna-ui</artifactId>
+                       <version>${project.parent.version}</version>
+               </dependency>
+
+
+
                <dependency>
                        <groupId>commons-io</groupId>
                        <artifactId>commons-io</artifactId>
-                        <version>${commons.io.version}</version>
+                       <version>${commons.io.version}</version>
                </dependency>
                <dependency>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</artifactId>
-                        <version>${log4j.version}</version>
+                       <version>${log4j.version}</version>
                </dependency>
 
                <dependency>
                        <groupId>junit</groupId>
                        <artifactId>junit</artifactId>
-                        <version>${junit.version}</version>
+                       <version>${junit.version}</version>
                        <scope>test</scope>
                </dependency>
                <dependency>
@@ -133,5 +147,75 @@
                        <version>${macify.version}</version>
                </dependency>
 
+               <!-- Implementation, used by WorkbenchTest directly rather than 
through 
+                       Spring -->
+
+               <dependency>
+                       <groupId>${project.parent.groupId}</groupId>
+                       <artifactId>taverna-credential-manager-ui</artifactId>
+                       <version>${project.parent.version}</version>
+                       <scope>test</scope>
+               </dependency>
+               <dependency>
+                       <groupId>${project.parent.groupId}</groupId>
+                       <artifactId>taverna-credential-manager-ui</artifactId>
+                       <version>${project.parent.version}</version>
+                       <scope>test</scope>
+               </dependency>
+               <dependency>
+                       <groupId>${project.parent.groupId}</groupId>
+                       <artifactId>taverna-perspective-design</artifactId>
+                       <version>${project.parent.version}</version>
+                       <scope>test</scope>
+               </dependency>
+               <dependency>
+                       <groupId>${project.parent.groupId}</groupId>
+                       <artifactId>taverna-perspective-results</artifactId>
+                       <version>${project.parent.version}</version>
+                       <scope>test</scope>
+               </dependency>
+               <dependency>
+                       <groupId>${project.parent.groupId}</groupId>
+                       <artifactId>taverna-edits-impl</artifactId>
+                       <version>${project.parent.version}</version>
+                       <scope>test</scope>
+               </dependency>
+               <dependency>
+                       <groupId>${project.parent.groupId}</groupId>
+                       <artifactId>taverna-file-impl</artifactId>
+                       <version>${project.parent.version}</version>
+                       <scope>test</scope>
+               </dependency>
+               <dependency>
+                       <groupId>${project.parent.groupId}</groupId>
+                       <artifactId>taverna-menu-impl</artifactId>
+                       <version>${project.parent.version}</version>
+                       <scope>test</scope>
+               </dependency>
+               <dependency>
+                       <groupId>${project.parent.groupId}</groupId>
+                       <artifactId>taverna-selection-impl</artifactId>
+                       <version>${project.parent.version}</version>
+                       <scope>test</scope>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.taverna.engine</groupId>
+                       <artifactId>taverna-credential-manager-impl</artifactId>
+                       <version>${taverna.engine.version}</version>
+                       <scope>test</scope>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.taverna.osgi</groupId>
+                       <artifactId>taverna-app-configuration-impl</artifactId>
+                       <version>${taverna.osgi.version}</version>
+                       <scope>test</scope>
+               </dependency>
+               <dependency>
+                       <groupId>commons-beanutils</groupId>
+                       <artifactId>commons-beanutils</artifactId>
+                       <version>1.9.2</version>
+                       <scope>test</scope>
+               </dependency>
+
        </dependencies>
 </project>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/d234ff10/taverna-workbench-impl/src/main/java/org/apache/taverna/workbench/ui/impl/SetConsoleLoggerStartup.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-impl/src/main/java/org/apache/taverna/workbench/ui/impl/SetConsoleLoggerStartup.java
 
b/taverna-workbench-impl/src/main/java/org/apache/taverna/workbench/ui/impl/SetConsoleLoggerStartup.java
index 6ba2250..ae33000 100644
--- 
a/taverna-workbench-impl/src/main/java/org/apache/taverna/workbench/ui/impl/SetConsoleLoggerStartup.java
+++ 
b/taverna-workbench-impl/src/main/java/org/apache/taverna/workbench/ui/impl/SetConsoleLoggerStartup.java
@@ -23,11 +23,10 @@ import static org.apache.log4j.Level.WARN;
 
 import java.io.PrintStream;
 
-import org.apache.taverna.workbench.StartupSPI;
-import 
org.apache.taverna.workbench.configuration.workbench.WorkbenchConfiguration;
-
 import org.apache.log4j.ConsoleAppender;
 import org.apache.log4j.Logger;
+import org.apache.taverna.workbench.StartupSPI;
+import 
org.apache.taverna.workbench.configuration.workbench.WorkbenchConfiguration;
 
 public class SetConsoleLoggerStartup implements StartupSPI {
        private static final PrintStream originalErr = System.err;
@@ -35,6 +34,10 @@ public class SetConsoleLoggerStartup implements StartupSPI {
 
        private final WorkbenchConfiguration workbenchConfiguration;
 
+       public SetConsoleLoggerStartup() {
+               this.workbenchConfiguration = null;
+       }
+       
        public SetConsoleLoggerStartup(WorkbenchConfiguration 
workbenchConfiguration) {
                this.workbenchConfiguration = workbenchConfiguration;
        }
@@ -55,7 +58,7 @@ public class SetConsoleLoggerStartup implements StartupSPI {
        }
 
        public void setSystemOutCapture() {
-               if (!workbenchConfiguration.getCaptureConsole()) {
+               if (workbenchConfiguration == null || 
!workbenchConfiguration.getCaptureConsole()) {
                        System.setOut(originalOut);
                        System.setErr(originalErr);
                        return;

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/d234ff10/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 471f5aa..62e3cf1 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
@@ -501,7 +501,7 @@ public class WorkbenchImpl extends JFrame implements 
Workbench {
                }
        }
 
-       private class OSXAppListener extends ApplicationAdapter {
+       public class OSXAppListener extends ApplicationAdapter {
                @Override
                public void handleAbout(ApplicationEvent e) {
                        showAboutDialog();

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/d234ff10/taverna-workbench-impl/src/main/resources/META-INF/services/org.apache.taverna.ui.menu.MenuComponent
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-impl/src/main/resources/META-INF/services/org.apache.taverna.ui.menu.MenuComponent
 
b/taverna-workbench-impl/src/main/resources/META-INF/services/org.apache.taverna.ui.menu.MenuComponent
index 5183705..49cd0ff 100644
--- 
a/taverna-workbench-impl/src/main/resources/META-INF/services/org.apache.taverna.ui.menu.MenuComponent
+++ 
b/taverna-workbench-impl/src/main/resources/META-INF/services/org.apache.taverna.ui.menu.MenuComponent
@@ -4,8 +4,7 @@ org.apache.taverna.workbench.ui.impl.menu.ExitAction
 org.apache.taverna.workbench.ui.impl.menu.EditMenu
 
 org.apache.taverna.workbench.ui.impl.menu.AdvancedMenu
-org.apache.taverna.workbench.ui.impl.menu.DisplayPerspectivesMenu
-org.apache.taverna.workbench.ui.impl.menu.EditPerspectivesMenu
+#org.apache.taverna.workbench.ui.impl.menu.EditPerspectivesMenu
 
 org.apache.taverna.workbench.ui.impl.menu.HelpMenu
 org.apache.taverna.workbench.ui.impl.menu.OnlineHelpMenuAction
@@ -14,4 +13,4 @@ org.apache.taverna.workbench.ui.impl.menu.FeedbackMenuAction
 #org.apache.taverna.workbench.ui.impl.menu.ViewShowMenuSection
 #org.apache.taverna.workbench.ui.impl.menu.ChangePerspectiveMenuAction
 
-org.apache.taverna.workbench.ui.impl.menu.ShowLogsAndDataMenuAction
\ No newline at end of file
+org.apache.taverna.workbench.ui.impl.menu.ShowLogsAndDataMenuAction

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/d234ff10/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
new file mode 100644
index 0000000..02e3d49
--- /dev/null
+++ 
b/taverna-workbench-impl/src/test/java/org/apache/taverna/workbench/ui/impl/WorkbenchLauncher.java
@@ -0,0 +1,23 @@
+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());
+       }
+       
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/d234ff10/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
new file mode 100644
index 0000000..43eee47
--- /dev/null
+++ 
b/taverna-workbench-impl/src/test/java/org/apache/taverna/workbench/ui/impl/WorkbenchTest.java
@@ -0,0 +1,318 @@
+package org.apache.taverna.workbench.ui.impl;
+
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.taverna.configuration.app.ApplicationConfiguration;
+import org.apache.taverna.configuration.app.impl.ApplicationConfigurationImpl;
+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.security.credentialmanager.CMException;
+import org.apache.taverna.security.credentialmanager.CredentialManager;
+import 
org.apache.taverna.security.credentialmanager.impl.CredentialManagerImpl;
+import org.apache.taverna.ui.menu.MenuComponent;
+import org.apache.taverna.ui.menu.MenuManager;
+import org.apache.taverna.ui.menu.impl.MenuManagerImpl;
+import org.apache.taverna.ui.perspectives.design.DesignPerspective;
+import org.apache.taverna.ui.perspectives.results.ResultsPerspective;
+import org.apache.taverna.workbench.ShutdownSPI;
+import org.apache.taverna.workbench.StartupSPI;
+import 
org.apache.taverna.workbench.configuration.workbench.WorkbenchConfiguration;
+import org.apache.taverna.workbench.edits.EditManager;
+import org.apache.taverna.workbench.edits.impl.EditManagerImpl;
+import org.apache.taverna.workbench.file.FileManager;
+import org.apache.taverna.workbench.file.impl.FileManagerImpl;
+import org.apache.taverna.workbench.selection.SelectionManager;
+import org.apache.taverna.workbench.selection.impl.SelectionManagerImpl;
+import 
org.apache.taverna.workbench.ui.credentialmanager.startup.InitialiseSSLStartupHook;
+import 
org.apache.taverna.workbench.ui.credentialmanager.startup.SetCredManAuthenticatorStartupHook;
+import org.apache.taverna.workbench.ui.zaria.PerspectiveSPI;
+
+public class WorkbenchTest {
+
+       public static void main(String[] args) throws InterruptedException {
+               System.setProperty("taverna.app.startup", 
Paths.get("target").toAbsolutePath().toString());
+               
+               WorkbenchImpl w = new WorkbenchTest().getWorkbench();
+               w.initialize();
+               synchronized(w) {
+                       // It won't actually get interrupted, but it means we 
persist 
+                       // as long as w rather than exiting
+                       w.wait();
+               }
+       }
+
+       private EditManagerImpl editManagerImpl;
+       private FileManagerImpl fileManager;
+       private WorkbenchImpl workbench;
+       private MenuManagerImpl menuManager;
+       private SelectionManagerImpl selectionManager;
+       private List<MenuComponent> menuComponents;
+       private CredentialManagerImpl credentialManager;
+
+       public FileManager getFileManager() {
+               if (fileManager == null) {
+                       fileManager = new FileManagerImpl(getEditManager());
+               }
+               return fileManager;
+       }
+
+       public EditManager getEditManager() {
+               if (editManagerImpl == null) {
+                       editManagerImpl = new EditManagerImpl();
+               }
+               return editManagerImpl;
+       }
+
+       public MenuManager getMenuManager() {
+               if (menuManager == null) {
+                       menuManager = new MenuManagerImpl();
+                       menuManager.setSelectionManager(getSelectionManager());
+
+                       menuManager.setMenuComponents(getMenuComponents());
+
+               }
+               return menuManager;
+       }
+
+       public List<MenuComponent> getMenuComponents() {
+               if (menuComponents == null) {
+                       menuComponents = new ArrayList<>();
+//                     for (MenuComponent mc : 
ServiceLoader.load(MenuComponent.class)) {
+//                             try {
+//                                     BeanUtils.copyProperties(this, mc);
+//                                     // This does not work as many of the 
actions are set in  constructor
+                                       // rather than with setters
+//                             } catch (IllegalAccessException | 
InvocationTargetException e) {
+//                                     e.printStackTrace();
+//                             }
+//                             menuComponents.add(mc);
+//                     }
+               }
+               // FIXME: Should not be an empty list
+               return menuComponents;
+       }
+
+       public SelectionManager getSelectionManager() {
+               if (selectionManager == null) {
+                       selectionManager = new SelectionManagerImpl();
+                       selectionManager.setEditManager(getEditManager());
+                       selectionManager.setFileManager(getFileManager());
+                       selectionManager.setPerspectives(getPerspectives());
+               }
+               return selectionManager;
+       }
+
+       public ResultsPerspective getResultsPerspective() {
+               ResultsPerspective perspective = new ResultsPerspective();
+               // TODO: Various setters
+               return perspective;
+       }
+
+       public DesignPerspective getDesignPerspective() {
+               DesignPerspective p = new DesignPerspective();
+               p.setEditManager(getEditManager());
+               p.setFileManager(getFileManager());
+               p.setMenuManager(getMenuManager());
+               // TODO: More setters
+               return p;
+       }
+
+       public List<PerspectiveSPI> getPerspectives() {
+               return Arrays.asList(getDesignPerspective(), 
getResultsPerspective());
+       }
+
+       public WorkbenchImpl getWorkbench() {
+               if (workbench == null) {
+                       workbench = new WorkbenchImpl(getStartupHooks(), 
getShutdownHooks(), getPerspectives());
+                       
workbench.setApplicationConfiguration(getApplicationConfiguration());
+                       workbench.setEditManager(getEditManager());
+                       workbench.setFileManager(getFileManager());
+                       workbench.setMenuManager(getMenuManager());
+                       workbench.setSelectionManager(getSelectionManager());
+                       workbench.setPluginManager(getPluginManager());         
        
+                       
workbench.setWorkbenchConfiguration(getWorkbenchConfiguration());
+               }
+               return workbench;
+       }
+
+       private WorkbenchConfiguration getWorkbenchConfiguration() {
+               return new WorkbenchConfiguration() {
+                       @Override
+                       public Map<String, String> getDefaultPropertyMap() {
+                               return Collections.emptyMap();
+                       }
+                       @Override
+                       public String getUUID() {
+                               return "5c51f0d0-91b7-4d90-92e4-4416c61f6442";
+                       }
+                       @Override
+                       public String getDisplayName() {
+                               return "Taverna Test";
+                       }
+                       @Override
+                       public String getFilePrefix() {
+                               return "taverna-test";
+                       }
+                       @Override
+                       public String getCategory() {
+                               return "test";
+                       }
+                       @Override
+                       public void restoreDefaults() {
+                       }
+
+                       @Override
+                       public String getDefaultProperty(String key) {
+                               return null;
+                       }
+
+                       @Override
+                       public Set<String> getKeys() {
+                               return Collections.emptySet();
+                       }
+
+                       @Override
+                       public void clear() {
+                       }
+
+                       @Override
+                       public Map<String, String> getInternalPropertyMap() {
+                               return Collections.emptyMap();
+                       }
+
+                       @Override
+                       public String getProperty(String key) {
+                               return null;
+                       }
+
+                       @Override
+                       public void setProperty(String key, String value) {     
                                                        
+                               // We'll just forget it anyway..
+                       }
+
+                       @Override
+                       public void deleteProperty(String key) {
+                       }
+
+                       @Override
+                       public List<String> getPropertyStringList(String key) {
+                               return Collections.emptyList();
+                       }
+
+                       @Override
+                       public void setPropertyStringList(String key, 
List<String> value) {
+                       }
+
+                       @Override
+                       public boolean getCaptureConsole() {
+                               return false;
+                       }
+
+                       @Override
+                       public void setCaptureConsole(boolean captureConsole) {
+                       }
+
+                       @Override
+                       public boolean getWarnInternalErrors() {
+                               return false;
+                       }
+
+                       @Override
+                       public void setWarnInternalErrors(boolean 
warnInternalErrors) {
+                       }
+
+                       @Override
+                       public int getMaxMenuItems() {
+                               return 1024;
+                       }
+
+                       @Override
+                       public void setMaxMenuItems(int maxMenuItems) {
+                       }
+
+                       @Override
+                       public String getDotLocation() {
+                               // Assume graphviz' dot is on PATH
+                               return "dot";
+                       }
+
+                       @Override
+                       public void setDotLocation(String dotLocation) {
+                       }
+                       
+               };
+       }
+
+       private PluginManager getPluginManager() {
+               // Can't install plugins while outside OSGi
+               return new PluginManager() {                    
+                       @Override
+                       public Plugin updatePlugin(PluginVersions 
pluginVersions) throws PluginException {
+                               throw new PluginException("Can't install 
plugins when running outside OSGi");
+                       }
+                       @Override
+                       public void loadPlugins() throws PluginException {
+                       }
+                       @Override
+                       public Plugin installPlugin(String pluginSiteURL, 
String pluginFile) throws PluginException {
+                               throw new PluginException("Can't install 
plugins when running outside OSGi");
+                       }
+                       @Override
+                       public Plugin installPlugin(Path pluginFile) throws 
PluginException {
+                               throw new PluginException("Can't install 
plugins when running outside OSGi");                   }
+                       
+                       @Override
+                       public List<PluginVersions> getPluginUpdates() throws 
PluginException {
+                               return Collections.emptyList();
+                       }
+                       @Override
+                       public List<Plugin> getInstalledPlugins() throws 
PluginException {
+                               return Collections.emptyList();
+                       }
+                       @Override
+                       public List<PluginVersions> getAvailablePlugins() 
throws PluginException {
+                               return Collections.emptyList();
+                       }
+                       @Override
+                       public void checkForUpdates() throws PluginException {  
                        
+                       }
+               };
+       }
+
+       public List<StartupSPI> getStartupHooks() {
+               SetCredManAuthenticatorStartupHook 
credManAuthenticatorStartupHook = new SetCredManAuthenticatorStartupHook();
+               
credManAuthenticatorStartupHook.setCredentialManager(getCredentialManager());
+               InitialiseSSLStartupHook initialiseSSLStartupHook = new 
InitialiseSSLStartupHook();
+               
initialiseSSLStartupHook.setCredentialManager(getCredentialManager());
+               return Arrays.asList(initialiseSSLStartupHook, 
credManAuthenticatorStartupHook);
+       }
+
+       public CredentialManager getCredentialManager() {
+               if (credentialManager == null) {
+                       try {
+                               credentialManager = new 
CredentialManagerImpl();                        
+                       } catch (CMException e) {
+                               e.printStackTrace();
+                       }
+               }
+               return credentialManager;
+       }
+
+       public List<ShutdownSPI> getShutdownHooks() {
+               return Arrays.asList();
+       }
+
+       public ApplicationConfiguration getApplicationConfiguration() {
+               return new ApplicationConfigurationImpl();
+       }
+       
+}

Reply via email to