Java tutorial
/* * BeanShell Web * Copyright (C) 2012 Stefano Fornari * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU Affero General Public License version 3 as published by * the Free Software Foundation with the addition of the following permission * added to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED * WORK IN WHICH THE COPYRIGHT IS OWNED BY Stefano Fornari, Stefano Fornari * DISCLAIMS THE WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS. * * 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 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 USA. */ package ste.web.beanshell; import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.logging.Logger; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import org.json.JSONTokener; /** * * @author ste */ public class BeanShellUtils { // --------------------------------------------------------------- Constants public static final String DEFAULT_CONTROLLERS_PREFIX = "/"; public static final String DEFAULT_VIEWS_PREFIX = "/"; public static final String LOG_NAME = "ste.web"; public static final String PARAM_CONTROLLERS = "controllers-prefix"; public static final String PARAM_VIEWS = "views-prefix"; public static final String CONTENT_TYPE_JSON = "application/json"; public static final Logger log = Logger.getLogger(LOG_NAME); // ---------------------------------------------------------- Public methods /** * Reads the given script enclosing it into a try-catch block. * * @param script the file to read - NOT NULL * * @return the script content * * @throws IOException in case of IO errors */ public static String getScript(File script) throws IOException { if (script == null) { throw new IllegalArgumentException("script cannot be null"); } ByteArrayOutputStream baos = new ByteArrayOutputStream(); FileInputStream is = null; try { is = new FileInputStream(script); byte[] buf = new byte[1024]; int n = 0; while ((n = is.read(buf)) >= 0) { baos.write(buf, 0, n); } return "try { " + baos.toString() + "} catch (Throwable t) { t.printStackTrace(); throw t; }"; } finally { if (is != null) { is.close(); } baos.close(); } } /** * Replaces '.' with "_". * * @param name the name to normalize - NOT NULL * * @return the normalized version of the name */ public static String normalizeVariableName(final String name) { if (name == null) { throw new IllegalArgumentException("name cannot be null"); } return name.replaceAll("\\.", "_"); } public static Object getJSONBody(final InputStream in) throws IOException { Object o = null; try { BufferedInputStream is = new BufferedInputStream(in); is.mark(0); if (is.read() == '{') { is.reset(); o = new JSONObject(new JSONTokener(new InputStreamReader(is))); } else { is.reset(); o = new JSONArray(new JSONTokener(new InputStreamReader(is))); } } catch (JSONException x) { throw new IOException("error parsing the body as a JSON object", x); } return o; } }