blob: c174e52d0ed7d3d45ecb052cdecab1e3ab7b4cec [file] [log] [blame]
package aQute.lib.codec;
import java.io.*;
import java.lang.reflect.*;
public class HCodec implements Codec {
final Codec codec;
public HCodec(Codec codec) {
this.codec = codec;
}
public Object decode(Reader in, Type type) throws Exception {
return codec.decode(in, type);
}
public <T> T decode(InputStream in, Class<T> t) throws Exception {
return t.cast(decode(in, (Type) t));
}
public <T> T decode(Reader in, Class<T> t) throws Exception {
return t.cast(decode(in, (Type) t));
}
public Object decode(InputStream in, Type t) throws Exception {
InputStreamReader r = new InputStreamReader(in, "UTF-8");
return codec.decode(r, t);
}
public void encode(Type t, Object o, Appendable out) throws Exception {
codec.encode(t, o, out);
}
public void encode(Type t, Object o, OutputStream out) throws Exception {
OutputStreamWriter wr = new OutputStreamWriter(out, "UTF-8");
try {
codec.encode(t, o, wr);
}
finally {
wr.flush();
}
}
public <T> T decode(File in, Class<T> t) throws Exception {
FileInputStream fin = new FileInputStream(in);
try {
InputStreamReader rdr = new InputStreamReader(fin, "UTF-8");
try {
return t.cast(decode(rdr, t));
}
finally {
rdr.close();
}
}
finally {
fin.close();
}
}
public void encode(Type t, Object o, File out) throws Exception {
OutputStream oout = new FileOutputStream(out);
try {
Writer wr = new OutputStreamWriter(oout, "UTF-8");
try {
codec.encode(t, o, wr);
}
finally {
wr.close();
}
}
finally {
oout.close();
}
}
}