private void writeTrailers(final List<? extends Header> trailers) throws IOException { if (trailers != null) { for (int i = 0; i < trailers.size(); i++) { final Header header = trailers.get(i); if (header instanceof FormattedHeader) { final CharArrayBuffer chbuffer = ((FormattedHeader) header).getBuffer(); buffer.writeLine(chbuffer); } else { this.lineBuffer.clear(); BasicLineFormatter.INSTANCE.formatHeader(this.lineBuffer, header); buffer.writeLine(this.lineBuffer); } } } }
@Override public void formatStatusLine(final CharArrayBuffer buffer, final StatusLine statline) { Args.notNull(buffer, "Char array buffer"); Args.notNull(statline, "Status line"); formatProtocolVersion(buffer, statline.getProtocolVersion()); buffer.append(' '); buffer.append(Integer.toString(statline.getStatusCode())); buffer.append(' '); // keep whitespace even if reason phrase is empty final String reasonPhrase = statline.getReasonPhrase(); if (reasonPhrase != null) { buffer.append(reasonPhrase); } }
@Test public void testRLFormattingInvalidInput() throws Exception { final CharArrayBuffer buf = new CharArrayBuffer(64); final RequestLine requestline = new RequestLine("GET", "/stuff", HttpVersion.HTTP_1_1); try { this.formatter.formatRequestLine(null, requestline); Assert.fail("IllegalArgumentException should habe been thrown"); } catch (final IllegalArgumentException ex) { // expected } try { this.formatter.formatRequestLine(buf, null); Assert.fail("IllegalArgumentException should habe been thrown"); } catch (final IllegalArgumentException ex) { // expected } }
@Test public void testSLFormattingInvalidInput() throws Exception { final CharArrayBuffer buf = new CharArrayBuffer(64); final StatusLine statusline = new StatusLine(HttpVersion.HTTP_1_1, HttpStatus.SC_OK, "OK"); try { this.formatter.formatStatusLine(null, statusline); Assert.fail("IllegalArgumentException should habe been thrown"); } catch (final IllegalArgumentException ex) { // expected } try { this.formatter.formatStatusLine(buf, null); Assert.fail("IllegalArgumentException should habe been thrown"); } catch (final IllegalArgumentException ex) { // expected } }
@Override public void formatStatusLine(final CharArrayBuffer buffer, final StatusLine statline) { Args.notNull(buffer, "Char array buffer"); Args.notNull(statline, "Status line"); formatProtocolVersion(buffer, statline.getProtocolVersion()); buffer.append(' '); buffer.append(Integer.toString(statline.getStatusCode())); buffer.append(' '); // keep whitespace even if reason phrase is empty final String reasonPhrase = statline.getReasonPhrase(); if (reasonPhrase != null) { buffer.append(reasonPhrase); } }
@Test public void testRLFormatting() throws Exception { final RequestLine requestline = new RequestLine("GET", "/stuff", HttpVersion.HTTP_1_1); final CharArrayBuffer buf = new CharArrayBuffer(64); this.formatter.formatRequestLine(buf, requestline); Assert.assertEquals("GET /stuff HTTP/1.1", buf.toString()); }
@Test public void testSLFormatting() throws Exception { final CharArrayBuffer buf = new CharArrayBuffer(64); final StatusLine statusline1 = new StatusLine(HttpVersion.HTTP_1_1, HttpStatus.SC_OK, "OK"); this.formatter.formatStatusLine(buf, statusline1); Assert.assertEquals("HTTP/1.1 200 OK", buf.toString()); buf.clear(); final StatusLine statusline2 = new StatusLine(HttpVersion.HTTP_1_1, HttpStatus.SC_OK, null); this.formatter.formatStatusLine(buf, statusline2); Assert.assertEquals("HTTP/1.1 200 ", buf.toString()); // see "testSLParseSuccess" in TestBasicLineParser: // trailing space is correct }
private void writeTrailers(final List<? extends Header> trailers) throws IOException { if (trailers != null) { for (int i = 0; i < trailers.size(); i++) { final Header header = trailers.get(i); if (header instanceof FormattedHeader) { final CharArrayBuffer chbuffer = ((FormattedHeader) header).getBuffer(); buffer.writeLine(chbuffer); } else { this.lineBuffer.clear(); BasicLineFormatter.INSTANCE.formatHeader(this.lineBuffer, header); buffer.writeLine(this.lineBuffer); } } } }
@Override public void formatRequestLine(final CharArrayBuffer buffer, final RequestLine reqline) { Args.notNull(buffer, "Char array buffer"); Args.notNull(reqline, "Request line"); buffer.append(reqline.getMethod()); buffer.append(' '); buffer.append(reqline.getUri()); buffer.append(' '); formatProtocolVersion(buffer, reqline.getProtocolVersion()); }
private void writeTrailers() throws IOException { final List<? extends Header> trailers = this.trailerSupplier != null ? this.trailerSupplier.get() : null; if (trailers != null) { for (int i = 0; i < trailers.size(); i++) { final Header header = trailers.get(i); if (header instanceof FormattedHeader) { final CharArrayBuffer chbuffer = ((FormattedHeader) header).getBuffer(); this.buffer.writeLine(chbuffer, this.outputStream); } else { this.lineBuffer.clear(); BasicLineFormatter.INSTANCE.formatHeader(this.lineBuffer, header); this.buffer.writeLine(this.lineBuffer, this.outputStream); } } } }
@Override public void formatRequestLine(final CharArrayBuffer buffer, final RequestLine reqline) { Args.notNull(buffer, "Char array buffer"); Args.notNull(reqline, "Request line"); buffer.append(reqline.getMethod()); buffer.append(' '); buffer.append(reqline.getUri()); buffer.append(' '); formatProtocolVersion(buffer, reqline.getProtocolVersion()); }
private void writeTrailers() throws IOException { final List<? extends Header> trailers = this.trailerSupplier != null ? this.trailerSupplier.get() : null; if (trailers != null) { for (int i = 0; i < trailers.size(); i++) { final Header header = trailers.get(i); if (header instanceof FormattedHeader) { final CharArrayBuffer chbuffer = ((FormattedHeader) header).getBuffer(); this.buffer.writeLine(chbuffer, this.outputStream); } else { this.lineBuffer.clear(); BasicLineFormatter.INSTANCE.formatHeader(this.lineBuffer, header); this.buffer.writeLine(this.lineBuffer, this.outputStream); } } } }
@Test public void testHttpVersionFormatting() throws Exception { final CharArrayBuffer buf = new CharArrayBuffer(64); this.formatter.formatProtocolVersion(buf, HttpVersion.HTTP_1_1); Assert.assertEquals("HTTP/1.1", buf.toString()); }
@Test public void testHeaderFormattingInvalidInput() throws Exception { final CharArrayBuffer buf = new CharArrayBuffer(64); final Header header = new BasicHeader("name", "value"); try { this.formatter.formatHeader(null, header); Assert.fail("IllegalArgumentException should habe been thrown"); } catch (final IllegalArgumentException ex) { // expected } try { this.formatter.formatHeader(buf, null); Assert.fail("IllegalArgumentException should habe been thrown"); } catch (final IllegalArgumentException ex) { // expected } }
@Test public void testHeaderFormatting() throws Exception { final CharArrayBuffer buf = new CharArrayBuffer(64); final Header header1 = new BasicHeader("name", "value"); this.formatter.formatHeader(buf, header1); Assert.assertEquals("name: value", buf.toString()); buf.clear(); final Header header2 = new BasicHeader("name", null); this.formatter.formatHeader(buf, header2); Assert.assertEquals("name: ", buf.toString()); }
@Test public void testHeaderFormattingRequestSplitting() throws Exception { final CharArrayBuffer buf = new CharArrayBuffer(64); final Header header = new BasicHeader("Host", "apache.org\r\nOops: oops"); formatter.formatHeader(buf, header); final String s = buf.toString(); Assert.assertFalse(s.contains("\n")); Assert.assertEquals("Host: apache.org Oops: oops", s); } }