ah yes and some notes to add:
To set it back to the existing JsonMarshaller you have to:
LZJsonFactory.setJsonBuilderInstance(new
org.openlaszlo.remote.json.LZJsonMarshaller());

These new features should definitely go their way into the docs. But I have
no idea how to contribute to that.

have a nice weekend,
sebastian


2009/9/5 Sebastian Wagner <[email protected]>

> Change 20090905-sebastianwagner-d by
> [email protected] on 2009-09-05 19:32:56
> CEST
>     in
> /Users/sebastianwagner/Documents/work/openlaszlo/branches/openlaszlo/trunk
>     for http://svn.openlaszlo.org/openlaszlo/trunk
>
> Summary: This Fixes: LPP-8437, LPP-8029
> Extends Output of RPC with Gson as marshaller. This changeset adds a new
> Factory Class to set a custom Json Marshaller
> LZJsonFactory => to overwrite the default Json Handling you can call the
> Method: LZJsonFactory.setJsonBuilderInstance(LZBaseJsonMarshallAdapter
> instance)
>
> There are two implementations of Json:
> 1) The existing, that I slightly refactored to fit into the Factory +
> Adapter/Interface Pattern (LZJsonMarshaller)
> 2) The Gson Handling which is now the default one (LZGsonMarshaller)
>
> To write your own Marshaller you have to use the pattern
> public MyMarshaller extends LZBaseJsonMarshallAdapter implements
> ILZJsonMarshaller {
>     public synchronized byte[] createObject(Object object, String
> objectReturnType) {}
> }
> and then set an instance of that Object with
> LZJsonFactory.setJsonBuilderInstance(myMarshallerInstanceObject)
>
> The LZGsonMarshaller has some default settings to make the JSon Output 100%
> equal to the existing one.
> To disable that you should call:
> LZGsonMarshaller.applyLzDefaultGsonProperties = false;
>
> To get the Gson Factory to set your custom marshalling options you have to:
> GsonBuilder gsonBuilder = LZGsonMarshaller.getGsonBuilderInstance()
> => using the gsonBuilder you then can set any property that is documented
> at:
> http://sites.google.com/site/gson/gson-user-guide
>
> By using Gson you can then also use annotations or other manipulations to
> modify the JSon output.
> See their user guide for full documentation of features.
>
> If Gson detects a Circular Reference it will throw for example:
> ava.lang.IllegalStateException: Circular reference found:
> org.i4change.app.hibernate.beans.user.us...@2855f16e
>
>         at
> com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:108)
>
>         at
> com.google.gson.JsonSerializationVisitor.getJsonElementForChild(JsonSerializationVisitor.java:117)
>
>         at
> com.google.gson.JsonSerializationVisitor.addAsChildOfObject(JsonSerializationVisitor.java:95)
>
> ....
>
> New Features:
>
> Bugs Fixed: LPP-8437, Lpp-8029
>
> Technical Reviewer: hqm
> QA Reviewer: (pending)
> Doc Reviewer: (pending)
>
> Documentation:
>
> Release Notes:
>
> Details:
>
>
> Tests:
>
> Files:
> A       WEB-INF/lib/gson-1.3.jar
> A
> WEB-INF/lps/server/src/org/openlaszlo/remote/json/LZBaseJsonMarshallAdapter.java
> A
> WEB-INF/lps/server/src/org/openlaszlo/remote/json/ILZJsonMarshaller.java
> A
> WEB-INF/lps/server/src/org/openlaszlo/remote/json/LZGsonMarshaller.java
> A
> WEB-INF/lps/server/src/org/openlaszlo/remote/json/LZJsonFactory.java
> A
> WEB-INF/lps/server/src/org/openlaszlo/remote/json/LZJsonMarshaller.java
> M
> WEB-INF/lps/server/src/org/openlaszlo/remote/json/LZReturnObject.java
> M       WEB-INF/lps/server/src/org/openlaszlo/data/JavaDataSource.java
>
> Changeset:
> http://svn.openlaszlo.org/openlaszlo/patches/20090905-sebastianwagner-d.tar
>
> --
> Sebastian Wagner
> http://www.webbase-design.de
> http://openmeetings.googlecode.com
> http://www.laszlo-forum.de
> [email protected]
>



-- 
Sebastian Wagner
http://www.webbase-design.de
http://openmeetings.googlecode.com
http://www.laszlo-forum.de
[email protected]
_______________________________________________
Laszlo-reviews mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-reviews

Reply via email to