private static void defineProperties(Context cx, JaggeryContext context, ScriptableObject scope) { WebAppContext ctx = (WebAppContext) context; JavaScriptProperty request = new JavaScriptProperty("request"); request.setValue(cx.newObject(scope, "Request", new Object[] {ctx.getServletRequest()})); request.setAttribute(ScriptableObject.READONLY); RhinoEngine.defineProperty(scope, request); JavaScriptProperty response = new JavaScriptProperty("response"); response.setValue(cx.newObject(scope, "Response", new Object[] {ctx.getServletResponse()})); response.setAttribute(ScriptableObject.READONLY); RhinoEngine.defineProperty(scope, response); JavaScriptProperty session = new JavaScriptProperty("session"); session.setValue( cx.newObject(scope, "Session", new Object[] {ctx.getServletRequest().getSession()})); session.setAttribute(ScriptableObject.READONLY); RhinoEngine.defineProperty(scope, session); JavaScriptProperty application = new JavaScriptProperty("application"); application.setValue(cx.newObject(scope, "Application", new Object[] {ctx.getServletConext()})); application.setAttribute(ScriptableObject.READONLY); RhinoEngine.defineProperty(scope, application); if (isWebSocket(ctx.getServletRequest())) { JavaScriptProperty websocket = new JavaScriptProperty("websocket"); websocket.setValue(cx.newObject(scope, "WebSocket", new Object[0])); websocket.setAttribute(ScriptableObject.READONLY); RhinoEngine.defineProperty(scope, websocket); } }