CombinedEntity(final HttpEntity entity, final ByteArrayBuffer buf) throws IOException { super(); this.entity = entity; this.combinedStream = new SequenceInputStream( new ByteArrayInputStream(buf.array(), 0, buf.length()), entity.getContent()); }
@Override public HttpCacheEntry createCacheEntry( final HttpHost host, final HttpRequest request, final HttpResponse originResponse, final ByteArrayBuffer content, final Date requestSent, final Date responseReceived) { if (log.isDebugEnabled()) { log.debug("Create cache entry: " + host + "; " + new RequestLine(request)); } final String cacheKey = cacheKeyGenerator.generateKey(host, request); try { final HttpCacheEntry entry = cacheUpdateHandler.createtCacheEntry(request, originResponse, content, requestSent, responseReceived); storeInCache(cacheKey, host, request, entry); return entry; } catch (final ResourceIOException ex) { if (log.isWarnEnabled()) { log.warn("I/O error creating cache entry with key " + cacheKey); } return new HttpCacheEntry( requestSent, responseReceived, originResponse.getCode(), originResponse.getHeaders(), content != null ? HeapResourceFactory.INSTANCE.generate(null, content.array(), 0, content.length()) : null); } }
/** * Creates a cache entry for the given request, origin response message and response content. */ public HttpCacheEntry createtCacheEntry( final HttpRequest request, final HttpResponse originResponse, final ByteArrayBuffer content, final Date requestSent, final Date responseReceived) throws ResourceIOException { return new HttpCacheEntry( requestSent, responseReceived, originResponse.getCode(), originResponse.getHeaders(), content != null ? resourceFactory.generate(request.getRequestUri(), content.array(), 0, content.length()) : null); }
originResponse.getCode(), originResponse.getHeaders(), content != null ? HeapResourceFactory.INSTANCE.generate(null, content.array(), 0, content.length()) : null)); return Operations.nonCancellable();
@Override public int length() { return this.buffer.length(); }
@Override public int length() { return this.buffer.length(); }
static void writeBytes( final ByteArrayBuffer b, final OutputStream out) throws IOException { out.write(b.array(), 0, b.length()); }
ByteBuffer getContent() { return ByteBuffer.wrap(headerBuffer.array(), 0, headerBuffer.length()); }
CombinedEntity(final HttpEntity entity, final ByteArrayBuffer buf) throws IOException { super(); this.entity = entity; this.combinedStream = new SequenceInputStream( new ByteArrayInputStream(buf.array(), 0, buf.length()), entity.getContent()); }
void copyPayload(final ByteBuffer payload) { if (payload == null) { return; } headerBuffer.ensureCapacity(payload.remaining()); payload.get(headerBuffer.array(), headerBuffer.length(), payload.remaining()); }
private void flushBuffer(final OutputStream outputStream) throws IOException { final int len = this.buffer.length(); if (len > 0) { outputStream.write(this.buffer.array(), 0, len); this.buffer.clear(); this.metrics.incrementBytesTransferred(len); } }
private void flushBuffer(final OutputStream outputStream) throws IOException { final int len = this.buffer.length(); if (len > 0) { outputStream.write(this.buffer.array(), 0, len); this.buffer.clear(); this.metrics.incrementBytesTransferred(len); } }
@Test public void testSetLength() throws Exception { final ByteArrayBuffer buffer = new ByteArrayBuffer(4); buffer.setLength(2); Assert.assertEquals(2, buffer.length()); }
@Test public void testAppendNullCharArray() throws Exception { final ByteArrayBuffer buffer = new ByteArrayBuffer(8); buffer.append((char[])null, 0, 0); Assert.assertEquals(0, buffer.length()); }
@Test public void testAppendEmptyCharArray() throws Exception { final ByteArrayBuffer buffer = new ByteArrayBuffer(8); buffer.append(new char[] {}, 0, 0); Assert.assertEquals(0, buffer.length()); }
@Test public void testAppendNullCharArrayBuffer() throws Exception { final ByteArrayBuffer buffer = new ByteArrayBuffer(8); buffer.append((CharArrayBuffer)null, 0, 0); Assert.assertEquals(0, buffer.length()); }
@Test public void testExpandAppend() throws Exception { final ByteArrayBuffer buffer = new ByteArrayBuffer(4); Assert.assertEquals(4, buffer.capacity()); final byte[] tmp = new byte[] { 1, 2, 3, 4}; buffer.append(tmp, 0, 2); buffer.append(tmp, 0, 4); buffer.append(tmp, 0, 0); Assert.assertEquals(8, buffer.capacity()); Assert.assertEquals(6, buffer.length()); buffer.append(tmp, 0, 4); Assert.assertEquals(16, buffer.capacity()); Assert.assertEquals(10, buffer.length()); }
@Test public void testAppendOneByte() throws Exception { final ByteArrayBuffer buffer = new ByteArrayBuffer(4); Assert.assertEquals(4, buffer.capacity()); final byte[] tmp = new byte[] { 1, 127, -1, -128, 1, -2}; for (final byte element : tmp) { buffer.append(element); } Assert.assertEquals(8, buffer.capacity()); Assert.assertEquals(6, buffer.length()); for (int i = 0; i < tmp.length; i++) { Assert.assertEquals(tmp[i], buffer.byteAt(i)); } }
@Test public void testConstructor() throws Exception { final ByteArrayBuffer buffer = new ByteArrayBuffer(16); Assert.assertEquals(16, buffer.capacity()); Assert.assertEquals(0, buffer.length()); Assert.assertNotNull(buffer.array()); Assert.assertEquals(16, buffer.array().length); try { new ByteArrayBuffer(-1); Assert.fail("IllegalArgumentException should have been thrown"); } catch (final IllegalArgumentException ex) { // expected } }