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