@Override public void setReadListener(final ReadListener readListener) { if (readListener == null) { throw UndertowServletMessages.MESSAGES.listenerCannotBeNull(); } if (listener != null) { throw UndertowServletMessages.MESSAGES.listenerAlreadySet(); } listener = readListener; channel.getReadSetter().set(new ServletInputStreamChannelListener()); //we resume from an async task, after the request has been dispatched ioExecutor.execute(new Runnable() { @Override public void run() { channel.wakeupReads(); } }); }
@Override public ServletInputStream getInputStream () throws IOException { if ( null == body ) { return super.getInputStream(); } final ByteArrayInputStream inputStream = new ByteArrayInputStream( body ); return new ServletInputStream() { @Override public boolean isFinished () { return false; } @Override public boolean isReady () { return false; } @Override public void setReadListener ( ReadListener readListener ) { } @Override public int read () throws IOException { return inputStream.read(); } }; }
@Override public ServletInputStream getInputStream() throws IOException { return new ServletInputStream() { @Override public boolean isFinished() { return false; } @Override public boolean isReady() { return false; } @Override public void setReadListener(ReadListener readListener) { } private TeeInputStream tee = new TeeInputStream(RequestWrapper.super.getInputStream(), bos); @Override public int read() throws IOException { return tee.read(); } }; }
public ServletInputStream getInputStream() { ByteArrayInputStream body = new ByteArrayInputStream( builder.toString().getBytes()); return new ServletInputStream() { @Override public int read() throws IOException { return body.read(); } @Override public void setReadListener(ReadListener listener) { } @Override public boolean isReady() { return true; } @Override public boolean isFinished() { return body.available() <= 0; } }; }
@Override public ServletInputStream getInputStream() throws IOException { return new ServletInputStream() { @Override public boolean isFinished() { return false; } @Override public boolean isReady() { return false; } @Override public void setReadListener(ReadListener readListener) { } private TeeInputStream tee = new TeeInputStream(RequestWrapper.super.getInputStream(), bos, true); @Override public int read() throws IOException { return tee.read(); } }; }
@Override void start() { input.setReadListener(new ReadListener() { @Override public void onDataAvailable() throws IOException { read(); } @Override public void onAllDataRead() throws IOException { end(); } @Override public void onError(Throwable t) { errorActions.fire(t); } }); }
@Override public ServletInputStream getInputStream() throws IOException { final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(body.getBytes()); return new ServletInputStream() { @Override public boolean isFinished() { return byteArrayInputStream.available() == 0; } @Override public boolean isReady() { return true; } @Override public void setReadListener(ReadListener listener) { throw new RuntimeException("Not implemented"); } public int read() throws IOException { return byteArrayInputStream.read(); } }; }
@Override public ServletInputStream getInputStream() throws IOException { final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(getPayload()); return new ServletInputStream() { @Override public int read() throws IOException { return byteArrayInputStream.read(); } @Override public boolean isFinished() { return false; } @Override public boolean isReady() { return true; } @Override public void setReadListener(ReadListener listener) { // } }; }
ServletInputStream createServletOutputStream() { final ByteArrayInputStream stream = new ByteArrayInputStream(body.getBytes()); // CHECKSTYLE:OFF return new ServletInputStream() { // CHECKSTYLE:ON @Override public int read() throws IOException { return stream.read(); } @Override public boolean isFinished() { return false; } @Override public boolean isReady() { return false; } @Override public void setReadListener(ReadListener readListener) { // nothing } }; }
public void withRequestBody(String requestBody) throws IOException { final ByteArrayInputStream in = new ByteArrayInputStream(requestBody.getBytes()); when(req.getInputStream()).then(new Answer<ServletInputStream>() { @Override public ServletInputStream answer(InvocationOnMock invocation) throws Throwable { return new ServletInputStream() { @Override public int read() throws IOException { return in.read(); } @Override public void setReadListener(ReadListener readListener) { try { readListener.onDataAvailable(); readListener.onAllDataRead(); } catch (IOException letItCrash) { throw new RuntimeException(letItCrash); } } @Override public boolean isReady() { return true; } @Override public boolean isFinished() { return in.available() > 0; } }; } }); }
/** * TBD * @throws Exception */ @Test public void whenDataAvailableExpectReadBytesPublishedToSubscriber() throws Exception { List<Byte> expectedValues = Arrays.asList((byte)2, (byte)47); AnswerArg1<ReadListener> answer = new AnswerArg1<>(); BufferedSubscriber<byte[]> bufferedSubscriber = new BufferedSubscriber<>(); // mock setup // receive setReadListener's argument Mockito .doAnswer(answer) .when(servletInputStreamMock).setReadListener(Mockito.any(ReadListener.class)); // return one byte on ServletInputStream.read when(servletInputStreamMock.read()) .thenReturn(2) .thenReturn(47); when(servletInputStreamMock.isReady()) .thenReturn(true) .thenReturn(true) .thenReturn(false); servletInputStreamPublisherAdapter.startReading(); servletInputStreamPublisherAdapter.subscribe(bufferedSubscriber); // inform about data availability answer.getArg().onDataAvailable(); // asserts List<byte[]> receivedByteList = bufferedSubscriber.toList(); Assert.assertThat(receivedByteList.size(), CoreMatchers.equalTo(2)); // Assert.assertThat(receivedByteList, CoreMatchers.hasItem((byte)2)); // Assert.assertThat(receivedByteList, CoreMatchers.hasItem((byte)47)); }
@Test public void whenNoMoreDataAvailableOnCompletedCalled() throws Exception { AnswerArg1<ReadListener> answer = new AnswerArg1<>(); BufferedSubscriber<Object> bufferedSubscriber = new BufferedSubscriber<>(); // mock setup // receive setReadListener's argument Mockito .doAnswer(answer) .when(servletInputStreamMock).setReadListener(Mockito.any(ReadListener.class)); // return one byte on ServletInputStream.read when(servletInputStreamMock.read()) .thenReturn(-1); when(servletInputStreamMock.isReady()) .thenReturn(true); servletInputStreamPublisherAdapter.startReading(); servletInputStreamPublisherAdapter.subscribe(bufferedSubscriber); // inform about data availability answer.getArg().onDataAvailable(); // asserts Assert.assertThat(bufferedSubscriber.isCompleted(), CoreMatchers.equalTo(true)); }
@Test public void whenIoExceptionThrownOnReadExpectOnErrorCalled() throws Exception { IOException expectedException = new IOException(); AnswerArg1<ReadListener> answer = new AnswerArg1<>(); BufferedSubscriber<Object> bufferedSubscriber = new BufferedSubscriber<>(); // mock setup // receive setReadListener's argument Mockito .doAnswer(answer) .when(servletInputStreamMock).setReadListener(Mockito.any(ReadListener.class)); // return one byte on ServletInputStream.read when(servletInputStreamMock.read()) .thenThrow(expectedException); when(servletInputStreamMock.isReady()) .thenReturn(true); servletInputStreamPublisherAdapter.startReading(); servletInputStreamPublisherAdapter.subscribe(bufferedSubscriber); // inform about data availability answer.getArg().onDataAvailable(); // asserts Assert.assertThat(bufferedSubscriber.getException(), CoreMatchers.equalTo(expectedException)); }
@Override public ServletInputStream getInputStream() throws IOException { final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(body.getBytes()); ServletInputStream servletInputStream = new ServletInputStream() { public int read() throws IOException { return byteArrayInputStream.read(); } @Override public boolean isFinished() { // TODO Auto-generated method stub return false; } @Override public boolean isReady() { // TODO Auto-generated method stub return false; } @Override public void setReadListener(ReadListener readListener) { // TODO Auto-generated method stub } }; return servletInputStream; }
@Override public ServletInputStream getInputStream() throws IOException { //非json类型,直接返回 if(!super.getHeader(HttpHeaders.CONTENT_TYPE).equalsIgnoreCase(MediaType.APPLICATION_JSON_VALUE)){ return super.getInputStream(); } //为空,直接返回 String json = IOUtils.toString(super.getInputStream(), "utf-8"); if (StringUtils.isBlank(json)) { return super.getInputStream(); } //xss过滤 json = xssEncode(json); final ByteArrayInputStream bis = new ByteArrayInputStream(json.getBytes("utf-8")); return new ServletInputStream() { @Override public boolean isFinished() { return true; } @Override public boolean isReady() { return true; } @Override public void setReadListener(ReadListener readListener) { } @Override public int read() throws IOException { return bis.read(); } }; }
@Override public void setReadListener(final ReadListener readListener) { if (readListener == null) { throw UndertowServletMessages.MESSAGES.listenerCannotBeNull(); } if (listener != null) { throw UndertowServletMessages.MESSAGES.listenerAlreadySet(); } if (!request.isAsyncStarted()) { throw UndertowServletMessages.MESSAGES.asyncNotStarted(); } asyncContext = request.getAsyncContext(); listener = readListener; channel.getReadSetter().set(internalListener = new ServletInputStreamChannelListener()); //we resume from an async task, after the request has been dispatched asyncContext.addAsyncTask(new Runnable() { @Override public void run() { channel.getIoThread().execute(new Runnable() { @Override public void run() { channel.resumeReads(); internalListener.handleEvent(channel); } }); } }); }
@Override public ServletInputStream getInputStream() throws IOException { //非json类型,直接返回 if (!super.getHeader(HttpHeaders.CONTENT_TYPE).equalsIgnoreCase(MediaType.APPLICATION_JSON_VALUE)) { return super.getInputStream(); } //为空,直接返回 String json = IOUtils.toString(super.getInputStream(), "utf-8"); if (StringUtils.isBlank(json)) { return super.getInputStream(); } //xss过滤 json = xssEncode(json); final ByteArrayInputStream bis = new ByteArrayInputStream(json.getBytes("utf-8")); return new ServletInputStream() { @Override public boolean isFinished() { return false; } @Override public boolean isReady() { return false; } @Override public void setReadListener(ReadListener readListener) { } @Override public int read() throws IOException { return bis.read(); } }; }
@Override public ServletInputStream getInputStream() throws IOException { final ServletInputStream inputStream = d.getInputStream(); return new ServletInputStream() { @Override public int read() throws IOException { int b = inputStream.read(); if (b != -1) { reqBody.write(b); } return b; } @Override public void setReadListener(ReadListener readListener) { inputStream.setReadListener(readListener); } @Override public boolean isReady() { return inputStream.isReady(); } @Override public boolean isFinished() { return inputStream.isFinished(); } }; }
@Override public ServletInputStream getInputStream() throws IOException { final ByteArrayInputStream bais = new ByteArrayInputStream(body); return new ServletInputStream() { @Override public int read() throws IOException { return bais.read(); } @Override public boolean isFinished() { return false; } @Override public boolean isReady() { return false; } @Override public void setReadListener(ReadListener readListener) { } }; }
@Override public ServletInputStream getInputStream() throws IOException { if (payload == null) { // If no payload is present (i.e. debug logging isn't enabled), then perform the standard super class functionality. return super.getInputStream(); } else { return new ServletInputStream() { final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(payload); public int read() throws IOException { // Read bytes from the previously read payload. return byteArrayInputStream.read(); } public boolean isFinished() { return true; } public boolean isReady() { return true; } public void setReadListener(final ReadListener readListener) { // Empty method. } }; } }
@Override public void setReadListener(ReadListener arg0) { try { arg0.onDataAvailable(); }catch (IOException e) { request.host.logger.logError(e); } listener = arg0; }
@Override public ServletInputStream getInputStream() throws IOException { final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream( body.getBytes()); ServletInputStream servletInputStream = new ServletInputStream() { public int read() throws IOException { return byteArrayInputStream.read(); } @Override public boolean isFinished() { throw new UnsupportedOperationException("Not supported yet."); } @Override public boolean isReady() { throw new UnsupportedOperationException("Not supported yet."); } @Override public void setReadListener(ReadListener readListener) { throw new UnsupportedOperationException("Not supported yet."); } }; return servletInputStream; }
/** {@inheritDoc} */ @Override public ServletInputStream getInputStream() throws IOException { final ServletInputStream requestInputStream = super.getInputStream(); if (bufferedInputStream == null) { return requestInputStream; } if (inputStream == null) { final BufferedInputStream myBufferedInputStream = bufferedInputStream; //CHECKSTYLE:OFF inputStream = new ServletInputStream() { //CHECKSTYLE:ON @Override public int read() throws IOException { return myBufferedInputStream.read(); } @Override public boolean isFinished() { return requestInputStream.isFinished(); } @Override public boolean isReady() { return requestInputStream.isReady(); } @Override public void setReadListener(ReadListener readListener) { requestInputStream.setReadListener(readListener); } }; } return inputStream; }
private ServletInputStream createInputStreamForString(final String string) { final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream( string.getBytes()); // CHECKSTYLE:OFF final ServletInputStream inputStream = new ServletInputStream() { // CHECKSTYLE:ON @Override public int read() throws IOException { return byteArrayInputStream.read(); } @Override public boolean isFinished() { return false; } @Override public boolean isReady() { return false; } @Override public void setReadListener(ReadListener readListener) { // nothing } }; return inputStream; }
/** * forwards post requests to the doGet method Creation date: (11/6/2000 * 10:52:39 AM) * * @param res * javax.servlet.http.HttpServletRequest * @param res2 * javax.servlet.http.HttpServletResponse */ @Override public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); AsyncContext ac = req.startAsync(); ServletInputStream input = req.getInputStream(); ReadListener readListener = new ReadListenerImpl(input, res, ac); input.setReadListener(readListener); }
@Override public ServletInputStream getInputStream() throws IOException { final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(body.getBytes()); ServletInputStream inputStream = new ServletInputStream() { @Override public int read() throws IOException { return byteArrayInputStream.read(); } /* TODO: Review next methods. Not existing in original code. Required to be added * due to servlet API version change */ @Override public boolean isFinished() { // TODO Auto-generated method stub return false; } @Override public boolean isReady() { // TODO Auto-generated method stub return false; } @Override public void setReadListener(ReadListener arg0) { // TODO Auto-generated method stub } }; return inputStream; }
@Override public ServletInputStream getInputStream() throws IOException { return new ServletInputStream() { private TeeInputStream tee = new TeeInputStream(RequestWrapper.super.getInputStream(), bos); @Override public int read() throws IOException { return tee.read(); } @Override public boolean isFinished() { // Auto-generated method stub return false; } @Override public boolean isReady() { // Auto-generated method stub return false; } @Override public void setReadListener(ReadListener listener) { // Auto-generated method stub } }; }
@Override public ServletInputStream getInputStream () throws IOException { final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(body); ServletInputStream inputStream = new ServletInputStream() { public int read () throws IOException { return byteArrayInputStream.read(); } @Override public boolean isFinished() { return byteArrayInputStream.available() > 0; } @Override public boolean isReady() { return true; } @Override public void setReadListener(ReadListener readListener) { // TODO Auto-generated method stub } }; return inputStream; }
@Override public ServletInputStream getInputStream() throws IOException { return new ServletInputStream() { int idx = 0; byte[] contents = content.getBytes(encoding); @Override public boolean isFinished() { return idx < contents.length; } @Override public boolean isReady() { return !isFinished(); } @Override public int read() throws IOException { if (idx < contents.length) { return contents[idx++]; } else return -1; } @Override public void setReadListener(ReadListener listener) { throw new java.lang.IllegalStateException(); } }; }
@Override public void setReadListener(ReadListener readListener) { }
@Override public void setReadListener(ReadListener readListener) { checkNotClosed(); checkNotNull(readListener); this.readListener = readListener; }
@Override public void setReadListener(ReadListener readListener) { // TODO Auto-generated method stub }
@Override public void setReadListener(ReadListener readListener){ throw new UnsupportedOperationException(); }
@Override public void setReadListener(ReadListener listener) { throw new RuntimeException("Not implemented"); }