1 7 package winstone.auth; 8 9 import java.io.ByteArrayOutputStream ; 10 import java.io.IOException ; 11 import java.io.InputStream ; 12 13 import winstone.WinstoneInputStream; 14 import winstone.WinstoneRequest; 15 16 25 public class CachedRequest extends WinstoneRequest { 26 37 public CachedRequest(WinstoneRequest request) throws IOException { 38 super(); 39 40 this.attributesStack.addAll(request.getAttributesStack()); 42 this.parametersStack.addAll(request.getParametersStack()); 43 this.attributes.putAll(request.getAttributes()); 44 this.parameters.putAll(request.getParameters()); 45 this.locales = request.getListLocales(); 47 this.method = request.getMethod(); 48 this.scheme = request.getScheme(); 49 this.serverName = request.getServerName(); 50 this.requestURI = request.getRequestURI(); 51 this.servletPath = request.getServletPath(); 52 this.pathInfo = request.getPathInfo(); 53 this.queryString = request.getQueryString(); 54 this.protocol = request.getProtocol(); 55 this.contentLength = request.getContentLength(); 56 this.contentType = request.getContentType(); 57 this.serverPort = request.getServerPort(); 58 this.requestedSessionIds.putAll(request.getRequestedSessionIds()); 59 this.currentSessionIds.putAll(request.getCurrentSessionIds()); 60 this.deadRequestedSessionId = request.getDeadRequestedSessionId(); 61 this.servletConfig = request.getServletConfig(); 62 this.webappConfig = request.getWebAppConfig(); 63 this.hostGroup = request.getHostGroup(); 64 this.encoding = request.getEncoding(); 65 this.parsedParameters = request.getParsedParameters(); 66 InputStream in = request.getInputStream(); 67 ByteArrayOutputStream inBackup = new ByteArrayOutputStream (); 68 if (this.method.equals("POST")) { 69 byte buffer[] = new byte[8192]; 70 int inputCounter = 0; 71 int readBytes = in.read(buffer); 72 while ((readBytes != -1) 73 && ((inputCounter < this.contentLength) || (this.contentLength == -1))) { 74 inputCounter += readBytes; 75 inBackup.write(buffer, 0, readBytes); 76 readBytes = in.read(buffer); 77 } 78 } 79 this.inputData = new WinstoneInputStream(inBackup.toByteArray()); 80 } 81 82 86 public void transferContent(WinstoneRequest request) { 87 request.getAttributesStack().clear(); 88 request.getAttributesStack().addAll(this.attributesStack); 89 request.getParametersStack().clear(); 90 request.getParametersStack().addAll(this.parametersStack); 91 request.getParameters().clear(); 92 request.getParameters().putAll(this.parameters); 93 request.getAttributes().clear(); 96 request.getAttributes().putAll(this.attributes); 97 request.setLocales(this.locales); 98 request.setMethod(this.method); 99 request.setScheme(this.scheme); 100 request.setServerName(this.serverName); 101 request.setRequestURI(this.requestURI); 102 request.setServletPath(this.servletPath); 103 request.setPathInfo(this.pathInfo); 104 request.setQueryString(this.queryString); 105 request.setProtocol(this.protocol); 106 request.setContentLength(this.contentLength); 107 request.setContentType(this.contentType); 108 request.setServerPort(this.serverPort); 109 request.getRequestedSessionIds().clear(); 110 request.getRequestedSessionIds().putAll(this.requestedSessionIds); 111 request.getCurrentSessionIds().clear(); 112 request.getCurrentSessionIds().putAll(this.currentSessionIds); 113 request.setDeadRequestedSessionId(this.deadRequestedSessionId); 114 request.setEncoding(this.encoding); 115 request.setParsedParameters(this.parsedParameters); 116 request.setInputStream(this.inputData); 117 request.setServletConfig(this.servletConfig); 118 request.setWebAppConfig(this.webappConfig); 119 request.setHostGroup(this.hostGroup); 120 } 121 } 122 | Popular Tags |