/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.cluster.impl.events;
import org.geoserver.rest.DispatcherCallback;
import org.geotools.util.logging.Logging;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.AbstractMap.SimpleEntry;
import java.util.Map;
import java.util.logging.Level;
import java.util.stream.Collectors;
public class RestDispatcherCallback implements DispatcherCallback {
final static java.util.logging.Logger LOGGER = Logging.getLogger(RestDispatcherCallback.class);
private static final ThreadLocal<Map<String, String>> parameters = new ThreadLocal<>();
public static Map<String, String> getParameters() {
return parameters.get();
}
@Override
public void init(HttpServletRequest request, HttpServletResponse response) {
// get request parameters
Map<String, String> parameters = request.getParameterMap().entrySet().stream().map(entry -> {
String[] values = entry.getValue();
String value = values == null || values.length == 0 ? null : values[0];
return new SimpleEntry<>(entry.getKey(), value);
}).collect(Collectors.toMap(SimpleEntry::getKey, SimpleEntry::getValue));
// log request parameters
if (LOGGER.isLoggable(Level.FINE)) {
parameters.keySet().forEach(parameter ->
LOGGER.info("Registering incoming parameter: " + parameter));
}
// set local parameters
this.parameters.set(parameters);
}
@Override
public void dispatched(HttpServletRequest request, HttpServletResponse response, Object handler) {
}
@Override
public void exception(HttpServletRequest request, HttpServletResponse response, Exception error) {
}
@Override
public void finished(HttpServletRequest request, HttpServletResponse response) {
}
}