/* ****************************************************************************** * Copyright (c) 2006-2016 XMind Ltd. and others. * * This file is a part of XMind 3. XMind releases 3 and * above are dual-licensed under the Eclipse Public License (EPL), * which is available at http://www.eclipse.org/legal/epl-v10.html * and the GNU Lesser General Public License (LGPL), * which is available at http://www.gnu.org/licenses/lgpl.html * See http://www.xmind.net/license.html for details. * * Contributors: * XMind Ltd. - initial API and implementation *******************************************************************************/ /** * */ package org.xmind.core.net.http; import java.io.IOException; import java.io.OutputStream; import org.json.JSONObject; import org.xmind.core.net.internal.EncodingUtils; /** * @author Frank Shaka * @since 3.6.50 */ public class JSONEntity extends HttpEntity { public static final String CONTENT_TYPE_JSON = "application/json; charset=utf-8"; //$NON-NLS-1$ private JSONObject object; private boolean pretty; private String json; /** * */ public JSONEntity(JSONObject object) { this(object, false); } /** * */ public JSONEntity(JSONObject object, boolean pretty) { this.object = object; this.pretty = pretty; this.json = null; } /** * @return the json */ public String getJSON() { if (json == null) { if (pretty) { json = object.toString(4); } else { json = object.toString(); } } return json; } /* * (non-Javadoc) * * @see org.xmind.core.net.http.HttpEntity#getContentType() */ @Override public String getContentType() { return CONTENT_TYPE_JSON; } /* * (non-Javadoc) * * @see org.xmind.core.net.http.HttpEntity#getContentLength() */ @Override public long getContentLength() { return EncodingUtils.toDefaultBytes(getJSON()).length; } /* * (non-Javadoc) * * @see org.xmind.core.net.http.HttpEntity#writeTo(java.io.OutputStream) */ @Override public void writeTo(OutputStream output) throws IOException { output.write(EncodingUtils.toDefaultBytes(getJSON())); } }