
org.omnifaces.security.jaspic.request.RequestCopier Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of omnifaces-security Show documentation
Show all versions of omnifaces-security Show documentation
Java EE, JSF and JASPIC integrated security
The newest version!
/*
* Copyright 2013 OmniFaces.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
package org.omnifaces.security.jaspic.request;
import static java.util.Arrays.copyOf;
import static java.util.Collections.emptyMap;
import static java.util.Collections.list;
import static org.omnifaces.security.jaspic.Utils.isEmpty;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
/**
* This class copies all "base data" from a given request. The goal is that this copied data can be used
* later to restore a request, by wrapping a new request and delegating methods that fetch data
* from that request to the copied data.
*
* @author Arjan Tijms
*
*/
public final class RequestCopier {
private RequestCopier() {}
public static RequestData copy(HttpServletRequest request) {
RequestData requestData = new RequestData();
requestData.setCookies(copyCookies(request.getCookies()));
requestData.setHeaders(copyHeaders(request));
requestData.setParameters(copyParameters(request.getParameterMap()));
requestData.setLocales(list(request.getLocales()));
requestData.setMethod(request.getMethod());
requestData.setRequestURL(request.getRequestURL().toString());
requestData.setQueryString(request.getQueryString());
return requestData;
}
private static Cookie[] copyCookies(Cookie[] cookies) {
if (isEmpty(cookies)) {
return cookies;
}
ArrayList copiedCookies = new ArrayList<>();
for (Cookie cookie : cookies) {
copiedCookies.add((Cookie)cookie.clone());
}
return copiedCookies.toArray(new Cookie[copiedCookies.size()]);
}
private static Map> copyHeaders(HttpServletRequest request) {
Map> copiedHeaders = new HashMap<>();
for (String headerName : list(request.getHeaderNames())) {
copiedHeaders.put(headerName, list(request.getHeaders(headerName)));
}
return copiedHeaders;
}
private static Map copyParameters(Map parameters) {
if (isEmptyMap(parameters)) {
return emptyMap();
}
Map copiedParameters = new HashMap<>();
for (Map.Entry parameter : parameters.entrySet()) {
copiedParameters.put(parameter.getKey(), copyOf(parameter.getValue(), parameter.getValue().length));
}
return copiedParameters;
}
private static boolean isEmptyMap(Map, ?> map) {
return map == null || map.isEmpty();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy