@Override public ServletOutputStream getOutputStream() throws IOException { final ServletOutputStream outputStream = d.getOutputStream(); return new ServletOutputStream() { @Override public void write(int b) throws IOException { respBody.write(b); outputStream.write(b); } @Override public void setWriteListener(WriteListener writeListener) { outputStream.setWriteListener(writeListener); } @Override public boolean isReady() { return outputStream.isReady(); } }; }
@Override public void setWriteListener(final WriteListener writeListener) { if (writeListener == null) { throw UndertowServletMessages.MESSAGES.paramCannotBeNull("writeListener"); } if (listener != null) { throw UndertowServletMessages.MESSAGES.listenerAlreadySet(); } listener = writeListener; channel.getWriteSetter().set(new WriteChannelListener()); state |= FLAG_READY; ioExecutor.execute(new Runnable() { @Override public void run() { channel.resumeWrites(); } }); }
@Override public ServletOutputStream getOutputStream() throws IOException { return new ServletOutputStream() { @Override public boolean isReady() { return false; } @Override public void setWriteListener(WriteListener writeListener) { } private TeeOutputStream tee = new TeeOutputStream(ResponseWrapper.super.getOutputStream(), bos); @Override public void write(int b) throws IOException { tee.write(b); } }; }
@Override public ServletOutputStream getOutputStream() throws IOException { return new ServletOutputStream() { @Override public void write(int b) throws IOException { baos.write(b); } @Override public boolean isReady() { // TODO Auto-generated method stub return false; } @Override public void setWriteListener(WriteListener listener) { // TODO Auto-generated method stub } }; }
@Override public ServletOutputStream getOutputStream() throws IOException { return new ServletOutputStream() { @Override public void write(int b) throws IOException { builder.append(new Character((char) b)); } @Override public void setWriteListener(WriteListener listener) { } @Override public boolean isReady() { return true; } }; }
@Override public ServletOutputStream getOutputStream() throws IOException { if (servletOutputStream == null){ servletOutputStream = new ServletOutputStream() { @Override public void write(int b) throws IOException { out.write(b); } @Override public void setWriteListener(WriteListener wl) { writeListener = wl; } @Override public boolean isReady() { return true; } }; } return servletOutputStream; }
@Override public ServletOutputStream getOutputStream() throws IOException { if (out == null){ out = new ServletOutputStream() { @Override public void write(int b) throws IOException { baos.write(b); } @Override public void setWriteListener(WriteListener writeListener) { } @Override public boolean isReady() { return false; } }; } return out; }
@Override public ServletOutputStream getOutputStream() throws IOException { return new ServletOutputStream() { private TeeOutputStream tee = new TeeOutputStream(ResponseWrapper.super.getOutputStream(), bos); @Override public boolean isReady() { return true; } @Override public void setWriteListener(WriteListener writeListener) { } @Override public void write(int b) throws IOException { tee.write(b); } }; }
@Override public synchronized ServletOutputStream getOutputStream() { checkState(writer == null, "getWriter() already called"); if (outputStream == null) { outputStream = new ServletOutputStream() { @Override public void write(int c) throws IOException { actualBody.write(c); } @Override public boolean isReady() { return true; } @Override public void setWriteListener(WriteListener listener) { throw new UnsupportedOperationException(); } }; } return outputStream; }
@Override public ServletOutputStream getOutputStream() throws IOException { return new ServletOutputStream() { @Override public void write(int b) throws IOException { outputStream.write(b); } @Override public void setWriteListener(WriteListener arg0) {} @Override public boolean isReady() { return true; } }; }
public ServletOutputStream getOutputStream() throws IOException { // return instace.getOutputStream(); if (os == null) { os = new ByteArrayOutputStream(); sos = new ServletOutputStream() { @Override public void write(int b) throws IOException { os.write(b); } @Override public boolean isReady() { return true; } @Override public void setWriteListener(WriteListener writeListener) { } }; } return sos; }
@Override public ServletOutputStream getOutputStream() { return new ServletOutputStream() { @Override public void write(int b) { baos.write(b); } @Override public boolean isReady() { return true; } @Override public void setWriteListener(WriteListener writeListener) {} }; }
@Override public ServletOutputStream getOutputStream() throws IOException { return new ServletOutputStream() { private TeeOutputStream tee = new TeeOutputStream(ResponseWrapper.super.getOutputStream(), bos); @Override public void write(int b) throws IOException { tee.write(b); } @Override public boolean isReady() { // Auto-generated method stub return false; } @Override public void setWriteListener(WriteListener listener) { // Auto-generated method stub } }; }
@Override public ServletOutputStream getOutputStream() throws IOException { return new ServletOutputStream(){ @Override public boolean isReady() { return true; } @Override public void setWriteListener(WriteListener writeListener) { } @Override public void write(int b) throws IOException { out.write(b); } }; }
@Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); bytes = new byte[] { (byte) 0x0 }; inputStream = new ByteArrayInputStream(bytes); outputStream = new ByteArrayOutputStream(); socketStream = new ServletOutputStream() { @Override public void write(int b) throws IOException { outputStream.write(b); } @Override public boolean isReady() { return false; } @Override public void setWriteListener(WriteListener writeListener) { } }; when(response.getOutputStream()).thenReturn(socketStream); }
@Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); bytes = new byte[] { (byte) 0x0 }; outputStream = new ByteArrayOutputStream(); socketStream = new ServletOutputStream() { @Override public void write(int b) throws IOException { outputStream.write(b); } @Override public boolean isReady() { return false; } @Override public void setWriteListener(WriteListener writeListener) { } }; when(response.getOutputStream()).thenReturn(socketStream); }
@Test public void flushBuffer() throws IOException { Buffer buffer = Buffer.buffer(); ServletOutputStream output = new ServletOutputStream() { @Override public boolean isReady() { return true; } @Override public void setWriteListener(WriteListener writeListener) { } @Override public void write(int b) throws IOException { buffer.appendByte((byte) b); } }; response = new MockUp<HttpServletResponse>() { @Mock ServletOutputStream getOutputStream() { return output; } }.getMockInstance(); responseEx = new StandardHttpServletResponseEx(response); // no body responseEx.flushBuffer(); Assert.assertEquals(0, buffer.length()); Buffer body = Buffer.buffer().appendString("body"); responseEx.setBodyBuffer(body); responseEx.flushBuffer(); Assert.assertEquals("body", buffer.toString()); }
@Override public void setWriteListener(final WriteListener writeListener) { if (writeListener == null) { throw UndertowServletMessages.MESSAGES.listenerCannotBeNull(); } if (listener != null) { throw UndertowServletMessages.MESSAGES.listenerAlreadySet(); } final ServletRequest servletRequest = servletRequestContext.getServletRequest(); if (!servletRequest.isAsyncStarted()) { throw UndertowServletMessages.MESSAGES.asyncNotStarted(); } asyncContext = (AsyncContextImpl) servletRequest.getAsyncContext(); listener = writeListener; //we register the write listener on the underlying connection //so we don't have to force the creation of the response channel //under normal circumstances this will break write listener delegation this.internalListener = new WriteChannelListener(); if(this.channel != null) { this.channel.getWriteSetter().set(internalListener); } //we resume from an async task, after the request has been dispatched asyncContext.addAsyncTask(new Runnable() { @Override public void run() { if(channel == null) { servletRequestContext.getExchange().getIoThread().execute(new Runnable() { @Override public void run() { internalListener.handleEvent(null); } }); } else { channel.resumeWrites(); } } }); }
@Test public void testDoGet() throws ServletException, IOException { final HttpServletRequest request = mock(HttpServletRequest.class); final HttpServletResponse response = mock(HttpServletResponse.class); when(response.getStatus()).thenReturn(200); when(response.getOutputStream()).thenReturn(new ServletOutputStream() { @Override public void write(final byte b[]) throws IOException { assertThat(new String(b), is("hello")); } @Override public void write(final int i) throws IOException {} @Override public boolean isReady() { return false; } @Override public void setWriteListener(final WriteListener writeListener) {} }); HelloJettyServlet servlet = new HelloJettyServlet(); servlet.doGet(request, response); assertThat(response.getStatus(), is(200)); }
@Test public void testDoGet() throws ServletException, IOException { final HttpServletRequest request = mock(HttpServletRequest.class); final HttpServletResponse response = mock(HttpServletResponse.class); when(response.getStatus()).thenReturn(200); when(response.getOutputStream()).thenReturn(new ServletOutputStream() { @Override public void write(final byte b[]) throws IOException { assertThat(new String(b), is("hello")); } @Override public void write(final int i) throws IOException {} @Override public boolean isReady() { return false; } @Override public void setWriteListener(final WriteListener writeListener) {} }); HelloServlet servlet = new HelloServlet(); servlet.doGet(request, response); assertThat(response.getStatus(), is(200)); }
@Before public void setupWrapper() throws IOException { requestWrapper = mock(HttpRequestWrapper.class); response = mock(HttpServletResponse.class); manager = mock(SessionManager.class); configuration = new SessionConfiguration(); when(manager.getConfiguration()).thenReturn(configuration); when(requestWrapper.getManager()).thenReturn(manager ); responseWrapper = new HttpResponseWrapper31(requestWrapper, response); outputStream = new ByteArrayOutputStream(); outputWriter = new StringWriter(); when(response.getOutputStream()).thenReturn(new ServletOutputStream() { @Override public void write(int b) throws IOException { outputStream.write(b); } @Override public void setWriteListener(WriteListener writeListener) { } @Override public boolean isReady() { return false; } }); when(response.getWriter()).thenReturn(new PrintWriter(outputWriter)); }
@Override public ServletOutputStream getOutputStream() { if (writer != null) { throw new IllegalStateException( "getWriter() has already been called on this response."); } if (output == null) { output = new ServletOutputStream() { @Override public void write(int b) throws IOException { capture.write(b); } @Override public void flush() throws IOException { capture.flush(); } @Override public void close() throws IOException { capture.close(); } @Override public boolean isReady() { return false; } @Override public void setWriteListener(WriteListener arg0) { } }; } return output; }
/** * 解析jsp成html 只能解析当前应用下的jsp文件 * @param request * @param response * @param file "/WEB-INF/page/index.jsp" * @return * @throws ServletException * @throws IOException */ public static String parseJsp(HttpServletRequest request, HttpServletResponse response, String file) throws ServletException, IOException { ServletContext servlet = request.getServletContext(); RequestDispatcher dispatcher = servlet.getRequestDispatcher(file); final ByteArrayOutputStream os = new ByteArrayOutputStream(); final ServletOutputStream stream = new ServletOutputStream() { public void write(byte[] data, int offset, int length) { os.write(data, offset, length); } public void write(int b) throws IOException { os.write(b); } @Override public boolean isReady() { return false; } @Override public void setWriteListener(WriteListener arg0) {} }; final PrintWriter writer = new PrintWriter(new OutputStreamWriter(os)); HttpServletResponse resp = new HttpServletResponseWrapper(response) { public ServletOutputStream getOutputStream() { return stream; } public PrintWriter getWriter() { return writer; } }; dispatcher.include(request, resp); writer.flush(); String result = os.toString(); if(ConfigTable.isDebug() && !"false".equals(ConfigTable.getString("PARSE_JSP_LOG"))){ log.warn("[LOAD JSP TEMPLATE][FILE:"+file+"][HTML:"+result+"]"); } return result; }
@Override public void setWriteListener(WriteListener writeListener) { try { writeListener.onWritePossible(); } catch (IOException e) { e.printStackTrace(); } }
@Override public void setWriteListener(WriteListener arg0) { try { this.wl = arg0; lock = true; arg0.onWritePossible(); lock = false; }catch (IOException e) { response.request.host.logger.logError(e); } }
@Override public void setWriteListener(WriteListener arg0) { try { arg0.onWritePossible(); } catch (IOException e) { } }
public ServletOutputStream getOutputStream() { if (isWriterUsed) { throw new IllegalStateException("Unexpected internal error during import: " + "Target servlet called getOutputStream(), then getWriter()"); } isStreamUsed = true; if (bos == null) { bos = new ByteArrayOutputStream(); } ServletOutputStream sos = new ServletOutputStream() { public void write(int b) throws IOException { bos.write(b); } @Override public boolean isReady() { return false; } @Override public void setWriteListener(WriteListener writeListener) { } }; return sos; }
public ServletOutputStream getOutputStream() { if (isWriterUsed) { logger.error("Unexpected internal error during import: Target servlet called getOutputStream(), then getWriter()"); throw new IllegalStateException( "Unexpected internal error during import: Target servlet called getOutputStream(), then getWriter()"); } isStreamUsed = true; if (bos == null) { bos = new ByteArrayOutputStream(); } ServletOutputStream sos = new ServletOutputStream() { public void write(int b) throws IOException { bos.write(b); } @Override public boolean isReady() { return false; } @Override public void setWriteListener(WriteListener writeListener) { } }; return sos; }
@Override public ServletOutputStream getOutputStream() throws IOException,IllegalStateException { if(writer != null){ throw new IllegalStateException("Get stream failed because get writer has already been called"); } if(stream == null) { stream = new ServletOutputStream() { @Override public boolean isReady() { return true; } @Override public void setWriteListener(WriteListener writeListener) { //TODO } @Override public void write(int b) throws IOException { buffer.add((byte) b); } @Override public void flush() throws IOException { committed = true; super.flush(); } @Override public void close() throws IOException { committed = true; super.close(); } }; } return stream; }
public void write(WriteListener proxyWriter) throws IOException { if (responseContentLength >= 0) proxyResponse.setContentLength(-1); // Setting the WriteListener triggers an invocation to // onWritePossible(), possibly on a different thread. // We cannot succeed the callback from here, otherwise // we run into a race where the different thread calls // onWritePossible() and succeeding the callback causes // this method to be called again, which also may call // onWritePossible(). proxyResponse.getOutputStream().setWriteListener(proxyWriter); }
@Override public ServletOutputStream getOutputStream() throws IOException { if (servletOutputStream == null) { outputStream = (portletResponse instanceof MimeResponse) ? ((MimeResponse) portletResponse) .getPortletOutputStream() : DummyServletOutputStream.getInstance(); if (outputStream instanceof ServletOutputStream) { servletOutputStream = (ServletOutputStream) outputStream; } else { servletOutputStream = new ServletOutputStream() { @Override public void write(int b) throws IOException { outputStream.write(b); } @Override public boolean isReady() { // Servlet 3.1 API. Not implemented. return true; } @Override public void setWriteListener(WriteListener arg0) { // Servlet 3.1 API. Not implemented. } }; } } return servletOutputStream; }
@Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); bytes = new byte[] { (byte) 0x0 }; outputStream = new ByteArrayOutputStream(); file = folder.newFile(); Files.write(file.toPath(), bytes); socketStream = new ServletOutputStream() { @Override public void write(int b) throws IOException { outputStream.write(b); } @Override public boolean isReady() { return false; } @Override public void setWriteListener(WriteListener writeListener) { } }; when(response.getOutputStream()).thenReturn(socketStream); }
@Override public void setWriteListener(WriteListener writeListener) { delegate.setWriteListener(writeListener); }
@Override public void setWriteListener(WriteListener writeListener) { wrappedStream.setWriteListener(writeListener); }
@Override public void setWriteListener(WriteListener arg0) { // TODO Auto-generated method stub }
@Override public void setWriteListener(WriteListener writeListener) { checkNotNull(writeListener); // TODO ISE when called more than once // TODO ISE when associated request is not async }
@Override public void setWriteListener(WriteListener writeListener) { // TODO Auto-generated method stub }
@Override public void setWriteListener(WriteListener writeListener) { // nothing }