/*
* Copyright (C) 2014 Civilian Framework.
*
* Licensed under the Civilian License (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.civilian-framework.org/license.txt
*
* 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.civilian.request;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.Locale;
import java.util.Map;
import org.civilian.Application;
import org.civilian.Request;
import org.civilian.Resource;
import org.civilian.Response;
import org.civilian.content.ContentType;
import org.civilian.content.ContentTypeList;
import org.civilian.resource.Path;
import org.civilian.resource.PathParam;
import org.civilian.text.LocaleService;
import org.civilian.util.Check;
import org.civilian.util.ClassUtil;
/**
* RequestWrapper is a Request implementation which wraps another request.
* All methods except {@link #getRequest()} forward to the wrapped request.
*/
public class RequestWrapper implements Request
{
/**
* Creates a new RequestWrapper.
* @param request the wrapped request
*/
public RequestWrapper(Request request)
{
request_ = Check.notNull(request, "request");
}
/**
* Implements RequestProvider and returns this.
*/
@Override public Request getRequest()
{
return this;
}
@Override public Application getApplication()
{
return request_.getApplication();
}
@Override public Response getResponse()
{
return request_.getResponse();
}
@Override public void setResponse(Response response)
{
request_.setResponse(response);
}
@Override public String getMethod()
{
return request_.getMethod();
}
@Override public Path getPath()
{
return request_.getPath();
}
@Override public Path getRelativePath()
{
return request_.getRelativePath();
}
@Override public String getOriginalPath()
{
return request_.getOriginalPath();
}
@Override public Resource getResource()
{
return request_.getResource();
}
@Override public void setResource(Resource resource)
{
request_.setResource(resource);
}
@Override public Object getAttribute(String name)
{
return request_.getAttribute(name);
}
@Override public Iterator<String> getAttributeNames()
{
return request_.getAttributeNames();
}
@Override public void setAttribute(String name, Object value)
{
request_.setAttribute(name, value);
}
@Override public ContentTypeList getAcceptedContentTypes()
{
return request_.getAcceptedContentTypes();
}
@Override public Locale getAcceptedLocale()
{
return request_.getAcceptedLocale();
}
@Override public Iterator<Locale> getAcceptedLocales()
{
return request_.getAcceptedLocales();
}
@Override public CookieList getCookies()
{
return request_.getCookies();
}
@Override public String getParameter(String name)
{
return request_.getParameter(name);
}
@Override public String[] getParameters(String name)
{
return request_.getParameters(name);
}
@Override public Iterator<String> getParameterNames()
{
return request_.getParameterNames();
}
@Override public Map<String, String[]> getParameterMap()
{
return request_.getParameterMap();
}
@Override public <T> void setPathParam(PathParam<T> format, T value)
{
request_.setPathParam(format, value);
}
@Override public void setPathParams(Map<PathParam<?>,Object> pathParams)
{
request_.setPathParams(pathParams);
}
@Override public <T> T getPathParam(PathParam<T> format)
{
return request_.getPathParam(format);
}
@Override public Iterator<PathParam<?>> getPathParams()
{
return request_.getPathParams();
}
@Override public String getMatrixParam(String name)
{
return request_.getMatrixParam(name);
}
@Override public String[] getMatrixParams(String name)
{
return request_.getMatrixParams(name);
}
@Override public Iterator<String> getMatrixParamNames()
{
return request_.getMatrixParamNames();
}
@Override public boolean hasUploads()
{
return request_.hasUploads();
}
@Override public Upload getUpload(String name)
{
return request_.getUpload(name);
}
@Override public Upload[] getUploads(String name)
{
return request_.getUploads(name);
}
@Override public Exception getUploadError()
{
return request_.getUploadError();
}
@Override public Iterator<String> getUploadNames()
{
return request_.getUploadNames();
}
@Override public LocaleService getLocaleService()
{
return request_.getLocaleService();
}
@Override public void setLocaleService(LocaleService service)
{
request_.setLocaleService(service);
}
@Override public ContentAccess getContentAccess()
{
return request_.getContentAccess();
}
@Override public String getContentEncoding()
{
return request_.getContentEncoding();
}
@Override public long getContentLength()
{
return request_.getContentLength();
}
@Override public ContentType getContentType()
{
return request_.getContentType();
}
@Override public void setContentType(ContentType contenType)
{
request_.setContentType(contenType);
}
@Override public InputStream getContentStream() throws IOException
{
return request_.getContentStream();
}
@Override public Reader getContentReader() throws IOException
{
return request_.getContentReader();
}
@Override public void setContentEncoding(String encoding) throws UnsupportedEncodingException
{
request_.setContentEncoding(encoding);
}
@Override public void addInterceptor(RequestStreamInterceptor interceptor)
{
request_.addInterceptor(interceptor);
}
@Override public void addInterceptor(RequestReaderInterceptor interceptor)
{
request_.addInterceptor(interceptor);
}
@Override public AsyncContext getAsyncContext()
{
return request_.getAsyncContext();
}
@Override public boolean isAsyncStarted()
{
return request_.isAsyncStarted();
}
@Override public AsyncContext startAsync()
{
return request_.startAsync();
}
@Override public boolean isAsyncSupported()
{
return request_.isAsyncSupported();
}
@Override public RequestHeaders getHeaders()
{
return request_.getHeaders();
}
@Override public RequestSecurity getSecurity()
{
return request_.getSecurity();
}
@Override public ServerInfo getServerInfo()
{
return request_.getServerInfo();
}
@Override public RemoteInfo getRemoteInfo()
{
return request_.getRemoteInfo();
}
@Override public LocalInfo getLocalInfo()
{
return request_.getLocalInfo();
}
@Override public Session getSession(boolean create)
{
return request_.getSession(create);
}
@Override public <T> T unwrap(Class<T> implClass)
{
T unwrapped = ClassUtil.unwrap(request_, implClass);
if (unwrapped != null)
return unwrapped;
else
return request_.unwrap(implClass);
}
protected Request request_;
}