Title: [480] trunk/rails-integration/src/main: Added Ola's fix for the RubyString-byte-array problem
Revision
480
Author
tantalon
Date
2007-04-24 05:11:17 -0400 (Tue, 24 Apr 2007)

Log Message

Added Ola's fix for the RubyString-byte-array problem

Modified Paths


Added Paths

Diff

Added: trunk/rails-integration/src/main/java/org/jruby/webapp/util/StringHandler.java (0 => 480)


--- trunk/rails-integration/src/main/java/org/jruby/webapp/util/StringHandler.java	                        (rev 0)
+++ trunk/rails-integration/src/main/java/org/jruby/webapp/util/StringHandler.java	2007-04-24 09:11:17 UTC (rev 480)
@@ -0,0 +1,45 @@
+/***** BEGIN LICENSE BLOCK *****
+ * Version: CPL 1.0/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Common Public
+ * License Version 1.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * Software distributed under the License is distributed on an "AS
+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ * implied. See the License for the specific language governing
+ * rights and limitations under the License.
+ *
+ * Copyright (C) 2007 Ola Bini <[EMAIL PROTECTED]>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either of the GNU General Public License Version 2 or later (the "GPL"),
+ * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the CPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the CPL, the GPL or the LGPL.
+ ***** END LICENSE BLOCK *****/
+package org.jruby.webapp.util;
+
+import org.jruby.runtime.builtin.IRubyObject;
+import org.jruby.RubyString;
+import org.jruby.util.ByteList;
+
+/**
+ * @author <a href="" PROTECTED]">Ola Bini</a>
+ */
+public class StringHandler {
+	public static byte[] stringToBytes(IRubyObject str) {
+		return ((RubyString)str.getInstanceVariable("@string")).getBytes();
+	}
+
+	public static RubyString bytesToString(IRubyObject self, byte[] bs) {
+		return RubyString.newString(self.getRuntime(),new ByteList(bs, false));
+	}
+}// StringHandler

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


--- trunk/rails-integration/src/main/ruby/builtin/rails-integration/session/java_servlet_store.rb	2007-04-24 08:30:53 UTC (rev 479)
+++ trunk/rails-integration/src/main/ruby/builtin/rails-integration/session/java_servlet_store.rb	2007-04-24 09:11:17 UTC (rev 480)
@@ -54,21 +54,13 @@
       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
+        o = Object.new
+        o.instance_variable_set :@string, str
+        org.jruby.webapp.util.StringHandler.stringToBytes(o)
       end
 
       def bytes_to_string(bytes)
-        str = ''
-        for i in 0...bytes.length
-          str << java.lang.reflect.Array.getByte(bytes, i)
-        end
-        str
+        org.jruby.webapp.util.StringHandler.bytesToString(self, bytes)
       end
 
     end
_______________________________________________
Jruby-extras-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/jruby-extras-devel

Reply via email to