/* * Copyright 2004-2012 the Seasar Foundation and the Others. * * 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.seasar.mayaa.impl.cycle.web; import java.io.BufferedReader; import java.util.ArrayList; import java.util.Enumeration; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; import javax.servlet.RequestDispatcher; import javax.servlet.ServletInputStream; import javax.servlet.ServletRequest; import org.seasar.mayaa.impl.util.StringUtil; import org.seasar.mayaa.impl.util.collection.IteratorEnumeration; /** * AutoPageBuilderで利用するServletRequestのモック。 * * @author Masataka Kurihara (Gluegent, Inc.) */ public class MockServletRequest implements ServletRequest { private Map _parameters = new HashMap(); private Map _attributes = new HashMap(); private List _locale; public Map getParameterMap() { return _parameters; } public Enumeration getParameterNames() { return IteratorEnumeration.getInstance(_parameters.keySet().iterator()); } public String[] getParameterValues(String name) { if(StringUtil.isEmpty(name)) { throw new IllegalArgumentException(); } return (String[])_parameters.get(name); } public String getParameter(String name) { if(StringUtil.isEmpty(name)) { throw new IllegalArgumentException(); } String values[] = getParameterValues(name); if(values != null && values.length > 0) { return values[0]; } return null; } public void addParameter(String name, String value) { if(StringUtil.isEmpty(name) || value == null) { throw new IllegalArgumentException(); } String[] values = (String[])_parameters.get(name); if(values == null) { _parameters.put(name, new String[] { value }); } else { int len = values.length; String[] newValues = new String[len + 1]; System.arraycopy(values, 0, newValues, 0, len); newValues[len] = value; _parameters.put(name, newValues); } } public Enumeration getAttributeNames() { return IteratorEnumeration.getInstance(_attributes.keySet().iterator()); } public Object getAttribute(String name) { return _attributes.get(name); } public void setAttribute(String name, Object attribute) { _attributes.put(name, attribute); } public void removeAttribute(String name) { _attributes.remove(name); } public String getCharacterEncoding() { return null; } public int getContentLength() { return 0; } public String getContentType() { return null; } public void setCharacterEncoding(String encoding) { // do nothing. } public Locale getLocale() { if(_locale == null) { throw new IllegalStateException(); } return (Locale)_locale.get(0); } public void addLocale(Locale locale) { if(locale == null) { throw new IllegalArgumentException(); } if(_locale == null) { _locale = new ArrayList(); } _locale.add(locale); } public Enumeration getLocales() { return IteratorEnumeration.getInstance(_locale.iterator()); } public ServletInputStream getInputStream() { return null; } public BufferedReader getReader() { return null; } public String getRealPath(String arg0) { throw new UnsupportedOperationException(); } public RequestDispatcher getRequestDispatcher(String uri) { throw new UnsupportedOperationException(); } public String getRemoteAddr() { return "127.0.0.1"; } public String getRemoteHost() { return "localhost"; } public String getScheme() { return "http"; } public String getProtocol() { return "GET"; } public String getServerName() { return "localhost"; } public int getServerPort() { return 8080; } public boolean isSecure() { return false; } // since 2.4 -------------------------------------------------- public String getLocalAddr() { return null; } public String getLocalName() { return null; } public int getLocalPort() { return 0; } public int getRemotePort() { return 0; } }