package org.odata4j.internal;
import java.io.FilterReader;
import java.io.IOException;
import java.io.Reader;
import java.nio.CharBuffer;
public class BOMWorkaroundReader extends FilterReader {
private boolean first = true;
public BOMWorkaroundReader(Reader arg0) {
super(arg0);
}
@Override
public int read() throws IOException {
return super.read();
}
@Override
public int read(char[] cbuf) throws IOException {
return super.read(cbuf);
}
@Override
public int read(char[] cbuf, int off, int len) throws IOException {
if (first) {
char[] buffer = new char[cbuf.length];
int rt = super.read(buffer, off, len);
if (rt > 0) {
int bufferOff = off;
int bufferLen = len;
if (buffer[bufferOff] == '\uFEFF') {
bufferOff++;
bufferLen--;
rt--;
}
System.arraycopy(buffer, bufferOff, cbuf, off, bufferLen);
first = false;
return rt;
}
}
return super.read(cbuf, off, len);
}
@Override
public int read(CharBuffer target) throws IOException {
return super.read(target);
}
}