/** * Copyright 2006 by Know-Center, Graz, Austria * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a * joint initiative of the Federal Chancellery Austria and Graz University of * Technology. * * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by * the European Commission - subsequent versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * http://www.osor.eu/eupl/ * * Unless required by applicable law or agreed to in writing, software * distributed under the Licence is distributed on an "AS IS" basis, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the Licence for the specific language governing permissions and * limitations under the Licence. * * This product combines work with different licenses. See the "NOTICE" text * file for details on the various modules and licenses. * The "NOTICE" text file is part of the distribution. Any derivative works * that you distribute must include a readable copy of the "NOTICE" text file. */ package at.gv.egiz.pdfas.web.helper; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import at.knowcenter.wag.egov.egiz.exceptions.SettingsException; /** * @author tknall */ public final class WebUtils { private WebUtils() { } /** * The log. */ private final static Log LOG = LogFactory.getLog(WebUtils.class); /** * Unlike {@link HttpServletResponse#encodeURL(String)} that adds only a * {@code JSESSIONID} entry to the given url if needed, this method always * adds the session id (except if already present within the url. * * @param url * The given url. * @param session * The {@link HttpSession}. * @return The given url plus a session id. */ public static String addJSessionID(String url, HttpSession session) { if (url == null) { return null; } if (!StringUtils.containsIgnoreCase(url, ";jsessionid=")) { url = url + ";jsessionid=" + session.getId(); LOG.debug("Adding jsessionid " + session.getId()); } else { LOG.debug("No need to add a jsessionid."); } LOG.debug("Returning url " + url); return url; } /** * Unlike {@link HttpServletResponse#encodeURL(String)} that adds only a * {@code JSESSIONID} entry to the given url if needed, this method always * adds the session id (except if already present within the url. * * @param url * The given url. * @param request * The {@link HttpServletRequest}. * @return The given url plus a session id. */ public static String addJSessionID(String url, HttpServletRequest request) { return addJSessionID(url, request.getSession()); } /** * Either dynamically creates locref content url or uses a url provides by the pdf-as * configuration (key {@code retrieve_signature_data_url_override}). * @param request The {@link HttpServletRequest}. * @param response The {@link HttpServletResponse}. * @return The retrieve signature data url. */ public static String buildRetrieveSignatureDataURL(HttpServletRequest request, HttpServletResponse response) { String override = null; LOG.debug("Building retrieve signature data url."); try { override = WebSettingsReader.getInstance().getRetrieveSignatureDataURLOverride(); } catch (SettingsException e) { LOG.info(e); } String result; if (override == null) { result = WebUtils.addJSessionID(LocalRequestHelper.getLocalContextAddress(request, response) + "/RetrieveSignatureData", request); } else { LOG.debug("Override url found: " + override); result = WebUtils.addJSessionID(override, request); } LOG.debug("RetrieveSignatureDataURL = " + result); return result; } }