All Downloads are FREE. Search and download functionalities are using the official Maven repository.

aQute.lib.codec.HCodec Maven / Gradle / Ivy

There is a newer version: 7.0.0
Show newest version
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();
		}
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy