Title: [479] trunk/rails-integration/src/main/ruby/builtin/rails-integration/session/java_servlet_store.rb: Fix for string encoding on marshalled data
- Revision
- 479
- Author
- tantalon
- Date
- 2007-04-24 04:30:53 -0400 (Tue, 24 Apr 2007)
Log Message
Fix for string encoding on marshalled data
Modified Paths
Diff
Modified: trunk/rails-integration/src/main/ruby/builtin/rails-integration/session/java_servlet_store.rb (478 => 479)
--- trunk/rails-integration/src/main/ruby/builtin/rails-integration/session/java_servlet_store.rb 2007-04-24 06:32:12 UTC (rev 478)
+++ trunk/rails-integration/src/main/ruby/builtin/rails-integration/session/java_servlet_store.rb 2007-04-24 08:30:53 UTC (rev 479)
@@ -18,7 +18,11 @@
@session_data = {}
java_session = @java_request.getSession(false)
if java_session
- @session_data = Marshal.load(java_session.getAttribute("__current_rails_session"))
+ marshalled_bytes = java_session.getAttribute('__current_rails_session');
+ if marshalled_bytes
+ marshalled_string = bytes_to_string(marshalled_bytes)
+ @session_data = Marshal.load(marshalled_string)
+ end
end
@session_data
end
@@ -26,7 +30,9 @@
# 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))
+ marshalled_string = Marshal.dump(@session_data)
+ marshalled_bytes = string_to_bytes(marshalled_string)
+ java_session.setAttribute('__current_rails_session', marshalled_bytes)
end
# Update and close the Java session entry
@@ -45,6 +51,26 @@
@session_data
end
+ private
+
+ def string_to_bytes(str)
+ bytes = Java::JavaClass.for_name("byte").new_array(str.length)
+ i = 0
+ str.each_byte do |b|
+ java.lang.reflect.Array.setByte(bytes, i, b)
+ i += 1
+ end
+ bytes
+ end
+
+ def bytes_to_string(bytes)
+ str = ''
+ for i in 0...bytes.length
+ str << java.lang.reflect.Array.getByte(bytes, i)
+ end
+ str
+ end
+
end
end
end
_______________________________________________
Jruby-extras-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/jruby-extras-devel