Java tutorial
/* * Copyright WizTools.org * Licensed under the Apache License, Version 2.0: * http://www.apache.org/licenses/LICENSE-2.0 */ //package org.wiztools.commons; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; /** * JavaScript functions in Java. Internally calls Rhino's implementation of the * function calls. * @author subhash */ public class JavaScript { private JavaScript() { } private static final ScriptEngine jsEngine; static { jsEngine = new ScriptEngineManager().getEngineByName("JavaScript"); } private static String toUpperCaseEncodedChars(final String inStr) { int lastPercentPosition = -3; // 0- (-3 ) > 2: ensures the first character is not uppercased accidently final char[] c = inStr.toCharArray(); char[] cOut = new char[c.length]; for (int i = 0; i < c.length; i++) { if (c[i] == '%') { lastPercentPosition = i; } final int diff = i - lastPercentPosition; if (diff == 1 || diff == 2) { cOut[i] = Character.toUpperCase(c[i]); } else { cOut[i] = c[i]; } } return new String(cOut); } public static String escape(final String str) { try { return (String) ((Invocable) jsEngine).invokeFunction("escape", str); } catch (ScriptException ex) { throw new RuntimeException(ex); } catch (NoSuchMethodException ex) { throw new RuntimeException(ex); } } public static String unescape(final String str) { try { return (String) ((Invocable) jsEngine).invokeFunction("unescape", str); } catch (ScriptException ex) { throw new RuntimeException(ex); } catch (NoSuchMethodException ex) { throw new RuntimeException(ex); } } public static String encodeURI(final String str) { try { final String out = (String) ((Invocable) jsEngine).invokeFunction("encodeURI", str); return toUpperCaseEncodedChars(out); } catch (ScriptException ex) { throw new RuntimeException(ex); } catch (NoSuchMethodException ex) { throw new RuntimeException(ex); } } public static String decodeURI(final String str) { try { return (String) ((Invocable) jsEngine).invokeFunction("decodeURI", str); } catch (ScriptException ex) { throw new RuntimeException(ex); } catch (NoSuchMethodException ex) { throw new RuntimeException(ex); } } public static String encodeURIComponent(final String str) { try { final String out = (String) ((Invocable) jsEngine).invokeFunction("encodeURIComponent", str); return toUpperCaseEncodedChars(out); } catch (ScriptException ex) { throw new RuntimeException(ex); } catch (NoSuchMethodException ex) { throw new RuntimeException(ex); } } /** * * @param str * @return */ public static String decodeURIComponent(final String str) { try { return (String) ((Invocable) jsEngine).invokeFunction("decodeURIComponent", str); } catch (ScriptException ex) { throw new RuntimeException(ex); } catch (NoSuchMethodException ex) { throw new RuntimeException(ex); } } }