From a3da201152e7b68176554470d7ed02d3b46946b7 Mon Sep 17 00:00:00 2001
From: tpylak <tpylak>
Date: Fri, 14 Jan 2011 10:23:04 +0000
Subject: [PATCH] bugfix: if calling openBIS method from DSS fails with
 InvalidSessionException the session has to be renewed and the operation has
 to be retried.

SVN: 19422
---
 .../server/EncapsulatedOpenBISService.java    | 43 ++++++++++++++++---
 1 file changed, 38 insertions(+), 5 deletions(-)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java
index b7cb2a1b0d4..3b75ec0c33d 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java
@@ -818,25 +818,58 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer
 
     public List<Person> listAdministrators()
     {
-        return service.listAdministrators(sessionToken);
+        checkSessionToken();
+        try
+        {
+            return service.listAdministrators(sessionToken);
+        } catch (final InvalidSessionException ex)
+        {
+            authenticate();
+            return service.listAdministrators(sessionToken);
+        }
     }
 
     public Person tryPersonWithUserIdOrEmail(String useridOrEmail)
     {
-        return service.tryPersonWithUserIdOrEmail(sessionToken, useridOrEmail);
+        checkSessionToken();
+        try
+        {
+            return service.tryPersonWithUserIdOrEmail(sessionToken, useridOrEmail);
+        } catch (final InvalidSessionException ex)
+        {
+            authenticate();
+            return service.tryPersonWithUserIdOrEmail(sessionToken, useridOrEmail);
+        }
     }
 
     public Sample registerSampleAndDataSet(NewSample newSample, NewExternalData externalData,
             String userIdOrNull) throws UserFailureException
     {
-        return service
-                .registerSampleAndDataSet(sessionToken, newSample, externalData, userIdOrNull);
+        checkSessionToken();
+        try
+        {
+            return service.registerSampleAndDataSet(sessionToken, newSample, externalData,
+                    userIdOrNull);
+        } catch (final InvalidSessionException ex)
+        {
+            authenticate();
+            return service.registerSampleAndDataSet(sessionToken, newSample, externalData,
+                    userIdOrNull);
+        }
     }
 
     public Sample updateSampleAndRegisterDataSet(SampleUpdatesDTO newSample,
             NewExternalData externalData)
     {
-        return service.updateSampleAndRegisterDataSet(sessionToken, newSample, externalData);
+        checkSessionToken();
+        try
+        {
+            return service.updateSampleAndRegisterDataSet(sessionToken, newSample, externalData);
+        } catch (final InvalidSessionException ex)
+        {
+            authenticate();
+            return service.updateSampleAndRegisterDataSet(sessionToken, newSample, externalData);
+        }
     }
 
 }
\ No newline at end of file
-- 
GitLab