test
[taxeditor.git] / eu.etaxonomy.taxeditor.cdmlib / src / main / java / eu / etaxonomy / cdm / api / application / CdmApplicationState.java
index 8bee46bf9946ebd9e7472e970d04d4646aeb4827..b8754d1cf69b3679983fd05926b5963bb4ed561a 100644 (file)
@@ -1,4 +1,3 @@
-// $Id$
 /**
 * Copyright (C) 2015 EDIT
 * European Distributed Institute of Taxonomy
@@ -14,7 +13,7 @@ import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Type;
-import java.net.URI;
+import eu.etaxonomy.cdm.common.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.Dictionary;
@@ -34,6 +33,7 @@ import eu.etaxonomy.cdm.api.cache.CdmServiceCacher;
 import eu.etaxonomy.cdm.api.service.ICommonService;
 import eu.etaxonomy.cdm.api.service.IService;
 import eu.etaxonomy.cdm.api.service.ITestService;
+import eu.etaxonomy.cdm.api.service.longrunningService.ILongRunningTasksService;
 import eu.etaxonomy.cdm.io.service.IIOService;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.taxeditor.service.ICachedCommonService;
@@ -42,16 +42,16 @@ import eu.etaxonomy.taxeditor.session.DefaultNewEntityListener;
 /**
  * @author cmathew
  * @date 17 Jun 2015
- *
  */
 public class CdmApplicationState {
 
     private static CdmApplicationState cdmApplicationState;
 
-    private ICdmApplicationConfiguration appConfig;
+    private ICdmRepository appConfig;
 
     private ICdmDataChangeService dataChangeService;
 
+    //FIXME SecurityContextHolder.getContext()
     private SecurityContext securityContext;
 
     private static CdmServiceCacher cdmServiceCacher;
@@ -63,11 +63,10 @@ public class CdmApplicationState {
         if(cdmApplicationState == null) {
             cdmApplicationState = new CdmApplicationState();
         }
-
         return cdmApplicationState;
     }
 
-    public void setAppConfig(ICdmApplicationConfiguration appConfig) {
+    public void setAppConfig(ICdmRepository appConfig) {
         this.appConfig = appConfig;
         if(appConfig instanceof CdmApplicationRemoteController) {
             CdmBase.setNewEntityListener(new DefaultNewEntityListener());
@@ -76,28 +75,21 @@ public class CdmApplicationState {
         }
     }
 
-    public ICdmApplicationConfiguration getAppConfig() {
+    public ICdmRepository getAppConfig() {
         return appConfig;
     }
 
-    public static void setCurrentAppConfig(ICdmApplicationConfiguration appConfig) {
+    public static void setCurrentAppConfig(ICdmRepository appConfig) {
         getInstance().setAppConfig(appConfig);
     }
 
-    public static ICdmApplicationConfiguration getCurrentAppConfig() {
+    public static ICdmRepository getCurrentAppConfig() {
         return getInstance().getAppConfig();
     }
 
-    /**
-     * @return the dataChangeService
-     */
     public ICdmDataChangeService getDataChangeService() {
         return dataChangeService;
     }
-
-    /**
-     * @param dataChangeService the dataChangeService to set
-     */
     public void setDataChangeService(ICdmDataChangeService dataChangeService) {
         this.dataChangeService = dataChangeService;
     }
@@ -110,38 +102,22 @@ public class CdmApplicationState {
         getInstance().setDataChangeService(dataChangeService);
     }
 
-
-
-    /**
-     * @return the securityContext
-     */
     public SecurityContext getSecurityContext() {
         return securityContext;
     }
-
-    /**
-     * @param securityContext the securityContext to set
-     */
     public void setSecurityContext(SecurityContext securityContext) {
         this.securityContext = securityContext;
     }
 
-    /**
-     * @return the securityContext
-     */
     public static SecurityContext getCurrentSecurityContext() {
         return getInstance().getSecurityContext();
     }
-
-    /**
-     * @param securityContext the securityContext to set
-     */
     public static void setCurrentSecurityContext(SecurityContext securityContext) {
         getInstance().setSecurityContext(securityContext);
     }
 
     public static void dispose() {
-        getInstance().setCurrentDataChangeService(null);
+        setCurrentDataChangeService(null);
         getInstance().setAppConfig(null);
         getInstance().setSecurityContext(null);
         cdmApplicationState = null;
@@ -150,9 +126,8 @@ public class CdmApplicationState {
         cdmlibLastModified = null;
     }
 
-
     /**
-     * Generic method that will scan the getters of {@link ICdmApplicationConfiguration} for the given service
+     * Generic method that will scan the getters of {@link ICdmRepository} for the given service
      * interface. If a matching getter is found the according service implementation is returned by
      * invoking the getter otherwise the method returns <code>null</code>.
      *
@@ -162,64 +137,56 @@ public class CdmApplicationState {
      * @throws CdmApplicationException
      */
     public static <T extends IService> T getService(Class<T> serviceClass) throws CdmApplicationException {
-        ICdmApplicationConfiguration configuration = getCurrentAppConfig();
-
-        Method[] methods = ICdmApplicationConfiguration.class.getDeclaredMethods();
+        ICdmRepository configuration = getCurrentAppConfig();
 
-        T service = null;
+        Method[] methods = ICdmRepository.class.getDeclaredMethods();
 
         for (Method method : methods) {
             Type type = method.getGenericReturnType();
 
             if (type.equals(serviceClass)) {
                 try {
-                    service = (T) method.invoke(configuration, null);
-                    break;
-                } catch (IllegalArgumentException iae) {
+                    @SuppressWarnings("unchecked")
+                    T service = (T) method.invoke(configuration);
+                    return service;
+                } catch (IllegalArgumentException | IllegalAccessException | InvocationTargetException iae) {
                     throw new CdmApplicationException(iae);
-                } catch (IllegalAccessException iae) {
-                    throw new CdmApplicationException(iae);
-                } catch (InvocationTargetException ite) {
-                    throw new CdmApplicationException(ite);
                 }
             }
         }
-
-        return service;
+        return null;
     }
 
-
     /**
      * @see #getService(Class)
      * As ICommonService is not extending IService we need a specific request here
      */
     public static ICommonService getCommonService() {
-        ICdmApplicationConfiguration configuration = getCurrentAppConfig();
+        ICdmRepository configuration = getCurrentAppConfig();
 
         return configuration.getCommonService();
-
     }
 
     public static IIOService getIOService() {
-        ICdmApplicationConfiguration configuration = getCurrentAppConfig();
+        ICdmRepository configuration = getCurrentAppConfig();
 
         return ((CdmApplicationRemoteController)configuration).getIOService();
-
     }
 
+    public static ILongRunningTasksService getLongRunningTasksService() {
+        ICdmRepository configuration = getCurrentAppConfig();
 
-    public static ITestService getTestService() {
-        ICdmApplicationConfiguration configuration = getCurrentAppConfig();
+        return ((CdmApplicationRemoteController)configuration).getLongRunningTasksService();
+    }
 
+    public static ITestService getTestService() {
+        ICdmRepository configuration = getCurrentAppConfig();
         return ((CdmApplicationRemoteController)configuration).getTestService();
-
     }
 
     public static ICachedCommonService getCachedCommonService() {
-        ICdmApplicationConfiguration configuration = getCurrentAppConfig();
-
+        ICdmRepository configuration = getCurrentAppConfig();
         return ((CdmApplicationRemoteController)configuration).getCachedCommonService();
-
     }
 
     public static CdmServiceCacher getCdmServiceCacher() {
@@ -246,8 +213,9 @@ public class CdmApplicationState {
                     URL fileURL = bundle.getEntry(jar);
                     File file = null;
                     try {
-                        String urlString = FileLocator.resolve(fileURL).toExternalForm().replace(" ", "%20");;
-                        file = new File(new URI(urlString));
+                        String urlString = FileLocator.resolve(fileURL).toExternalForm().replace(" ", "%20");
+                        
+                        file = new File(new URI(urlString).getJavaUri());
                         JarFile jarFile = new JarFile(file);
                         Manifest manifest = jarFile.getManifest();
                         Attributes attributes = manifest.getMainAttributes();
@@ -266,7 +234,10 @@ public class CdmApplicationState {
                         throw new IllegalStateException(urise);
                     } catch (IOException ioe) {
                         throw new IllegalStateException(ioe);
-                    }
+                    } catch (IllegalArgumentException iae) {
+                       String message = iae.getMessage().concat("uri" + jar);
+                       throw new IllegalStateException(message);
+                       }
                 }
             }
         } catch (BundleException e) {