package com.planet_ink.coffee_web.http; import java.io.InputStream; import java.net.InetAddress; import java.util.List; import java.util.Map; import java.util.Set; import java.util.logging.Logger; import com.planet_ink.coffee_web.interfaces.HTTPRequest; import com.planet_ink.coffee_web.interfaces.SimpleServletManager; import com.planet_ink.coffee_web.interfaces.SimpleServletRequest; import com.planet_ink.coffee_web.interfaces.SimpleServletSession; import com.planet_ink.coffee_web.util.CWThread; import com.planet_ink.coffee_web.util.CWConfig; /* Copyright 2012-2019 Bo Zimmerman 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. */ /** * This class is instantiated as an means for servlets to get input from the request. * It is generally a wrapper for the internal class HTTPRequest, but with more * guards against some idiosyncracies of that class. * * See the interface for more comment * @author Bo Zimmerman * */ public class ServletRequest implements SimpleServletRequest { private final HTTPRequest request; private final CWConfig config; private final SimpleServletSession session; /** * Construct a servlet request input object * @param session the session assigned to the request * @param request the request being processed */ public ServletRequest(final SimpleServletSession session, final HTTPRequest request) { this.request=request; if(Thread.currentThread() instanceof CWThread) this.config=((CWThread)Thread.currentThread()).getConfig(); else this.config=null; this.session=session; } @Override public String getHost() { return request.getHost(); } @Override public String getFullRequest() { return request.getFullRequest(); } @Override public String getUrlPath() { return request.getUrlPath(); } @Override public String getUrlParameter(final String name) { return request.getUrlParameter(name); } @Override public Map<String,String> getUrlParametersCopy() { return request.getUrlParametersCopy(); } @Override public boolean isUrlParameter(final String name) { return request.isUrlParameter(name); } @Override public void addFakeUrlParameter(final String name, final String value) { request.addFakeUrlParameter(name, value); } @Override public String getHeader(final String name) { return request.getHeader(name); } @Override public InetAddress getClientAddress() { return request.getClientAddress(); } @Override public InputStream getBody() { return request.getBody(); } @Override public SimpleServletManager getServletManager() { return (config!=null)?config.getServletMan():null; } @Override public String getCookie(final String name) { return request.getCookie(name); } @Override public List<MultiPartData> getMultiParts() { return request.getMultiParts(); } @Override public Set<String> getUrlParameters() { return request.getUrlParameters(); } @Override public String getQueryString() { return request.getQueryString(); } @Override public void removeUrlParameter(final String name) { request.removeUrlParameter(name); } @Override public Set<String> getCookieNames() { return request.getCookieNames(); } /** * Returns the session object associated with this servlet request * @return the session object */ @Override public SimpleServletSession getSession() { return session; } @Override public double getSpecialEncodingAcceptability(final String type) { return request.getSpecialEncodingAcceptability(type); } @Override public int getClientPort() { return request.getClientPort(); } @Override public HTTPMethod getMethod() { return request.getMethod(); } @Override public String getFullHost() { return request.getFullHost(); } @Override public List<long[]> getRangeAZ() { return request.getRangeAZ(); } @Override public Logger getLogger() { return config.getLogger(); } @Override public Map<String,Object> getRequestObjects() { return request.getRequestObjects(); } @Override public float getHttpVer() { return request.getHttpVer(); } }