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");