HttpServletTransportRequestContext.java
- /*
- * GovWay - A customizable API Gateway
- * https://govway.org
- *
- * Copyright (c) 2005-2025 Link.it srl (https://link.it).
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3, as published by
- * the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- package org.openspcoop2.utils.transport.http;
- import java.net.URLDecoder;
- import java.util.ArrayList;
- import java.util.Enumeration;
- import java.util.HashMap;
- import java.util.List;
- import javax.servlet.http.Cookie;
- import javax.servlet.http.HttpServletRequest;
- import org.openspcoop2.utils.UtilsException;
- import org.openspcoop2.utils.resources.Charset;
- import org.openspcoop2.utils.transport.Credential;
- import org.slf4j.Logger;
- /**
- * URL Protocol Context
- *
- * @author Poli Andrea (apoli@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class HttpServletTransportRequestContext extends org.openspcoop2.utils.transport.TransportRequestContext implements java.io.Serializable {
- // Senno se l'oggetto non e' serializzabile
- private transient HttpServletRequest httpServletRequest;
-
- public HttpServletRequest getHttpServletRequest() {
- return this.httpServletRequest;
- }
- public void updateHttpServletRequest(HttpServletRequest httpServletRequest) {
- this.httpServletRequest = httpServletRequest;
- }
-
- /**
- *
- */
- private static final long serialVersionUID = 1L;
-
- public HttpServletTransportRequestContext() throws UtilsException{
- super();
- }
- public HttpServletTransportRequestContext(Logger log) throws UtilsException{
- super(log);
- }
- public HttpServletTransportRequestContext(HttpServletRequest req,Logger logCore) throws UtilsException{
- this(req,logCore,false);
- }
- public HttpServletTransportRequestContext(HttpServletRequest req,Logger logCore, boolean debug) throws UtilsException{
- super(logCore);
-
- try {
-
- this.httpServletRequest = req;
-
- // Properties FORM Based
- this.parameters = new HashMap<>();
- java.util.Enumeration<?> en = req.getParameterNames();
- while(en.hasMoreElements()){
- String nomeProperty = (String)en.nextElement();
- String [] s = req.getParameterValues(nomeProperty);
- List<String> values = new ArrayList<>();
- if(s!=null && s.length>0) {
- for (int i = 0; i < s.length; i++) {
- String value = s[i];
- values.add(value);
- //logCore.info("Parameter ["+nomeProperty+"] valore-"+i+" ["+value+"]");
- }
- }
- else {
- //logCore.info("Parameter ["+nomeProperty+"] valore ["+req.getParameter(nomeProperty)+"]");
- values.add(req.getParameter(nomeProperty));
- }
- this.parameters.put(nomeProperty,values);
- }
- // Hedear Trasporto
- this.headers = new HashMap<>();
- java.util.Enumeration<?> enTrasporto = req.getHeaderNames();
- while(enTrasporto.hasMoreElements()){
- String nomeHeader = (String)enTrasporto.nextElement();
- Enumeration<String> enValues = req.getHeaders(nomeHeader);
- List<String> values = new ArrayList<>();
- if(enValues!=null) {
- @SuppressWarnings("unused")
- int i = 0;
- while (enValues.hasMoreElements()) {
- String value = (String) enValues.nextElement();
- values.add(value);
- //logCore.info("Header ["+nomeHeader+"] valore-"+i+" ["+value+"]");
- i++;
- }
- }
- if(values.isEmpty()) {
- //logCore.info("Header ["+nomeHeader+"] valore ["+req.getHeader(nomeHeader)+"]");
- values.add(req.getHeader(nomeHeader));
- }
- this.headers.put(nomeHeader,values);
- }
-
- // Cookies
- this.cookiesValue = new HashMap<>();
- this.cookiesMaxAge = new HashMap<String, Integer>();
- Cookie [] cookies = req.getCookies();
- if(cookies!=null && cookies.length>0) {
- for (Cookie cookie : cookies) {
- String cookieName = cookie.getName();
- String value = URLDecoder.decode(cookie.getValue(), Charset.UTF_8.getValue());
- this.cookiesValue.put(cookieName,value);
- if(cookie.getMaxAge()>0) {
- this.cookiesMaxAge.put(cookieName, cookie.getMaxAge());
- }
- }
- }
-
- this.webContext = req.getContextPath();
- this.requestURI = req.getRequestURI();
- this.requestType = req.getMethod();
-
- this.credential = new HttpServletCredential(req,logCore,debug);
-
- this.source = buildSource(req, this.credential);
-
- }catch(Exception e){
- throw new UtilsException(e.getMessage(),e);
- }
- }
-
- public static String buildSource(HttpServletRequest req, Credential credenziali){
- String protocollo = "http";
- if(credenziali.getSubject()!=null)
- protocollo = "https";
- String ip = req.getRemoteAddr();
- String port = ""+req.getRemotePort();
- String user = "";
- if(credenziali.getUsername()!=null || credenziali.getSubject()!=null){
- user = HttpConstants.SEPARATOR_SOURCE;
- if(credenziali.getSubject()!=null)
- user=user+credenziali.getSubject();
- else
- user=user+credenziali.getUsername();
- }
- return protocollo+HttpConstants.SEPARATOR_SOURCE+
- ip+HttpConstants.SEPARATOR_SOURCE+port+user;
- }
-
- @Override
- public String toString() {
- return this.toString("");
- }
- @Override
- public String toString(String prefix) {
- StringBuilder sb = new StringBuilder(super.toString(prefix));
- if(this.httpServletRequest!=null) {
- sb.append("\n").append(prefix).append("httpServletRequest: disponibile");
- if(this.httpServletRequest.getRequestURI()!=null) {
- sb.append("\n").append(prefix).append("httpServletRequest.getRequestURI: ").append(this.httpServletRequest.getRequestURI());
- }
- if(this.httpServletRequest.getRequestURL()!=null) {
- sb.append("\n").append(prefix).append("httpServletRequest.getRequestURL: ").append(this.httpServletRequest.getRequestURL());
- }
- if(this.httpServletRequest.getQueryString()!=null) {
- sb.append("\n").append(prefix).append("httpServletRequest.getQueryString: ").append(this.httpServletRequest.getQueryString());
- }
- }
- return sb.toString();
- }
- }