Fix logout failure when no objects were opened

Project: http://git-wip-us.apache.org/repos/asf/incubator-wave/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-wave/commit/a447ec99
Tree: http://git-wip-us.apache.org/repos/asf/incubator-wave/tree/a447ec99
Diff: http://git-wip-us.apache.org/repos/asf/incubator-wave/diff/a447ec99

Branch: refs/heads/swellrt
Commit: a447ec99a74c39b4c929abb186d2df90d24656d6
Parents: 02f116a
Author: Pablo Ojanguren <pablo...@gmail.com>
Authored: Fri Sep 2 17:22:24 2016 +0200
Committer: Pablo Ojanguren <pablo...@gmail.com>
Committed: Wed Sep 7 10:52:15 2016 +0200

----------------------------------------------------------------------
 wave/src/main/java/org/swellrt/api/SwellRT.java | 95 +++++++++++---------
 1 file changed, 52 insertions(+), 43 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-wave/blob/a447ec99/wave/src/main/java/org/swellrt/api/SwellRT.java
----------------------------------------------------------------------
diff --git a/wave/src/main/java/org/swellrt/api/SwellRT.java 
b/wave/src/main/java/org/swellrt/api/SwellRT.java
index 7d3a83e..90c5760 100644
--- a/wave/src/main/java/org/swellrt/api/SwellRT.java
+++ b/wave/src/main/java/org/swellrt/api/SwellRT.java
@@ -298,55 +298,64 @@ public class SwellRT implements EntryPoint, 
UnsavedDataListener {
     //
     // Clean session, websocket ,objects and registries
     //
-    cleanSessionData();
-   
-    shouldOpenWebsocket = true;
-    
-    for (ModelJS co: objectRegistry.values())
-       SwellRTUtils.deleteJsObject(co);
-    
-    objectRegistry.clear();
-    
-    for (WaveLoader wave: waveRegistry.values())
-      wave.destroy();
-    
-    waveRegistry.clear();
-    websocket.disconnect(false);
-    
-    for (TextEditor editor: editorRegistry.values())
-      editor.cleanUp();
-    
-    editorRegistry.clear();
-    
-    
-    //
-    // Call server to close remote session
-    // 
-    
-    String url = baseServerUrl + "/swell/auth";
-    url = BrowserSession.addSessionToUrl(url);
 
-    RequestBuilder builder = 
SwellRTUtils.newRequestBuilder(RequestBuilder.POST, url);
-    builder.setHeader("Content-Type", "text/plain; charset=utf-8");
-    builder.sendRequest("{}", new RequestCallback() {
+    try {
 
-      @Override
-      public void onResponseReceived(Request request, Response response) {
+      for (ModelJS co : objectRegistry.values())
+        SwellRTUtils.deleteJsObject(co);
+
+      objectRegistry.clear();
+
+      for (WaveLoader wave : waveRegistry.values())
+        wave.destroy();
+
+      waveRegistry.clear();
+
+      for (TextEditor editor : editorRegistry.values())
+        editor.cleanUp();
+      editorRegistry.clear();
+
+      shouldOpenWebsocket = true;
+      if (websocket != null)
+        websocket.disconnect(false);
+
+      //
+      // Call server to close remote session
+      //
+
+      String url = baseServerUrl + "/swell/auth";
+      url = BrowserSession.addSessionToUrl(url);
+
+      RequestBuilder builder = 
SwellRTUtils.newRequestBuilder(RequestBuilder.POST, url);
+      builder.setHeader("Content-Type", "text/plain; charset=utf-8");
+      builder.sendRequest("{}", new RequestCallback() {
+
+        @Override
+        public void onResponseReceived(Request request, Response response) {
+
+          if (response.getStatusCode() != 200)
+            
callback.onComplete(ServiceCallback.JavaScriptResponse.error(response.getText()));
+          else {
+            
callback.onComplete(ServiceCallback.JavaScriptResponse.success(response.getText()));
+          }
 
-        if (response.getStatusCode() != 200)
-          
callback.onComplete(ServiceCallback.JavaScriptResponse.error(response.getText()));
-        else {
-          
callback.onComplete(ServiceCallback.JavaScriptResponse.success(response.getText()));
         }
 
-      }
+        @Override
+        public void onError(Request request, Throwable exception) {
+          
callback.onComplete(ServiceCallback.JavaScriptResponse.error("SERVICE_EXCEPTION",
+              exception.getMessage()));
+        }
+      });
 
-      @Override
-      public void onError(Request request, Throwable exception) {
-        
callback.onComplete(ServiceCallback.JavaScriptResponse.error("SERVICE_EXCEPTION",
-            exception.getMessage()));
-      }
-    });
+    } catch (RuntimeException e) {
+      
+      // TODO 
+
+    } finally {
+
+      cleanSessionData();
+    }
 
   }
   

Reply via email to