001 /* 002 Copyright (C) 2002 Laurent Martelli <laurent@aopsys.com> 003 004 This program is free software; you can redistribute it and/or modify 005 it under the terms of the GNU Lesser General Public License as 006 published by the Free Software Foundation; either version 2 of the 007 License, or (at your option) any later version. 008 009 This program is distributed in the hope that it will be useful, 010 but WITHOUT ANY WARRANTY; without even the implied warranty of 011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 012 GNU Lesser General Public License for more details. 013 014 You should have received a copy of the GNU Lesser General Public License 015 along with this program; if not, write to the Free Software 016 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ 017 018 package org.objectweb.jac.aspects.gui.web; 019 020 import java.util.Iterator; 021 import java.util.Map; 022 import javax.servlet.http.HttpServletRequest; 023 import org.mortbay.util.MultiMap; 024 025 /** 026 * This class represents a multi-part HttpRequest. 027 */ 028 public class MultiMapJacRequest extends AbstractJacRequest implements JacRequest { 029 MultiMap parameters; 030 031 /** 032 * Parameters are initialized from the given map. 033 */ 034 public MultiMapJacRequest(MultiMap map, HttpServletRequest servletRequest) { 035 super(servletRequest); 036 this.parameters = map; 037 readParamsFromRequest(servletRequest); 038 } 039 040 public MultiMapJacRequest(MultiMap map, HttpServletRequest servletRequest, 041 JacRequest parent) { 042 this(map,servletRequest); 043 this.parent = parent; 044 } 045 046 /** 047 * Parameters are copied from the HttpServletRequest. 048 */ 049 public MultiMapJacRequest(HttpServletRequest servletRequest) { 050 super(servletRequest); 051 parameters = new MultiMap(); 052 readParamsFromRequest(servletRequest); 053 } 054 055 protected void readParamsFromRequest(HttpServletRequest servletRequest) { 056 // We must copy the parameters because HttpServletRequest 057 // objects are recycled by Jetty 058 Map servletParameters = servletRequest.getParameterMap(); 059 Iterator it = servletParameters.keySet().iterator(); 060 while(it.hasNext()) { 061 String name = (String)it.next(); 062 String[] values = (String[])servletParameters.get(name); 063 parameters.putValues(name,values); 064 } 065 } 066 067 public boolean contains(String name) { 068 if (parameters.containsKey(name)) 069 return true; 070 else if (parent!=null) 071 return parent.contains(name); 072 else 073 return false; 074 } 075 076 public Object getParameter(String name) { 077 if (parameters.containsKey(name)) 078 return parameters.getString(name); 079 else if (parent!=null) 080 return parent.getParameter(name); 081 else 082 return null; 083 } 084 085 public Object[] getParameters(String name) { 086 if (parameters.containsKey(name)) 087 return parameters.getValues(name).toArray(new String [0]); 088 else if (parent!=null) 089 return parent.getParameters(name); 090 else 091 return null; 092 } 093 094 public String toString() { 095 return parameters.toString(); 096 } 097 098 }