1 /* 2 * Copyright (c) 2002-2017, Mairie de Paris 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * 1. Redistributions of source code must retain the above copyright notice 10 * and the following disclaimer. 11 * 12 * 2. Redistributions in binary form must reproduce the above copyright notice 13 * and the following disclaimer in the documentation and/or other materials 14 * provided with the distribution. 15 * 16 * 3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its 17 * contributors may be used to endorse or promote products derived from 18 * this software without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE 24 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 * POSSIBILITY OF SUCH DAMAGE. 31 * 32 * License 1.0 33 */ 34 /* 35 * The Apache Software License, Version 1.1 36 * 37 * Copyright (c) 2003 The Apache Software Foundation. All rights 38 * reserved. 39 * 40 * Redistribution and use in source and binary forms, with or without 41 * modification, are permitted provided that the following conditions 42 * are met: 43 * 44 * 1. Redistributions of source code must retain the above copyright 45 * notice, this list of conditions and the following disclaimer. 46 * 47 * 2. Redistributions in binary form must reproduce the above copyright 48 * notice, this list of conditions and the following disclaimer in 49 * the documentation and/or other materials provided with the 50 * distribution. 51 * 52 * 3. The end-user documentation included with the redistribution, if 53 * any, must include the following acknowlegement: 54 * "This product includes software developed by the 55 * Apache Software Foundation (http://www.apache.org/)." 56 * Alternately, this acknowlegement may appear in the software itself, 57 * if and wherever such third-party acknowlegements normally appear. 58 * 59 * 4. The names "The Jakarta Project", "Pluto", and "Apache Software 60 * Foundation" must not be used to endorse or promote products derived 61 * from this software without prior written permission. For written 62 * permission, please contact apache@apache.org. 63 * 64 * 5. Products derived from this software may not be called "Apache" 65 * nor may "Apache" appear in their names without prior written 66 * permission of the Apache Group. 67 * 68 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED 69 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 70 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 71 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR 72 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 73 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 74 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 75 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 76 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 77 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 78 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 79 * SUCH DAMAGE. 80 * ==================================================================== 81 * 82 * This software consists of voluntary contributions made by many 83 * individuals on behalf of the Apache Software Foundation. For more 84 * information on the Apache Software Foundation, please see 85 * <http://www.apache.org/>. 86 */ 87 package fr.paris.lutece.plugins.jsr168.pluto.core; 88 89 import fr.paris.lutece.plugins.jsr168.pluto.LutecePlutoConstant; 90 91 import javax.servlet.ServletConfig; 92 import javax.servlet.http.HttpServletRequest; 93 import javax.servlet.http.HttpServletResponse; 94 95 96 /** 97 * Stock la reference de l'ensemble des ressources necessaires aux 98 * conteneur de portlets. 99 * 100 * Un objet de type PortalEnvironment doit être initialisé et placé en 101 * attribut dans la requête HTTP avant tout appel au conteneur de portlet. 102 * Pour placer l'objet en requête appeler la méthode {@link #initPortalEnvironment()}. 103 * 104 * La méthode statique {@link #getPortalEnvironment(HttpServletRequest)} permet 105 * d'obtenir la reference de l'environnement à partir de la requ�te HTTP. 106 */ 107 public class PortalEnvironment 108 { 109 private final String _strPortletID; 110 private final ServletConfig _config; 111 private final HttpServletRequest _request; 112 private final HttpServletResponse _response; 113 114 /** 115 * Initialize the environment for portlet resolution 116 * 117 * @param config Current <code>ServletConfig</code> 118 * @param request Current <code>HttpServletRequest</code> 119 * @param response Current <code>HttpServletResponse</code> 120 * @param strPortletID Current portlet ID 121 */ 122 public PortalEnvironment( ServletConfig config, HttpServletRequest request, HttpServletResponse response, 123 String strPortletID ) 124 { 125 _strPortletID = strPortletID; 126 _config = config; 127 _request = request; 128 _response = response; 129 } 130 131 /** 132 * Return current <code>ServletConfig</code> 133 * 134 * @return current <code>ServletConfig</code> 135 */ 136 public ServletConfig getConfig( ) 137 { 138 return _config; 139 } 140 141 /** 142 * Return current <code>HttpServletRequest</code> 143 * 144 * @return current <code>HttpServletRequest</code> 145 */ 146 public HttpServletRequest getRequest( ) 147 { 148 return _request; 149 } 150 151 /** 152 * Return current <code>HttpServletResponse</code> 153 * 154 * @return current <code>HttpServletResponse</code> 155 */ 156 public HttpServletResponse getResponse( ) 157 { 158 return _response; 159 } 160 161 /** 162 * Return current portlet id 163 * 164 * @return current portlet id 165 */ 166 public String getPortletID( ) 167 { 168 return _strPortletID; 169 } 170 171 /** 172 * Initialize the environment (put the environment into http request object) 173 */ 174 public void initPortalEnvironment( ) 175 { 176 _request.setAttribute( LutecePlutoConstant.PLUTO_PORTAL_REQUEST_PORTALENV, this ); 177 } 178 179 /** 180 * Extract portlet environment from current http request 181 * 182 * @param request current http request 183 * @return portlet environment extracted from current HTTP request 184 */ 185 public static PortalEnvironment getPortalEnvironment( HttpServletRequest request ) 186 { 187 return (PortalEnvironment) request.getAttribute( LutecePlutoConstant.PLUTO_PORTAL_REQUEST_PORTALENV ); 188 } 189 }