1 15 package org.apache.tapestry.web; 16 17 import java.io.IOException ; 18 import java.io.OutputStream ; 19 import java.io.PrintWriter ; 20 21 import javax.servlet.http.HttpServletResponse ; 22 23 import org.apache.commons.logging.Log; 24 import org.apache.commons.logging.LogFactory; 25 import org.apache.hivemind.ApplicationRuntimeException; 26 import org.apache.hivemind.util.Defense; 27 import org.apache.tapestry.util.ContentType; 28 29 36 public class ServletWebResponse implements WebResponse 37 { 38 private static final Log LOG = LogFactory.getLog(ServletWebResponse.class); 39 40 private final HttpServletResponse _servletResponse; 41 42 private boolean _needsReset; 43 44 public ServletWebResponse(HttpServletResponse response) 45 { 46 Defense.notNull(response, "response"); 47 48 _servletResponse = response; 49 } 50 51 public OutputStream getOutputStream(ContentType contentType) 52 { 53 Defense.notNull(contentType, "contentType"); 54 55 _servletResponse.setContentType(contentType.getMimeType()); 56 57 try 58 { 59 return _servletResponse.getOutputStream(); 60 } 61 catch (IOException ex) 62 { 63 throw new ApplicationRuntimeException(WebMessages.streamOpenError(contentType, ex), 64 null, ex); 65 } 66 } 67 68 public PrintWriter getPrintWriter(ContentType contentType) throws IOException 69 { 70 Defense.notNull(contentType, "contentType"); 71 72 if (_needsReset) 73 reset(); 74 75 _needsReset = true; 76 77 _servletResponse.setContentType(contentType.toString()); 78 79 try 80 { 81 return _servletResponse.getWriter(); 82 } 83 catch (IOException ex) 84 { 85 throw new ApplicationRuntimeException(WebMessages.writerOpenError(contentType, ex), 86 null, ex); 87 } 88 } 89 90 public String encodeURL(String url) 91 { 92 return _servletResponse.encodeURL(url); 93 } 94 95 public void reset() 96 { 97 try 98 { 99 _servletResponse.reset(); 100 } 101 catch (IllegalStateException ex) 102 { 103 LOG.error(WebMessages.resetFailed(ex), ex); 104 } 105 } 106 107 public void setContentLength(int length) 108 { 109 _servletResponse.setContentLength(length); 110 } 111 112 public String getNamespace() 113 { 114 return ""; 115 } 116 117 public void setDateHeader(String name, long date) 118 { 119 _servletResponse.setDateHeader(name, date); 120 } 121 122 public void setStatus(int status) 123 { 124 _servletResponse.setStatus(status); 125 } 126 } | Popular Tags |