/* This file belongs to the Servoy development and deployment environment, Copyright (C) 1997-2010 Servoy BV This program is free software; you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program; if not, see http://www.gnu.org/licenses or write to the Free Software Foundation,Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 */ package com.servoy.j2db.util.serialize; import org.json.JSONObject; import org.mozilla.javascript.Undefined; import com.servoy.j2db.dataprocessing.IDatabaseManager; import com.servoy.j2db.dataprocessing.IFoundSet; import com.servoy.j2db.dataprocessing.IRecord; public class JSONConverter { private JSONSerializerWrapper serializerWrapper; private final IDatabaseManager databaseManager; public JSONConverter() { this(null); } /** * @param databaseManager */ public JSONConverter(IDatabaseManager databaseManager) { this.databaseManager = databaseManager; } private JSONSerializerWrapper getJSONSerializer() { if (serializerWrapper == null) { serializerWrapper = new JSONSerializerWrapper(true); } return serializerWrapper; } /** * @param value * @return * @throws Exception */ public String convertToJSON(Object value) throws Exception { if (value == null || value == Undefined.instance) return null; if (value instanceof IFoundSet || value instanceof IRecord) throw new RuntimeException("value cant be a record or foundset"); //$NON-NLS-1$ return getJSONSerializer().toJSON(value).toString(); } /** * @param retval * @param args * @return * @throws Exception */ public Object convertFromJSON(Object retval) throws Exception { return convertFromJSON(databaseManager, retval); } /** * @param retval * @param args * @return * @throws Exception */ public Object convertFromJSON(IDatabaseManager dbmgr, Object retval) throws Exception { if (retval instanceof String) { return getJSONSerializer().fromJSON(dbmgr, (String)retval); } if (retval instanceof JSONObject) { return getJSONSerializer().fromJSON(dbmgr, (JSONObject)retval); } return retval; } }