You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ad...@apache.org on 2014/10/27 10:06:59 UTC
svn commit: r1634481 -
/ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java
Author: adrianc
Date: Mon Oct 27 09:06:59 2014
New Revision: 1634481
URL: http://svn.apache.org/r1634481
Log:
Integrate JSON.java with the Jackson library.
Modified:
ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java
Modified: ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java?rev=1634481&r1=1634480&r2=1634481&view=diff
==============================================================================
--- ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java (original)
+++ ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java Mon Oct 27 09:06:59 2014
@@ -23,23 +23,30 @@ import java.io.InputStream;
import java.io.Reader;
import org.apache.commons.io.IOUtils;
-import org.ofbiz.base.lang.ThreadSafe;
import org.ofbiz.base.util.Assert;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
/** A JSON object. */
@ThreadSafe
public final class JSON {
+ // TODO: Find a generic way to modify mapper options
+ private static final ObjectMapper mapper = new ObjectMapper();
+
public static JSON from(InputStream inStream) throws IOException {
Assert.notNull("inStream", inStream);
String jsonString = IOUtils.toString(inStream, "UTF-8");
return from(jsonString);
}
- public static JSON from(Object object) {
+ public static JSON from(Object object) throws IOException {
Assert.notNull("object", object);
- // TODO: Finish implementation.
- return null;
+ try {
+ return from(mapper.writeValueAsString(object));
+ } catch (Exception e) {
+ throw new IOException(e);
+ }
}
public static JSON from(Reader reader) throws IOException {
@@ -70,9 +77,14 @@ public final class JSON {
return jsonString.hashCode();
}
- public <T> T toObject() {
- // TODO: Finish implementation.
- return null;
+ public <T> T toObject(Class<T> targetClass) throws IOException {
+ try {
+ return mapper.readValue(jsonString, targetClass);
+ } catch (IOException e) {
+ throw e;
+ } catch (Exception e) {
+ throw new IOException(e);
+ }
}
@Override
Re: svn commit: r1634481 - /ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java
Posted by Chatree Srichart <ch...@gmail.com>.
OK. I will think about that.
Thanks.
Best Regards,
Chatree Srichart
On Thu, Nov 6, 2014 at 9:38 PM, Adrian Crum <
adrian.crum@sandglass-software.com> wrote:
> No, because that would expose Jackson to the rest of the framework. There
> is a TODO in JSON.java to find a generic way to include those features.
>
> So, if you can think of a way to add a generic method to JSON.java that
> will configure Jackson, that would be great.
>
> Something like JSON.setDateFormat(String format)...
>
> Adrian Crum
> Sandglass Software
> www.sandglass-software.com
>
>
> On 11/6/2014 11:35 AM, Chatree Srichart wrote:
>
>> Hi Adrian,
>>
>> Would it be better if you make "mapper" property to be public?
>>
>> Now, I cannot not change date format in JSON string even though Jackson
>> allow to do.
>>
>> http://wiki.fasterxml.com/JacksonFAQDateHandling
>>
>> For example, I want to change:
>>
>> createdTxStamp: 1386071477388
>>
>> to:
>>
>> createdTxStamp: "2013-12-03"
>>
>> Best Regards,
>> Chatree Srichart
>>
>> On Mon, Oct 27, 2014 at 4:06 PM, <ad...@apache.org> wrote:
>>
>> Author: adrianc
>>> Date: Mon Oct 27 09:06:59 2014
>>> New Revision: 1634481
>>>
>>> URL: http://svn.apache.org/r1634481
>>> Log:
>>> Integrate JSON.java with the Jackson library.
>>>
>>> Modified:
>>>
>>> ofbiz/branches/json-integration-refactoring/
>>> framework/base/src/org/ofbiz/base/lang/JSON.java
>>>
>>> Modified:
>>> ofbiz/branches/json-integration-refactoring/
>>> framework/base/src/org/ofbiz/base/lang/JSON.java
>>> URL:
>>> http://svn.apache.org/viewvc/ofbiz/branches/json-
>>> integration-refactoring/framework/base/src/org/ofbiz/
>>> base/lang/JSON.java?rev=1634481&r1=1634480&r2=1634481&view=diff
>>>
>>> ============================================================
>>> ==================
>>> ---
>>> ofbiz/branches/json-integration-refactoring/
>>> framework/base/src/org/ofbiz/base/lang/JSON.java
>>> (original)
>>> +++
>>> ofbiz/branches/json-integration-refactoring/
>>> framework/base/src/org/ofbiz/base/lang/JSON.java
>>> Mon Oct 27 09:06:59 2014
>>> @@ -23,23 +23,30 @@ import java.io.InputStream;
>>> import java.io.Reader;
>>>
>>> import org.apache.commons.io.IOUtils;
>>> -import org.ofbiz.base.lang.ThreadSafe;
>>> import org.ofbiz.base.util.Assert;
>>>
>>> +import com.fasterxml.jackson.databind.ObjectMapper;
>>> +
>>> /** A JSON object. */
>>> @ThreadSafe
>>> public final class JSON {
>>>
>>> + // TODO: Find a generic way to modify mapper options
>>> + private static final ObjectMapper mapper = new ObjectMapper();
>>> +
>>> public static JSON from(InputStream inStream) throws IOException {
>>> Assert.notNull("inStream", inStream);
>>> String jsonString = IOUtils.toString(inStream, "UTF-8");
>>> return from(jsonString);
>>> }
>>>
>>> - public static JSON from(Object object) {
>>> + public static JSON from(Object object) throws IOException {
>>> Assert.notNull("object", object);
>>> - // TODO: Finish implementation.
>>> - return null;
>>> + try {
>>> + return from(mapper.writeValueAsString(object));
>>> + } catch (Exception e) {
>>> + throw new IOException(e);
>>> + }
>>> }
>>>
>>> public static JSON from(Reader reader) throws IOException {
>>> @@ -70,9 +77,14 @@ public final class JSON {
>>> return jsonString.hashCode();
>>> }
>>>
>>> - public <T> T toObject() {
>>> - // TODO: Finish implementation.
>>> - return null;
>>> + public <T> T toObject(Class<T> targetClass) throws IOException {
>>> + try {
>>> + return mapper.readValue(jsonString, targetClass);
>>> + } catch (IOException e) {
>>> + throw e;
>>> + } catch (Exception e) {
>>> + throw new IOException(e);
>>> + }
>>> }
>>>
>>> @Override
>>>
>>>
>>>
>>>
>>
Re: svn commit: r1634481 - /ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java
Posted by Adrian Crum <ad...@sandglass-software.com>.
No, because that would expose Jackson to the rest of the framework.
There is a TODO in JSON.java to find a generic way to include those
features.
So, if you can think of a way to add a generic method to JSON.java that
will configure Jackson, that would be great.
Something like JSON.setDateFormat(String format)...
Adrian Crum
Sandglass Software
www.sandglass-software.com
On 11/6/2014 11:35 AM, Chatree Srichart wrote:
> Hi Adrian,
>
> Would it be better if you make "mapper" property to be public?
>
> Now, I cannot not change date format in JSON string even though Jackson
> allow to do.
>
> http://wiki.fasterxml.com/JacksonFAQDateHandling
>
> For example, I want to change:
>
> createdTxStamp: 1386071477388
>
> to:
>
> createdTxStamp: "2013-12-03"
>
> Best Regards,
> Chatree Srichart
>
> On Mon, Oct 27, 2014 at 4:06 PM, <ad...@apache.org> wrote:
>
>> Author: adrianc
>> Date: Mon Oct 27 09:06:59 2014
>> New Revision: 1634481
>>
>> URL: http://svn.apache.org/r1634481
>> Log:
>> Integrate JSON.java with the Jackson library.
>>
>> Modified:
>>
>> ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java
>>
>> Modified:
>> ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java?rev=1634481&r1=1634480&r2=1634481&view=diff
>>
>> ==============================================================================
>> ---
>> ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java
>> (original)
>> +++
>> ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java
>> Mon Oct 27 09:06:59 2014
>> @@ -23,23 +23,30 @@ import java.io.InputStream;
>> import java.io.Reader;
>>
>> import org.apache.commons.io.IOUtils;
>> -import org.ofbiz.base.lang.ThreadSafe;
>> import org.ofbiz.base.util.Assert;
>>
>> +import com.fasterxml.jackson.databind.ObjectMapper;
>> +
>> /** A JSON object. */
>> @ThreadSafe
>> public final class JSON {
>>
>> + // TODO: Find a generic way to modify mapper options
>> + private static final ObjectMapper mapper = new ObjectMapper();
>> +
>> public static JSON from(InputStream inStream) throws IOException {
>> Assert.notNull("inStream", inStream);
>> String jsonString = IOUtils.toString(inStream, "UTF-8");
>> return from(jsonString);
>> }
>>
>> - public static JSON from(Object object) {
>> + public static JSON from(Object object) throws IOException {
>> Assert.notNull("object", object);
>> - // TODO: Finish implementation.
>> - return null;
>> + try {
>> + return from(mapper.writeValueAsString(object));
>> + } catch (Exception e) {
>> + throw new IOException(e);
>> + }
>> }
>>
>> public static JSON from(Reader reader) throws IOException {
>> @@ -70,9 +77,14 @@ public final class JSON {
>> return jsonString.hashCode();
>> }
>>
>> - public <T> T toObject() {
>> - // TODO: Finish implementation.
>> - return null;
>> + public <T> T toObject(Class<T> targetClass) throws IOException {
>> + try {
>> + return mapper.readValue(jsonString, targetClass);
>> + } catch (IOException e) {
>> + throw e;
>> + } catch (Exception e) {
>> + throw new IOException(e);
>> + }
>> }
>>
>> @Override
>>
>>
>>
>
Re: svn commit: r1634481 - /ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java
Posted by Chatree Srichart <ch...@gmail.com>.
Hi Adrian,
Would it be better if you make "mapper" property to be public?
Now, I cannot not change date format in JSON string even though Jackson
allow to do.
http://wiki.fasterxml.com/JacksonFAQDateHandling
For example, I want to change:
createdTxStamp: 1386071477388
to:
createdTxStamp: "2013-12-03"
Best Regards,
Chatree Srichart
On Mon, Oct 27, 2014 at 4:06 PM, <ad...@apache.org> wrote:
> Author: adrianc
> Date: Mon Oct 27 09:06:59 2014
> New Revision: 1634481
>
> URL: http://svn.apache.org/r1634481
> Log:
> Integrate JSON.java with the Jackson library.
>
> Modified:
>
> ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java
>
> Modified:
> ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java
> URL:
> http://svn.apache.org/viewvc/ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java?rev=1634481&r1=1634480&r2=1634481&view=diff
>
> ==============================================================================
> ---
> ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java
> (original)
> +++
> ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java
> Mon Oct 27 09:06:59 2014
> @@ -23,23 +23,30 @@ import java.io.InputStream;
> import java.io.Reader;
>
> import org.apache.commons.io.IOUtils;
> -import org.ofbiz.base.lang.ThreadSafe;
> import org.ofbiz.base.util.Assert;
>
> +import com.fasterxml.jackson.databind.ObjectMapper;
> +
> /** A JSON object. */
> @ThreadSafe
> public final class JSON {
>
> + // TODO: Find a generic way to modify mapper options
> + private static final ObjectMapper mapper = new ObjectMapper();
> +
> public static JSON from(InputStream inStream) throws IOException {
> Assert.notNull("inStream", inStream);
> String jsonString = IOUtils.toString(inStream, "UTF-8");
> return from(jsonString);
> }
>
> - public static JSON from(Object object) {
> + public static JSON from(Object object) throws IOException {
> Assert.notNull("object", object);
> - // TODO: Finish implementation.
> - return null;
> + try {
> + return from(mapper.writeValueAsString(object));
> + } catch (Exception e) {
> + throw new IOException(e);
> + }
> }
>
> public static JSON from(Reader reader) throws IOException {
> @@ -70,9 +77,14 @@ public final class JSON {
> return jsonString.hashCode();
> }
>
> - public <T> T toObject() {
> - // TODO: Finish implementation.
> - return null;
> + public <T> T toObject(Class<T> targetClass) throws IOException {
> + try {
> + return mapper.readValue(jsonString, targetClass);
> + } catch (IOException e) {
> + throw e;
> + } catch (Exception e) {
> + throw new IOException(e);
> + }
> }
>
> @Override
>
>
>