use simpleclientsession handle rather than bare sessionhandle
authorjprocter <jprocter@compbio.dundee.ac.uk>
Mon, 8 Jun 2009 12:30:46 +0000 (12:30 +0000)
committerjprocter <jprocter@compbio.dundee.ac.uk>
Mon, 8 Jun 2009 12:30:46 +0000 (12:30 +0000)
git-svn-id: https://svn.lifesci.dundee.ac.uk/svn/repository/trunk@504 be28352e-c001-0410-b1a7-c7978e42abec

src/uk/ac/vamsas/client/simpleclient/VamsasSession.java

index af5ab37..310c6c2 100644 (file)
@@ -22,7 +22,6 @@
 package uk.ac.vamsas.client.simpleclient;\r
 \r
 import java.io.File;\r
-import java.io.FileNotFoundException;\r
 import java.io.IOException;\r
 import java.io.RandomAccessFile;\r
 import java.nio.channels.FileChannel;\r
@@ -36,8 +35,6 @@ import org.apache.log4j.PatternLayout;
 \r
 import uk.ac.vamsas.client.ClientHandle;\r
 import uk.ac.vamsas.client.Events;\r
-import uk.ac.vamsas.client.IClient;\r
-import uk.ac.vamsas.client.SessionHandle;\r
 import uk.ac.vamsas.client.UserHandle;\r
 \r
 /**\r
@@ -217,7 +214,7 @@ public class VamsasSession {
   protected VamsasSession(File sessionDir1) throws IOException {\r
     this(sessionDir1, null);\r
   }\r
-\r
+  private SimpleSessionHandle sessionHandle = null;\r
   /**\r
    * sets up the vamsas session files and watchers in sessionDir1\r
    * \r
@@ -231,6 +228,7 @@ public class VamsasSession {
    *           new data into session in this way)\r
    */\r
   protected VamsasSession(File sessionDir1, File extVamDoc) throws IOException {\r
+    // TODO: refactor to separate extVamDoc path from session URN - enables non-local URLs to be locally bound to sessions.\r
     if (sessionDir1 == null)\r
       throw new Error("Null directory for VamsasSession.");\r
     if (!sessionDir1.exists() && !sessionDir1.mkdir()) {\r
@@ -252,6 +250,12 @@ public class VamsasSession {
       }\r
     }\r
     this.sessionDir = sessionDir1;\r
+    if (extVamDoc==null) {\r
+      sessionHandle = new SimpleSessionHandle(new SessionUrn(sessionDir).getSessionUrn(),sessionDir);\r
+    } else {\r
+      // Construct Session URN from the original vamsas document.\r
+      sessionHandle = new SimpleSessionHandle(new SessionUrn(extVamDoc).getSessionUrn(),sessionDir);\r
+    }\r
     initSessionObjects();\r
     if (existingSession) {\r
       slog.debug("Initialising additional VamsasSession instance");\r
@@ -650,7 +654,7 @@ public class VamsasSession {
     if (closeSession) {\r
       log.debug("Last active client: closing session");\r
       log.info("Closing session");\r
-      getSessionManager().removeSession(client.getSessionHandle());\r
+      closeSession(client.getSessionHandle());\r
     }\r
   }\r
 \r
@@ -859,9 +863,15 @@ public class VamsasSession {
    * @param sessionHandle\r
    *          sessionHandle of the session to remove\r
    */\r
-  private void closeSession(SessionHandle sessionHandle) {\r
-    getSessionManager().removeSession(sessionHandle);\r
-    log.debug("Session removed");\r
+  private void closeSession(uk.ac.vamsas.client.SessionHandle sessionHandle) {\r
+    //if (sessionHandle instanceof SimpleSessionHandle)\r
+    //{\r
+      getSessionManager().removeSession(sessionHandle);\r
+          log.debug("Session removed");\r
+    //} else {\r
+    //  log.error("Cannot close a sessionHandle (URN="+sessionHandle.getSessionUrn()+") which is of type "+sessionHandle.getClass());\r
+     // throw new Error("Tried to close a non-SimpleClient vamsas sessionHandle");\r
+    //}\r
   }\r
 \r
   /**\r
@@ -899,4 +909,8 @@ public class VamsasSession {
     }\r
     return clistWatchElement;\r
   }\r
+\r
+  public uk.ac.vamsas.client.simpleclient.SimpleSessionHandle getSessionUrn() {\r
+    return sessionHandle;\r
+  }\r
 }\r