public JSRequest(Request request, Context cx, Scriptable scope) { this(); ESXX esxx = ESXX.getInstance(); this.request = request; requestURI = (JSURI) cx.newObject(scope, "URI", new Object[] {request.getRequestURI()}); scriptURI = (JSURI) cx.newObject(scope, "URI", new Object[] {request.getScriptURI()}); env = cx.newObject(scope); headers = cx.newObject(scope); cookies = cx.newObject(scope); accept = cx.newObject(scope); query = cx.newObject(scope); args = null; params = cx.newObject(scope); acceptValueOf = new FunctionObject("valueOf", acceptValueOfMethod, accept); for (String name : request.getProperties().stringPropertyNames()) { String value = request.getProperties().getProperty(name).trim(); // Add environtment variable to esxx.env ScriptableObject.putProperty(env, name, value); // If this is an HTTP header, get the original name back String hdr = esxx.cgiToHTTP(name); if (hdr != null) { // Add real HTTP header to this.headers addHeader(hdr, value); // Decode cookies handleCookieHeader(hdr, value); // Decode Accept* HTTP headers handleAcceptHeader(hdr, value, cx, accept); // Decode Content-* HTTP headers handleContentHeader(hdr, value); // Handle SOAPAction if (hdr.equals("SOAPAction")) { soapAction = value; } } if (name.equals("QUERY_STRING")) { try { StringUtil.decodeFormVariables(value, query); } catch (UnsupportedEncodingException ex) { throw new ESXXException("Unable to parse request entity: " + ex.getMessage(), ex); } } } logger = JSESXX.newObject(cx, scope, "Logger", new Object[] {request, request.getScriptName()}); }