public void testDecodersCache() { final CharsetDecoder decoder0 = Charsets.getCharsetDecoder(charsets[0]); final CharsetDecoder decoder1 = Charsets.getCharsetDecoder(charsets[1]); final CharsetDecoder decoder2 = Charsets.getCharsetDecoder(charsets[2]); final CharsetDecoder decoder3 = Charsets.getCharsetDecoder(charsets[3]); assertTrue("Decoder is not the same", decoder0 == Charsets.getCharsetDecoder(charsets[0])); assertTrue("Decoder is not the same", decoder1 == Charsets.getCharsetDecoder(charsets[1])); assertTrue("Decoder is not the same", decoder2 == Charsets.getCharsetDecoder(charsets[2])); assertTrue("Decoder is not the same", decoder3 == Charsets.getCharsetDecoder(charsets[3])); final CharsetDecoder decoder4 = Charsets.getCharsetDecoder(charsets[4]); assertTrue("Decoder should be different", decoder0 != Charsets.getCharsetDecoder(charsets[0])); assertTrue("Decoder is not the same", decoder4 == Charsets.getCharsetDecoder(charsets[4])); }
/** * Set {@link ByteChunk} content to CharChunk using given {@link Charset}. * @throws CharConversionException */ public void set(final ByteChunk byteChunk, final Charset encoding) throws CharConversionException { final int bufferStart = byteChunk.getStart(); final int bufferLength = byteChunk.getLength(); allocate(bufferLength, -1); final byte[] buffer = byteChunk.getBuffer(); if (!DEFAULT_HTTP_CHARSET.equals(encoding)) { final ByteBuffer bb = ByteBuffer.wrap(buffer, bufferStart, bufferLength); final CharBuffer cb = CharBuffer.wrap(buff, start, buff.length - start); final CharsetDecoder decoder = Charsets.getCharsetDecoder(encoding); final CoderResult cr = decoder.decode(bb, cb, true); if (cr != CoderResult.UNDERFLOW) { throw new CharConversionException("Decoding error"); } end = start + cb.position(); return; } // Default encoding: fast conversion for (int i = 0; i < bufferLength; i++) { buff[i] = (char) (buffer[i + bufferStart] & 0xff); } end = bufferLength; }
/** * Set {@link ByteChunk} content to CharChunk using given {@link Charset}. * @throws CharConversionException */ public void set(final ByteChunk byteChunk, final Charset encoding) throws CharConversionException { final int bufferStart = byteChunk.getStart(); final int bufferLength = byteChunk.getLength(); allocate(bufferLength, -1); final byte[] buffer = byteChunk.getBuffer(); if (!DEFAULT_HTTP_CHARSET.equals(encoding)) { final ByteBuffer bb = ByteBuffer.wrap(buffer, bufferStart, bufferLength); final CharBuffer cb = CharBuffer.wrap(buff, start, buff.length - start); final CharsetDecoder decoder = Charsets.getCharsetDecoder(encoding); final CoderResult cr = decoder.decode(bb, cb, true); if (cr != CoderResult.UNDERFLOW) { throw new CharConversionException("Decoding error"); } end = start + cb.position(); return; } // Default encoding: fast conversion for (int i = 0; i < bufferLength; i++) { buff[i] = (char) (buffer[i + bufferStart] & 0xff); } end = bufferLength; }
/** * Set {@link ByteChunk} content to CharChunk using given {@link Charset}. * @throws CharConversionException */ public void set(final ByteChunk byteChunk, final Charset encoding) throws CharConversionException { final int bufferStart = byteChunk.getStart(); final int bufferLength = byteChunk.getLength(); allocate(bufferLength, -1); final byte[] buffer = byteChunk.getBuffer(); if (!DEFAULT_HTTP_CHARSET.equals(encoding)) { final ByteBuffer bb = ByteBuffer.wrap(buffer, bufferStart, bufferLength); final CharBuffer cb = CharBuffer.wrap(buff, start, buff.length - start); final CharsetDecoder decoder = Charsets.getCharsetDecoder(encoding); final CoderResult cr = decoder.decode(bb, cb, true); if (cr != CoderResult.UNDERFLOW) { throw new CharConversionException("Decoding error"); } end = start + cb.position(); return; } // Default encoding: fast conversion for (int i = 0; i < bufferLength; i++) { buff[i] = (char) (buffer[i + bufferStart] & 0xff); } end = bufferLength; }
/** * Set {@link ByteChunk} content to CharChunk using given {@link Charset}. * @throws CharConversionException */ public void set(final ByteChunk byteChunk, final Charset encoding) throws CharConversionException { final int bufferStart = byteChunk.getStart(); final int bufferLength = byteChunk.getLength(); allocate(bufferLength, -1); final byte[] buffer = byteChunk.getBuffer(); if (!DEFAULT_HTTP_CHARSET.equals(encoding)) { final ByteBuffer bb = ByteBuffer.wrap(buffer, bufferStart, bufferLength); final CharBuffer cb = CharBuffer.wrap(buff, start, buff.length - start); final CharsetDecoder decoder = Charsets.getCharsetDecoder(encoding); final CoderResult cr = decoder.decode(bb, cb, true); if (cr != CoderResult.UNDERFLOW) { throw new CharConversionException("Decoding error"); } end = start + cb.position(); return; } // Default encoding: fast conversion for (int i = 0; i < bufferLength; i++) { buff[i] = (char) (buffer[i + bufferStart] & 0xff); } end = bufferLength; }
/** * Set {@link ByteChunk} content to CharChunk using given {@link Charset}. * @throws CharConversionException */ public void set(final ByteChunk byteChunk, final Charset encoding) throws CharConversionException { final int bufferStart = byteChunk.getStart(); final int bufferLength = byteChunk.getLength(); allocate(bufferLength, -1); final byte[] buffer = byteChunk.getBuffer(); if (!DEFAULT_HTTP_CHARSET.equals(encoding)) { final ByteBuffer bb = ByteBuffer.wrap(buffer, bufferStart, bufferLength); final CharBuffer cb = CharBuffer.wrap(buff, start, buff.length - start); final CharsetDecoder decoder = Charsets.getCharsetDecoder(encoding); final CoderResult cr = decoder.decode(bb, cb, true); if (cr != CoderResult.UNDERFLOW) { throw new CharConversionException("Decoding error"); } end = start + cb.position(); return; } // Default encoding: fast conversion for (int i = 0; i < bufferLength; i++) { buff[i] = (char) (buffer[i + bufferStart] & 0xff); } end = bufferLength; }
/** * Set {@link ByteChunk} content to CharChunk using given {@link Charset}. * @throws CharConversionException */ public void set(final ByteChunk byteChunk, final Charset encoding) throws CharConversionException { final int bufferStart = byteChunk.getStart(); final int bufferLength = byteChunk.getLength(); allocate(bufferLength, -1); final byte[] buffer = byteChunk.getBuffer(); if (!DEFAULT_HTTP_CHARSET.equals(encoding)) { final ByteBuffer bb = ByteBuffer.wrap(buffer, bufferStart, bufferLength); final CharBuffer cb = CharBuffer.wrap(buff, start, buff.length - start); final CharsetDecoder decoder = Charsets.getCharsetDecoder(encoding); final CoderResult cr = decoder.decode(bb, cb, true); if (cr != CoderResult.UNDERFLOW) { throw new CharConversionException("Decoding error"); } end = start + cb.position(); return; } // Default encoding: fast conversion for (int i = 0; i < bufferLength; i++) { buff[i] = (char) (buffer[i + bufferStart] & 0xff); } end = bufferLength; }
/** * Set {@link ByteChunk} content to CharChunk using given {@link Charset}. * @throws CharConversionException */ public void set(final ByteChunk byteChunk, final Charset encoding) throws CharConversionException { final int bufferStart = byteChunk.getStart(); final int bufferLength = byteChunk.getLength(); allocate(bufferLength, -1); final byte[] buffer = byteChunk.getBuffer(); if (!DEFAULT_HTTP_CHARSET.equals(encoding)) { final ByteBuffer bb = ByteBuffer.wrap(buffer, bufferStart, bufferLength); final CharBuffer cb = CharBuffer.wrap(buff, start, buff.length - start); final CharsetDecoder decoder = Charsets.getCharsetDecoder(encoding); final CoderResult cr = decoder.decode(bb, cb, true); if (cr != CoderResult.UNDERFLOW) { throw new CharConversionException("Decoding error"); } end = start + cb.position(); return; } // Default encoding: fast conversion for (int i = 0; i < bufferLength; i++) { buff[i] = (char) (buffer[i + bufferStart] & 0xff); } end = bufferLength; }
/** * Set {@link ByteChunk} content to CharChunk using given {@link Charset}. * @throws CharConversionException */ public void set(final ByteChunk byteChunk, final Charset encoding) throws CharConversionException { final int bufferStart = byteChunk.getStart(); final int bufferLength = byteChunk.getLength(); allocate(bufferLength, -1); final byte[] buffer = byteChunk.getBuffer(); if (!DEFAULT_HTTP_CHARSET.equals(encoding)) { final ByteBuffer bb = ByteBuffer.wrap(buffer, bufferStart, bufferLength); final CharBuffer cb = CharBuffer.wrap(buff, start, buff.length - start); final CharsetDecoder decoder = Charsets.getCharsetDecoder(encoding); final CoderResult cr = decoder.decode(bb, cb, true); if (cr != CoderResult.UNDERFLOW) { throw new CharConversionException("Decoding error"); } end = start + cb.position(); return; } // Default encoding: fast conversion for (int i = 0; i < bufferLength; i++) { buff[i] = (char) (buffer[i + bufferStart] & 0xff); } end = bufferLength; }
/** * Set {@link ByteChunk} content to CharChunk using given {@link Charset}. * @throws CharConversionException */ public void set(final ByteChunk byteChunk, final Charset encoding) throws CharConversionException { final int bufferStart = byteChunk.getStart(); final int bufferLength = byteChunk.getLength(); allocate(bufferLength, -1); final byte[] buffer = byteChunk.getBuffer(); if (!DEFAULT_HTTP_CHARSET.equals(encoding)) { final ByteBuffer bb = ByteBuffer.wrap(buffer, bufferStart, bufferLength); final CharBuffer cb = CharBuffer.wrap(buff, start, buff.length - start); final CharsetDecoder decoder = Charsets.getCharsetDecoder(encoding); final CoderResult cr = decoder.decode(bb, cb, true); if (cr != CoderResult.UNDERFLOW) { throw new CharConversionException("Decoding error"); } end = start + cb.position(); return; } // Default encoding: fast conversion for (int i = 0; i < bufferLength; i++) { buff[i] = (char) (buffer[i + bufferStart] & 0xff); } end = bufferLength; }
/** * Set {@link ByteChunk} content to CharChunk using given {@link Charset}. * @throws CharConversionException */ public void set(final ByteChunk byteChunk, final Charset encoding) throws CharConversionException { final int bufferStart = byteChunk.getStart(); final int bufferLength = byteChunk.getLength(); allocate(bufferLength, -1); final byte[] buffer = byteChunk.getBuffer(); if (!DEFAULT_HTTP_CHARSET.equals(encoding)) { final ByteBuffer bb = ByteBuffer.wrap(buffer, bufferStart, bufferLength); final CharBuffer cb = CharBuffer.wrap(buff, start, buff.length - start); final CharsetDecoder decoder = Charsets.getCharsetDecoder(encoding); final CoderResult cr = decoder.decode(bb, cb, true); if (cr != CoderResult.UNDERFLOW) { throw new CharConversionException("Decoding error"); } end = start + cb.position(); return; } // Default encoding: fast conversion for (int i = 0; i < bufferLength; i++) { buff[i] = (char) (buffer[i + bufferStart] & 0xff); } end = bufferLength; }
final CharBuffer cb = CharBuffer.wrap(buff, start, buff.length - start); final CharsetDecoder decoder = Charsets.getCharsetDecoder(encoding); final CoderResult cr = decoder.decode(bb, cb, true);
final CharBuffer cb = CharBuffer.wrap(buff, start, buff.length - start); final CharsetDecoder decoder = Charsets.getCharsetDecoder(encoding); final CoderResult cr = decoder.decode(bb, cb, true);
final CharBuffer cb = CharBuffer.wrap(buff, start, buff.length - start); final CharsetDecoder decoder = Charsets.getCharsetDecoder(encoding); final CoderResult cr = decoder.decode(bb, cb, true);
final CharBuffer cb = CharBuffer.wrap(buff, start, buff.length - start); final CharsetDecoder decoder = Charsets.getCharsetDecoder(encoding); final CoderResult cr = decoder.decode(bb, cb, true);
final CharBuffer cb = CharBuffer.wrap(buff, start, buff.length - start); final CharsetDecoder decoder = Charsets.getCharsetDecoder(encoding); final CoderResult cr = decoder.decode(bb, cb, true);
final CharBuffer cb = CharBuffer.wrap(buff, start, buff.length - start); final CharsetDecoder decoder = Charsets.getCharsetDecoder(encoding); final CoderResult cr = decoder.decode(bb, cb, true);
final CharBuffer cb = CharBuffer.wrap(buff, start, buff.length - start); final CharsetDecoder decoder = Charsets.getCharsetDecoder(encoding); final CoderResult cr = decoder.decode(bb, cb, true);
final CharBuffer cb = CharBuffer.wrap(buff, start, buff.length - start); final CharsetDecoder decoder = Charsets.getCharsetDecoder(encoding); final CoderResult cr = decoder.decode(bb, cb, true);
@Test public void testBulkByteBufferGetWithEmptyBuffers() throws Exception { BuffersBuffer b = BuffersBuffer.create(mm); b.append(Buffers.wrap(mm, "Hello ")); b.append(BuffersBuffer.create(mm)); b.append(Buffers.wrap(mm, "world!")); ByteBuffer buffer = ByteBuffer.allocate(12); b.get(buffer); buffer.flip(); assertEquals("Hello world!", Charsets.getCharsetDecoder(Charsets.UTF8_CHARSET).decode(buffer).toString()); }