1   /**
2    * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3    *
4    * The contents of this file are subject to the terms of the Liferay Enterprise
5    * Subscription License ("License"). You may not use this file except in
6    * compliance with the License. You can obtain a copy of the License by
7    * contacting Liferay, Inc. See the License for the specific language governing
8    * permissions and limitations under the License, including but not limited to
9    * distribution rights of the Software.
10   *
11   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
15   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
16   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
17   * SOFTWARE.
18   */
19  
20  package com.liferay.portal.json;
21  
22  import com.liferay.portal.kernel.json.JSONArray;
23  import com.liferay.portal.kernel.json.JSONException;
24  import com.liferay.portal.kernel.json.JSONFactory;
25  import com.liferay.portal.kernel.json.JSONObject;
26  import com.liferay.portal.kernel.log.Log;
27  import com.liferay.portal.kernel.log.LogFactoryUtil;
28  
29  import org.jabsorb.JSONSerializer;
30  import org.jabsorb.serializer.MarshallException;
31  import org.jabsorb.serializer.UnmarshallException;
32  
33  /**
34   * <a href="JSONFactoryImpl.java.html"><b><i>View Source</i></b></a>
35   *
36   * @author Brian Wing Shun Chan
37   *
38   */
39  public class JSONFactoryImpl implements JSONFactory {
40  
41      public JSONFactoryImpl() {
42          _serializer = new JSONSerializer();
43  
44           try {
45               _serializer.registerDefaultSerializers();
46           }
47           catch (Exception e) {
48               _log.error(e, e);
49           }
50      }
51  
52      public JSONArray createJSONArray() {
53          return new JSONArrayImpl();
54      }
55  
56      public JSONArray createJSONArray(String json) throws JSONException {
57          return new JSONArrayImpl(json);
58      }
59  
60      public JSONObject createJSONObject() {
61          return new JSONObjectImpl();
62      }
63  
64      public JSONObject createJSONObject(String json) throws JSONException {
65          return new JSONObjectImpl(json);
66      }
67  
68      public Object deserialize(JSONObject jsonObj) {
69          return deserialize(jsonObj.toString());
70      }
71  
72      public Object deserialize(String json) {
73          try {
74              return _serializer.fromJSON(json);
75          }
76          catch (UnmarshallException ue) {
77               _log.error(ue, ue);
78  
79              throw new IllegalStateException("Unable to deserialize oject", ue);
80          }
81      }
82  
83      public String serialize(Object obj) {
84          try {
85              return _serializer.toJSON(obj);
86          }
87          catch (MarshallException me) {
88              _log.error(me, me);
89  
90              throw new IllegalStateException("Unable to serialize oject", me);
91          }
92      }
93  
94      private static Log _log = LogFactoryUtil.getLog(JSONFactoryImpl.class);
95  
96      private JSONSerializer _serializer;
97  
98  }