package aQute.lib.json; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.StringReader; import java.lang.reflect.Type; import java.util.Map; import aQute.lib.base64.Base64; import aQute.lib.io.IO; public class FileHandler extends Handler { @Override public void encode(Encoder app, Object object, Map<Object,Type> visited) throws IOException, Exception { File f = (File) object; if (!f.isFile()) throw new RuntimeException("Encoding a file requires the file to exist and to be a normal file " + f); try (InputStream in = IO.stream(f)) { app.append('"'); Base64.encode(in, app); app.append('"'); } } @Override public Object decode(Decoder dec, String s) throws Exception { File tmp = File.createTempFile("json", ".bin"); try (OutputStream fout = IO.outputStream(tmp)) { Base64.decode(new StringReader(s), fout); } return tmp; } }