aQute.lib.codec.HCodec Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of biz.aQute.bndlib Show documentation
Show all versions of biz.aQute.bndlib Show documentation
bndlib: A Swiss Army Knife for OSGi
package aQute.lib.codec;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.lang.reflect.Type;
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 decode(InputStream in, Class t) throws Exception {
return t.cast(decode(in, (Type) t));
}
public T decode(Reader in, Class 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 decode(File in, Class 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();
}
}
}