diff --git a/java/src/org/jrack/JRack.java b/java/src/org/jrack/JRack.java index 018d8ce..035b481 100644 --- a/java/src/org/jrack/JRack.java +++ b/java/src/org/jrack/JRack.java @@ -9,6 +9,8 @@ import java.io.IOException; import java.util.Arrays; import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; public abstract class JRack implements Rack { private static final JRackLogger logger = new Slf4jLogger(RackServlet.class.getName()); @@ -43,6 +45,7 @@ public Context getEnvironment(HttpServletRequest req) { environment.with(Rack.SERVER_PORT, req.getServerPort()); environment.with(Rack.SCRIPT_NAME, servletPath); environment.with(Rack.REQUEST, req); + environment.with(Rack.PARAMS, modifiableRequestParameterMap(req.getParameterMap())); environment.with(Rack.RACK_BROWSER_LOCALE, req.getLocale()); environment.with(Rack.COOKIES, req.getCookies()); @@ -61,4 +64,19 @@ public Context getEnvironment(HttpServletRequest req) { return environment; } + + /** + * create a new modifiable parameter map that can be updated by the client if need be + * + * @param parameterMap the request parameters map + * @return a new Map map or null if the parameterMap is empty or null + */ + private Map modifiableRequestParameterMap(Map parameterMap) { + Map map = null; + if (parameterMap != null && !parameterMap.isEmpty()) { + map = new HashMap(); + map.putAll(parameterMap); + } + return map; + } } diff --git a/java/src/org/jrack/Rack.java b/java/src/org/jrack/Rack.java index 5e831a5..e4414d5 100644 --- a/java/src/org/jrack/Rack.java +++ b/java/src/org/jrack/Rack.java @@ -70,6 +70,7 @@ public interface Rack { public static final String RACK_RUN_ONCE = "rack.run_once"; public static final String RACK_LOGGER = "rack.logger"; public static final String RACK_BROWSER_LOCALE = "rack.browser.locale"; + public static final String PARAMS = "params"; /** * The single method implemented by all Rack4Java applications