jenkins merging release branch into master (strategy: theirs)
[cdm-vaadin.git] / src / main / java / eu / etaxonomy / cdm / vaadin / util / CdmVaadinSessionUtilities.java
index f70a14edb4f1719fee252f464a49d60885a9ec62..51b15f31e08655b64ff64d82e79ba069773dd90f 100644 (file)
@@ -1,4 +1,3 @@
-// $Id$
 /**
 * Copyright (C) 2015 EDIT
 * European Distributed Institute of Taxonomy
@@ -9,9 +8,15 @@
 */
 package eu.etaxonomy.cdm.vaadin.util;
 
+import java.util.concurrent.locks.Lock;
+
+import org.apache.log4j.Logger;
+
 import com.vaadin.server.VaadinSession;
 
+import eu.etaxonomy.cdm.vaadin.session.BasicEventService;
 import eu.etaxonomy.cdm.vaadin.session.CdmDataChangeService;
+import eu.etaxonomy.cdm.vaadin.session.SelectionService;
 
 /**
  * @author cmathew
@@ -20,17 +25,52 @@ import eu.etaxonomy.cdm.vaadin.session.CdmDataChangeService;
  */
 public class CdmVaadinSessionUtilities {
 
+    private static final Logger logger = Logger.getLogger(CdmVaadinSessionUtilities.class);
+
     public static void setCurrentAttribute(String name, Object value) {
+        Lock sessionLock = VaadinSession.getCurrent().getLockInstance();
         try {
-            VaadinSession.getCurrent().getLockInstance().lock();
+            if(sessionLock != null) {
+                sessionLock.lock();
+            }
             VaadinSession.getCurrent().setAttribute(name, value);
         } finally {
-            VaadinSession.getCurrent().getLockInstance().unlock();
+            if(sessionLock != null) {
+                sessionLock.unlock();
+            }
         }
     }
 
+    public static void initCdmDataChangeService() {
+//        if(getCurrentCdmDataChangeService() != null) {
+//           logger.info("replacing data change service with new one");
+//        }
+        setCurrentAttribute(CdmDataChangeService.KEY, new CdmDataChangeService());
+    }
+
     public static CdmDataChangeService getCurrentCdmDataChangeService() {
         return (CdmDataChangeService) VaadinSession.getCurrent().getAttribute(CdmDataChangeService.KEY);
     }
 
+    public static void initSelectionService() {
+//        if(getCurrentSelectionService() != null) {
+//            logger.info("replacing selection service with new one");
+//        }
+        setCurrentAttribute(SelectionService.KEY, new SelectionService());
+    }
+
+    public static SelectionService getCurrentSelectionService() {
+        return (SelectionService) VaadinSession.getCurrent().getAttribute(SelectionService.KEY);
+    }
+
+    public static void initBasicEventService() {
+//        if(getCurrentBasicEventService() != null) {
+//            logger.info("replacing basic event service with new one");
+//        }
+        setCurrentAttribute(BasicEventService.KEY, new BasicEventService());
+    }
+
+    public static BasicEventService getCurrentBasicEventService() {
+        return (BasicEventService) VaadinSession.getCurrent().getAttribute(BasicEventService.KEY);
+    }
 }