svn commit: r908714 - in /ofbiz/trunk/framework/base/src/org/ofbiz/base/util: UtilIO.java test/UtilIOTests.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r908714 - in /ofbiz/trunk/framework/base/src/org/ofbiz/base/util: UtilIO.java test/UtilIOTests.java

doogie-3
Author: doogie
Date: Wed Feb 10 22:48:41 2010
New Revision: 908714

URL: http://svn.apache.org/viewvc?rev=908714&view=rev
Log:
Allow readObject/writeObject to fall back to JSON.

Modified:
    ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilIO.java
    ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/UtilIOTests.java

Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilIO.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilIO.java?rev=908714&r1=908713&r2=908714&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilIO.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilIO.java Wed Feb 10 22:48:41 2010
@@ -35,6 +35,7 @@
 import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 import java.io.Serializable;
+import java.io.StringReader;
 import java.io.StringWriter;
 import java.io.Writer;
 import java.nio.ByteBuffer;
@@ -46,6 +47,8 @@
 import org.ofbiz.base.container.ClassLoaderContainer;
 import org.ofbiz.base.conversion.Converter;
 import org.ofbiz.base.conversion.Converters;
+import org.ofbiz.base.json.JSON;
+import org.ofbiz.base.json.JSONWriter;
 
 public final class UtilIO {
     public static final Charset UTF8 = Charset.forName("UTF-8");
@@ -310,6 +313,11 @@
             }
         } catch (Exception e) {
         }
+        try {
+            return new JSON(new StringReader(new String(buffer, offset, length))).JSONValue();
+        } catch (Error e) {
+        } catch (Exception e) {
+        }
         throw new IOException("Can't read (" + new String(buffer, offset, length) + ")");
     }
 
@@ -347,7 +355,12 @@
             writer.write(str);
             return true;
         } else {
-            return false;
+            StringWriter sw = new StringWriter();
+            IndentingWriter indenting = new IndentingWriter(writer, true, false);
+            JSONWriter jsonWriter = new JSONWriter(indenting);
+            jsonWriter.write(value);
+            writer.write(sw.toString());
+            return true;
         }
     }
 

Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/UtilIOTests.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/UtilIOTests.java?rev=908714&r1=908713&r2=908714&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/UtilIOTests.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/UtilIOTests.java Wed Feb 10 22:48:41 2010
@@ -152,7 +152,7 @@
         checkBasicReadWriteObject(BigDecimal.valueOf(500.5), "java.math.BigDecimal:500.5\n");
         checkBasicReadWriteObject(BigInteger.valueOf(500), "java.math.BigInteger:500\n");
         checkBasicReadWriteObject("1", "java.lang.String:1\n");
-        //checkBasicReadWriteObject(Arrays.asList(new Object[] {"a", UtilMisc.toMap("b", Long.valueOf(1))}), "[ \"a\", { \"b\": 1 } ]\n");
+        checkBasicReadWriteObject(Arrays.asList(new Object[] {"a", UtilMisc.toMap("b", Long.valueOf(1))}), "java.util.List:[\n \"a\",\n {\n  \"b\": 1\n }\n]\n");
         checkBasicReadWriteObject(MemoryType.HEAP, "java.lang.management.MemoryType:HEAP\n");
         checkBasicReadWriteObject(MemoryType.NON_HEAP, "java.lang.management.MemoryType:NON_HEAP\n");
         checkBasicReadWriteObject(UtilIO.UTF8, "java.nio.charset.Charset:UTF-8\n");