package org.jboss.resteasy.util;

A CharSequence backed by a char[] (no copy on creation)
/** * A CharSequence backed by a char[] (no copy on creation) * */
public class ArrayCharSequence implements CharSequence { private final char[] buf; private final int offset; private final int count; public ArrayCharSequence(final char[] buff) { this(buff, 0, buff.length); } public ArrayCharSequence(final char[] buff, final int count) { this(buff, 0, count); } public ArrayCharSequence(final char[] buff, final int offset, final int count) { this.buf = buff; this.offset = offset; this.count = count; } public char charAt(int index) { if (index < 0 || index >= count) { throw new StringIndexOutOfBoundsException(index); } return buf[offset + index]; } public int length() { return count; } public CharSequence subSequence(int beginIndex, int endIndex) { if (beginIndex < 0) { throw new StringIndexOutOfBoundsException(beginIndex); } if (endIndex > count) { throw new StringIndexOutOfBoundsException(endIndex); } if (beginIndex > endIndex) { throw new StringIndexOutOfBoundsException(endIndex - beginIndex); } return ((beginIndex == 0) && (endIndex == count)) ? this : new ArrayCharSequence(buf, offset + beginIndex, endIndex - beginIndex); } public String toString() { return new String(this.buf, this.offset, this.count); } }