Title: [456] trunk/rails-integration/src/main/ruby/builtin/rails-integration/session/java_servlet_store.rb: Probably fix the session problems with more than one runtime, by just dumping a marshalled string inside the session instead
Revision
456
Author
olabini
Date
2007-04-17 13:43:43 -0400 (Tue, 17 Apr 2007)

Log Message

Probably fix the session problems with more than one runtime, by just dumping a marshalled string inside the session instead

Modified Paths

Diff

Modified: trunk/rails-integration/src/main/ruby/builtin/rails-integration/session/java_servlet_store.rb (455 => 456)


--- trunk/rails-integration/src/main/ruby/builtin/rails-integration/session/java_servlet_store.rb	2007-04-15 18:52:27 UTC (rev 455)
+++ trunk/rails-integration/src/main/ruby/builtin/rails-integration/session/java_servlet_store.rb	2007-04-17 17:43:43 UTC (rev 456)
@@ -1,62 +1,50 @@
-require 'cgi'
-require 'cgi/session'
-
-class CGI #:nodoc:all
-  class Session
-    class JavaServletStore
-
-      def initialize(session, option=nil)
-      	@java_request = option['java_request'] if option
-      	unless @java_request
-      		raise 'JavaServletStore requires that HttpServletRequest is made available to the session'
-      	end
-      	@session_data = {}
-      end
-
-      # Restore session state from the Java session
-      def restore
-        @session_data = {}
-        java_session = @java_request.getSession(false)
-        if java_session
-          names = java_session.getAttributeNames
-          while names.hasMoreElements
-            name = names.nextElement
-            ruby_name = name
-            ruby_name = name.split(':')[1].to_sym if name.size > 1 && name[0..0] == ':'
-            @session_data[ruby_name] = java_session.getAttribute(name)
-          end
-        end
-        @session_data
-      end
-
-      # Save session state to the Java session
-      def update
-        java_session = @java_request.getSession(true)
-        for key, value in @session_data
-          if (key.class == Symbol)
-            java_session.setAttribute(':' + key.to_s, value)
-          else
-            java_session.setAttribute(key, value)
-          end
-        end
-      end
-
-      # Update and close the Java session entry
-      def close
-        update
-      end
-
-      # Delete the Java session entry
-      def delete
-        java_session = @java_request.getSession(false)
-        java_session.invalidate if java_session
-      end
-
-      # The session state
-      def data
-        @session_data
-      end
-
-    end
-  end
-end
+require 'cgi'
+require 'cgi/session'
+
+class CGI #:nodoc:all
+  class Session
+    class JavaServletStore
+
+      def initialize(session, option=nil)
+      	@java_request = option['java_request'] if option
+      	unless @java_request
+      		raise 'JavaServletStore requires that HttpServletRequest is made available to the session'
+      	end
+      	@session_data = {}
+      end
+
+      # Restore session state from the Java session
+      def restore
+        @session_data = {}
+        java_session = @java_request.getSession(false)
+        if java_session
+          @session_data = Marshal.load(java_session.getAttribute("__current_rails_session"))
+        end
+        @session_data
+      end
+
+      # Save session state to the Java session
+      def update
+        java_session = @java_request.getSession(true)
+        java_session.setAttribute("__current_rails_session", Marshal.dump(@session_data))
+      end
+
+      # Update and close the Java session entry
+      def close
+        update
+      end
+
+      # Delete the Java session entry
+      def delete
+        java_session = @java_request.getSession(false)
+        java_session.invalidate if java_session
+      end
+
+      # The session state
+      def data
+        @session_data
+      end
+
+    end
+  end
+end
_______________________________________________
Jruby-extras-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/jruby-extras-devel

Reply via email to