JavaScript.java Source code

Java tutorial

Introduction

Here is the source code for JavaScript.java

Source

/*
 * 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);
        }
    }
}