Mercurial Hosting > luan
diff src/org/eclipse/jetty/server/Request.java @ 997:7d28be82ab75
simplify Request
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Tue, 18 Oct 2016 22:43:17 -0600 |
parents | 4e9d373bf6e9 |
children | bf176925e00f |
line wrap: on
line diff
--- a/src/org/eclipse/jetty/server/Request.java Tue Oct 18 21:22:53 2016 -0600 +++ b/src/org/eclipse/jetty/server/Request.java Tue Oct 18 22:43:17 2016 -0600 @@ -122,24 +122,20 @@ */ public final class Request implements HttpServletRequest { - public static final String __MULTIPART_CONFIG_ELEMENT = "org.eclipse.multipartConfig"; - public static final String __MULTIPART_INPUT_STREAM = "org.eclipse.multiPartInputStream"; - public static final String __MULTIPART_CONTEXT = "org.eclipse.multiPartContext"; private static final Logger LOG = LoggerFactory.getLogger(Request.class); - private static final String __ASYNC_FWD = "org.eclipse.asyncfwd"; private static final Collection __defaultLocale = Collections.singleton(Locale.getDefault()); private static final int __NONE = 0, _STREAM = 1, __READER = 2; private volatile Attributes _attributes; private MultiMap<String> _baseParameters; private String _characterEncoding; - protected AbstractHttpConnection _connection; + protected final AbstractHttpConnection _connection; public ContextHandler _contextHandler = null; private String _contextPath; private CookieCutter _cookies; private boolean _cookiesExtracted = false; - private EndPoint _endp; + private final EndPoint _endp; private boolean _handled = false; private int _inputState = __NONE; private String _method; @@ -151,34 +147,24 @@ private String _queryString; private BufferedReader _reader; private String _readerEncoding; - private String _remoteAddr; - private String _remoteHost; private String _requestURI; private String _scheme = URIUtil.HTTP; private String _serverName; - private String _servletPath; private long _timeStamp; - private long _dispatchTime; - private Buffer _timeStampBuffer; private HttpURI _uri; - /* ------------------------------------------------------------ */ - public Request() - { - } - - /* ------------------------------------------------------------ */ public Request(AbstractHttpConnection connection) { - setConnection(connection); + _connection = connection; + _endp = connection.getEndPoint(); } /* ------------------------------------------------------------ */ /** * Extract Parameters from query string and/or form _content. */ - public void extractParameters() + private void extractParameters() { if (_baseParameters == null) _baseParameters = new MultiMap(16); @@ -264,28 +250,6 @@ _parameters.add(name,LazyList.get(values,i)); } } - - if (content_type != null && content_type.length()>0 && content_type.startsWith("multipart/form-data") && getAttribute(__MULTIPART_CONFIG_ELEMENT)!=null) - { - try - { - getParts(); - } - catch (IOException e) - { - if (LOG.isDebugEnabled()) - LOG.warn("",e); - else - LOG.warn(e.toString()); - } - catch (ServletException e) - { - if (LOG.isDebugEnabled()) - LOG.warn("",e); - else - LOG.warn(e.toString()); - } - } } finally { @@ -295,29 +259,19 @@ } } - /* ------------------------------------------------------------ */ + @Override public AsyncContext getAsyncContext() { throw new UnsupportedOperationException(); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#getAttribute(java.lang.String) - */ + @Override public Object getAttribute(String name) { - if ("org.eclipse.jetty.io.EndPoint.maxIdleTime".equalsIgnoreCase(name)) - return new Long(getConnection().getEndPoint().getMaxIdleTime()); - - Object attr = (_attributes == null)?null:_attributes.getAttribute(name); - return attr; + return (_attributes == null)?null:_attributes.getAttribute(name); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#getAttributeNames() - */ + @Override public Enumeration getAttributeNames() { if (_attributes == null) @@ -326,82 +280,37 @@ return AttributesMap.getAttributeNamesCopy(_attributes); } - /* ------------------------------------------------------------ */ - /* - */ - public Attributes getAttributes() - { - if (_attributes == null) - _attributes = new AttributesMap(); - return _attributes; - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.http.HttpServletRequest#getAuthType() - */ + @Override public String getAuthType() { return null; } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#getCharacterEncoding() - */ + @Override public String getCharacterEncoding() { return _characterEncoding; } - /* ------------------------------------------------------------ */ - /** - * @return Returns the connection. - */ - public AbstractHttpConnection getConnection() - { - return _connection; - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#getContentLength() - */ + @Override public int getContentLength() { return (int)_connection._requestFields.getLongField(HttpHeaders.CONTENT_LENGTH_BUFFER); } - public long getContentRead() - { - if (_connection == null) - return -1; - - return _connection._parser.getContentRead(); - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#getContentType() - */ + @Override public String getContentType() { return _connection._requestFields.getStringField(HttpHeaders.CONTENT_TYPE_BUFFER); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.http.HttpServletRequest#getContextPath() - */ + @Override public String getContextPath() { return _contextPath; } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.http.HttpServletRequest#getCookies() - */ + @Override public Cookie[] getCookies() { if (_cookiesExtracted) @@ -427,10 +336,7 @@ return _cookies == null?null:_cookies.getCookies(); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.http.HttpServletRequest#getDateHeader(java.lang.String) - */ + @Override public long getDateHeader(String name) { return _connection._requestFields.getDateField(name); @@ -442,28 +348,19 @@ throw new UnsupportedOperationException(); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.http.HttpServletRequest#getHeader(java.lang.String) - */ + @Override public String getHeader(String name) { return _connection._requestFields.getStringField(name); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.http.HttpServletRequest#getHeaderNames() - */ + @Override public Enumeration getHeaderNames() { return _connection._requestFields.getFieldNames(); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.http.HttpServletRequest#getHeaders(java.lang.String) - */ + @Override public Enumeration getHeaders(String name) { Enumeration e = _connection._requestFields.getValues(name); @@ -472,19 +369,7 @@ return e; } - /* ------------------------------------------------------------ */ - /** - * @return Returns the inputState. - */ - public int getInputState() - { - return _inputState; - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#getInputStream() - */ + @Override public ServletInputStream getInputStream() throws IOException { if (_inputState != __NONE && _inputState != _STREAM) @@ -493,28 +378,19 @@ return _connection.getInputStream(); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.http.HttpServletRequest#getIntHeader(java.lang.String) - */ + @Override public int getIntHeader(String name) { return (int)_connection._requestFields.getLongField(name); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#getLocalAddr() - */ + @Override public String getLocalAddr() { - return _endp == null?null:_endp.getLocalAddr(); + return _endp.getLocalAddr(); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#getLocale() - */ + @Override public Locale getLocale() { Enumeration enm = _connection._requestFields.getValues( "Accept-Language", ", \t" ); @@ -547,10 +423,7 @@ return Locale.getDefault(); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#getLocales() - */ + @Override public Enumeration getLocales() { @@ -591,43 +464,28 @@ return Collections.enumeration(LazyList.getList(langs)); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#getLocalName() - */ + @Override public String getLocalName() { - if (_endp == null) - return null; - String local = _endp.getLocalAddr(); if (local != null && local.indexOf(':') >= 0) local = "[" + local + "]"; return local; } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#getLocalPort() - */ + @Override public int getLocalPort() { - return _endp == null?0:_endp.getLocalPort(); + return _endp.getLocalPort(); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.http.HttpServletRequest#getMethod() - */ + @Override public String getMethod() { return _method; } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#getParameter(java.lang.String) - */ + @Override public String getParameter(String name) { if (!_paramsExtracted) @@ -635,10 +493,7 @@ return (String)_parameters.getValue(name,0); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#getParameterMap() - */ + @Override public Map getParameterMap() { if (!_paramsExtracted) @@ -647,10 +502,7 @@ return Collections.unmodifiableMap(_parameters.toStringArrayMap()); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#getParameterNames() - */ + @Override public Enumeration getParameterNames() { if (!_paramsExtracted) @@ -658,19 +510,7 @@ return Collections.enumeration(_parameters.keySet()); } - /* ------------------------------------------------------------ */ - /** - * @return Returns the parameters. - */ - public MultiMap<String> getParameters() - { - return _parameters; - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#getParameterValues(java.lang.String) - */ + @Override public String[] getParameterValues(String name) { if (!_paramsExtracted) @@ -681,10 +521,7 @@ return vals.toArray(new String[vals.size()]); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.http.HttpServletRequest#getPathInfo() - */ + @Override public String getPathInfo() { return _pathInfo; @@ -696,19 +533,13 @@ return null; } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#getProtocol() - */ + @Override public String getProtocol() { return _protocol; } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.http.HttpServletRequest#getQueryString() - */ + @Override public String getQueryString() { if (_queryString == null && _uri != null) @@ -718,10 +549,7 @@ return _queryString; } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#getReader() - */ + @Override public BufferedReader getReader() throws IOException { if (_inputState != __NONE && _inputState != __READER) @@ -757,45 +585,28 @@ return null; } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#getRemoteAddr() - */ + @Override public String getRemoteAddr() { - if (_remoteAddr != null) - return _remoteAddr; - return _endp == null?null:_endp.getRemoteAddr(); + return _endp.getRemoteAddr(); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#getRemoteHost() - */ + @Override public String getRemoteHost() { return getRemoteAddr(); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#getRemotePort() - */ + @Override public int getRemotePort() { - return _endp == null?0:_endp.getRemotePort(); + return _endp.getRemotePort(); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.http.HttpServletRequest#getRemoteUser() - */ + @Override public String getRemoteUser() { - Principal p = getUserPrincipal(); - if (p == null) - return null; - return p.getName(); + return null; } @Override @@ -804,19 +615,13 @@ throw new UnsupportedOperationException(); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.http.HttpServletRequest#getRequestedSessionId() - */ + @Override public String getRequestedSessionId() { throw new UnsupportedOperationException(); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.http.HttpServletRequest#getRequestURI() - */ + @Override public String getRequestURI() { if (_requestURI == null && _uri != null) @@ -824,10 +629,7 @@ return _requestURI; } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.http.HttpServletRequest#getRequestURL() - */ + @Override public StringBuffer getRequestURL() { final StringBuffer url = new StringBuffer(48); @@ -851,12 +653,6 @@ } /* ------------------------------------------------------------ */ - public Response getResponse() - { - return _connection._response; - } - - /* ------------------------------------------------------------ */ /** * Reconstructs the URL the client used to make the request. The returned URL contains a protocol, server name, port number, and, but it does not include a * path. @@ -885,19 +681,13 @@ return url; } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#getScheme() - */ + @Override public String getScheme() { return _scheme; } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#getServerName() - */ + @Override public String getServerName() { // Return already determined host @@ -935,8 +725,7 @@ { try { - if (_connection != null) - _connection._generator.sendError(HttpStatus.BAD_REQUEST_400,"Bad Host header",null,true); + _connection._generator.sendError(HttpStatus.BAD_REQUEST_400,"Bad Host header",null,true); } catch (IOException e1) { @@ -956,13 +745,10 @@ } // Return host from connection - if (_connection != null) - { - _serverName = getLocalName(); - _port = getLocalPort(); - if (_serverName != null && !StringUtil.ALL_INTERFACES.equals(_serverName)) - return _serverName; - } + _serverName = getLocalName(); + _port = getLocalPort(); + if (_serverName != null && !StringUtil.ALL_INTERFACES.equals(_serverName)) + return _serverName; // Return the local host try @@ -976,10 +762,7 @@ return _serverName; } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#getServerPort() - */ + @Override public int getServerPort() { if (_port <= 0) @@ -992,7 +775,7 @@ if (_serverName != null && _uri != null) _port = _uri.getPort(); else - _port = _endp == null?0:_endp.getLocalPort(); + _port = _endp.getLocalPort(); } } @@ -1011,36 +794,19 @@ throw new UnsupportedOperationException(); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.http.HttpServletRequest#getServletPath() - */ + @Override public String getServletPath() { - if (_servletPath == null) - _servletPath = ""; - return _servletPath; + throw new UnsupportedOperationException(); } - /* ------------------------------------------------------------ */ - public ServletResponse getServletResponse() + @Override + public HttpSession getSession() { - return _connection.getResponse(); + throw new UnsupportedOperationException(); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.http.HttpServletRequest#getSession() - */ - public HttpSession getSession() - { - return getSession(true); - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.http.HttpServletRequest#getSession(boolean) - */ + @Override public HttpSession getSession(boolean create) { throw new UnsupportedOperationException(); @@ -1059,19 +825,6 @@ /* ------------------------------------------------------------ */ /** - * Get Request TimeStamp - * - * @return The time that the request was received. - */ - public Buffer getTimeStampBuffer() - { - if (_timeStampBuffer == null && _timeStamp > 0) - _timeStampBuffer = formatBuffer(_timeStamp); - return _timeStampBuffer; - } - - /* ------------------------------------------------------------ */ - /** * @return Returns the uri. */ public HttpURI getUri() @@ -1079,103 +832,65 @@ return _uri; } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.http.HttpServletRequest#getUserPrincipal() - */ + @Override public Principal getUserPrincipal() { return null; } - /* ------------------------------------------------------------ */ - /** - * Get timestamp of the request dispatch - * - * @return timestamp - */ - public long getDispatchTime() - { - return _dispatchTime; - } - - /* ------------------------------------------------------------ */ public boolean isHandled() { return _handled; } + @Override public boolean isAsyncStarted() { return false; } - + @Override public boolean isAsyncSupported() { return false; } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdFromCookie() - */ + @Override public boolean isRequestedSessionIdFromCookie() { throw new UnsupportedOperationException(); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdFromUrl() - */ + @Override public boolean isRequestedSessionIdFromUrl() { throw new UnsupportedOperationException(); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdFromURL() - */ + @Override public boolean isRequestedSessionIdFromURL() { throw new UnsupportedOperationException(); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdValid() - */ + @Override public boolean isRequestedSessionIdValid() { throw new UnsupportedOperationException(); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#isSecure() - */ + @Override public boolean isSecure() { return _connection.getConnector().isConfidential(); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.http.HttpServletRequest#isUserInRole(java.lang.String) - */ + @Override public boolean isUserInRole(String role) { return false; } - /* ------------------------------------------------------------ */ - public HttpSession recoverNewSession(Object key) - { - throw new UnsupportedOperationException(); - } - protected void recycle() { if (_inputState == __READER) @@ -1211,9 +926,7 @@ _queryString = null; _requestURI = null; _scheme = URIUtil.HTTP; - _servletPath = null; _timeStamp = 0; - _timeStampBuffer = null; _uri = null; if (_baseParameters != null) _baseParameters.clear(); @@ -1222,10 +935,7 @@ _inputState = __NONE; } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#removeAttribute(java.lang.String) - */ + @Override public void removeAttribute(String name) { if (_attributes != null) @@ -1241,6 +951,7 @@ * * @see javax.servlet.ServletRequest#setAttribute(java.lang.String, java.lang.Object) */ + @Override public void setAttribute(String name, Object value) { if (_attributes == null) @@ -1248,10 +959,7 @@ _attributes.setAttribute(name,value); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#setCharacterEncoding(java.lang.String) - */ + @Override public void setCharacterEncoding(String encoding) throws UnsupportedEncodingException { if (_inputState != __NONE) @@ -1265,358 +973,118 @@ "".getBytes(encoding); } - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#setCharacterEncoding(java.lang.String) - */ public void setCharacterEncodingUnchecked(String encoding) { _characterEncoding = encoding; } - /* ------------------------------------------------------------ */ - // final so we can safely call this from constructor - protected final void setConnection(AbstractHttpConnection connection) - { - _connection = connection; - _endp = connection.getEndPoint(); - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletRequest#getContentType() - */ - public void setContentType(String contentType) - { - _connection._requestFields.put(HttpHeaders.CONTENT_TYPE_BUFFER,contentType); - - } - - /* ------------------------------------------------------------ */ - /** - * Sets the "context path" for this request - * - * @see HttpServletRequest#getContextPath() - */ public void setContextPath(String contextPath) { _contextPath = contextPath; } - /* ------------------------------------------------------------ */ - /** - * @param cookies - * The cookies to set. - */ +/* public void setCookies(Cookie[] cookies) { if (_cookies == null) _cookies = new CookieCutter(); _cookies.setCookies(cookies); } +*/ - /* ------------------------------------------------------------ */ public void setHandled(boolean h) { _handled = h; } - /* ------------------------------------------------------------ */ - /** - * @param method - * The method to set. - */ public void setMethod(String method) { _method = method; } - /* ------------------------------------------------------------ */ - /** - * @param parameters - * The parameters to set. - */ - public void setParameters(MultiMap<String> parameters) + private void setParameters(MultiMap<String> parameters) { _parameters = (parameters == null)?_baseParameters:parameters; if (_paramsExtracted && _parameters == null) throw new IllegalStateException(); } - /* ------------------------------------------------------------ */ - /** - * @param pathInfo - * The pathInfo to set. - */ public void setPathInfo(String pathInfo) { _pathInfo = pathInfo; } - /* ------------------------------------------------------------ */ - /** - * @param protocol - * The protocol to set. - */ public void setProtocol(String protocol) { _protocol = protocol; } - /* ------------------------------------------------------------ */ - /** - * @param queryString - * The queryString to set. - */ - public void setQueryString(String queryString) - { - _queryString = queryString; - } - - /* ------------------------------------------------------------ */ - /** - * @param addr - * The address to set. - */ - public void setRemoteAddr(String addr) - { - _remoteAddr = addr; - } - - /* ------------------------------------------------------------ */ - /** - * @param host - * The host to set. - */ - public void setRemoteHost(String host) - { - _remoteHost = host; - } - - /* ------------------------------------------------------------ */ - /** - * @param requestURI - * The requestURI to set. - */ public void setRequestURI(String requestURI) { _requestURI = requestURI; } - /* ------------------------------------------------------------ */ - /** - * @param scheme - * The scheme to set. - */ public void setScheme(String scheme) { _scheme = scheme; } - /* ------------------------------------------------------------ */ - /** - * @param host - * The host to set. - */ - public void setServerName(String host) - { - _serverName = host; - } - - /* ------------------------------------------------------------ */ - /** - * @param port - * The port to set. - */ - public void setServerPort(int port) - { - _port = port; - } - - /* ------------------------------------------------------------ */ - /** - * @param servletPath - * The servletPath to set. - */ - public void setServletPath(String servletPath) - { - _servletPath = servletPath; - } - - /* ------------------------------------------------------------ */ public void setTimeStamp(long ts) { _timeStamp = ts; } - /* ------------------------------------------------------------ */ - /** - * @param uri - * The uri to set. - */ public void setUri(HttpURI uri) { _uri = uri; } - /* ------------------------------------------------------------ */ - /** - * Set timetstamp of request dispatch - * - * @param value - * timestamp - */ - public void setDispatchTime(long value) - { - _dispatchTime = value; - } - - /* ------------------------------------------------------------ */ + @Override public AsyncContext startAsync() throws IllegalStateException { throw new UnsupportedOperationException(); } - /* ------------------------------------------------------------ */ + @Override public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) throws IllegalStateException { throw new UnsupportedOperationException(); } - /* ------------------------------------------------------------ */ @Override public String toString() { return (_handled?"[":"(") + getMethod() + " " + _uri + (_handled?"]@":")@") + hashCode() + " " + super.toString(); } - /* ------------------------------------------------------------ */ + @Override public boolean authenticate(HttpServletResponse response) throws IOException, ServletException { throw new UnsupportedOperationException(); } - /* ------------------------------------------------------------ */ + @Override public Part getPart(String name) throws IOException, ServletException { throw new UnsupportedOperationException(); } - /* ------------------------------------------------------------ */ + @Override public Collection<Part> getParts() throws IOException, ServletException { throw new UnsupportedOperationException(); } - /* ------------------------------------------------------------ */ + @Override public void login(String username, String password) throws ServletException { throw new UnsupportedOperationException(); } - /* ------------------------------------------------------------ */ + @Override public void logout() throws ServletException { throw new UnsupportedOperationException(); } - - /* ------------------------------------------------------------ */ - /** - * Merge in a new query string. The query string is merged with the existing parameters and {@link #setParameters(MultiMap)} and - * {@link #setQueryString(String)} are called with the result. The merge is according to the rules of the servlet dispatch forward method. - * - * @param query - * The query string to merge into the request. - */ - public void mergeQueryString(String query) - { - // extract parameters from dispatch query - MultiMap<String> parameters = new MultiMap<String>(); - UrlEncoded.decodeTo(query,parameters, StringUtil.__UTF8); //have to assume UTF-8 because we can't know otherwise - - boolean merge_old_query = false; - - // Have we evaluated parameters - if (!_paramsExtracted) - extractParameters(); - - // Are there any existing parameters? - if (_parameters != null && _parameters.size() > 0) - { - // Merge parameters; new parameters of the same name take precedence. - Iterator<Entry<String, Object>> iter = _parameters.entrySet().iterator(); - while (iter.hasNext()) - { - Map.Entry<String, Object> entry = iter.next(); - String name = entry.getKey(); - - // If the names match, we will need to remake the query string - if (parameters.containsKey(name)) - merge_old_query = true; - - // Add the old values to the new parameter map - Object values = entry.getValue(); - for (int i = 0; i < LazyList.size(values); i++) - parameters.add(name,LazyList.get(values,i)); - } - } - - if (_queryString != null && _queryString.length() > 0) - { - if (merge_old_query) - { - StringBuilder overridden_query_string = new StringBuilder(); - MultiMap<String> overridden_old_query = new MultiMap<String>(); - UrlEncoded.decodeTo(_queryString,overridden_old_query,null);//decode using any queryencoding set for the request - - - MultiMap<String> overridden_new_query = new MultiMap<String>(); - UrlEncoded.decodeTo(query,overridden_new_query,StringUtil.__UTF8); //have to assume utf8 as we cannot know otherwise - - Iterator<Entry<String, Object>> iter = overridden_old_query.entrySet().iterator(); - while (iter.hasNext()) - { - Map.Entry<String, Object> entry = iter.next(); - String name = entry.getKey(); - if (!overridden_new_query.containsKey(name)) - { - Object values = entry.getValue(); - for (int i = 0; i < LazyList.size(values); i++) - { - overridden_query_string.append("&").append(name).append("=").append((Object)LazyList.get(values,i)); - } - } - } - - query = query + overridden_query_string; - } - else - { - query = query + "&" + _queryString; - } - } - - setParameters(parameters); - setQueryString(query); - } - - - private static Buffer _buffer; - private static String _last; - private static final DateFormat dateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss 'GMT'", Locale.US); - static { - dateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); - } - - private static Buffer formatBuffer(long date) { - synchronized(dateFormat) { - String d = dateFormat.format(date); - if (d==_last) - return _buffer; - _last=d; - _buffer=new ByteArrayBuffer(d); - return _buffer; - } - } }