X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2Fserial%2FSerialUtils.java;h=6f851731fd034541b912d71046b0375e8ee7422b;hb=f8147a0ee57317e96d9ff0bf19573f7168d0354c;hp=a6a02a8e06205cb5996b0a94c1124056ce2cbf60;hpb=08f80ac5fa60738d3ad74c4b5390a0b79ae313d4;p=nikiroo-utils.git diff --git a/src/be/nikiroo/utils/serial/SerialUtils.java b/src/be/nikiroo/utils/serial/SerialUtils.java index a6a02a8..6f85173 100644 --- a/src/be/nikiroo/utils/serial/SerialUtils.java +++ b/src/be/nikiroo/utils/serial/SerialUtils.java @@ -5,7 +5,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.NotSerializableException; import java.io.OutputStream; -import java.io.UnsupportedEncodingException; import java.lang.reflect.Array; import java.lang.reflect.Constructor; import java.lang.reflect.Field; @@ -20,6 +19,8 @@ import java.util.UnknownFormatConversionException; import be.nikiroo.utils.IOUtils; import be.nikiroo.utils.Image; import be.nikiroo.utils.StringUtils; +import be.nikiroo.utils.streams.Base64InputStream; +import be.nikiroo.utils.streams.Base64OutputStream; import be.nikiroo.utils.streams.NextableInputStream; import be.nikiroo.utils.streams.NextableInputStreamStep; @@ -80,9 +81,9 @@ public class SerialUtils { try { // TODO: bad escaping? write(out, "B64:"); - OutputStream bout = StringUtils.base64(out, - false, false); - new Exporter(bout).append(item); + OutputStream out64 = new Base64OutputStream( + out, true); + new Exporter(out64).append(item); } catch (NotSerializableException e) { throw new UnknownFormatConversionException(e .getMessage()); @@ -140,7 +141,7 @@ public class SerialUtils { val = ((URL) value).toString(); } - out.write(val.getBytes("UTF-8")); + out.write(StringUtils.getBytes(val)); } @Override @@ -165,7 +166,7 @@ public class SerialUtils { protected void toStream(OutputStream out, Object value) throws IOException { Image img = (Image) value; - OutputStream encoded = StringUtils.base64(out, false, false); + OutputStream encoded = new Base64OutputStream(out, true); try { InputStream in = img.newInputStream(); try { @@ -188,7 +189,7 @@ public class SerialUtils { protected Object fromStream(InputStream in) throws IOException { try { // Cannot close it! - InputStream decoded = StringUtils.unbase64(in, false); + InputStream decoded = new Base64InputStream(in, false); return new Image(decoded); } catch (IOException e) { throw new UnknownFormatConversionException(e.getMessage()); @@ -479,7 +480,7 @@ public class SerialUtils { if (customTypes.containsKey(type)) { // TODO: we should start with a stream InputStream streamEncodedValue = new ByteArrayInputStream( - encodedValue.getBytes("UTF-8")); + StringUtils.getBytes(encodedValue)); try { return customTypes.get(type).decode(streamEncodedValue); } finally { @@ -534,12 +535,7 @@ public class SerialUtils { * in case of I/O error */ static void write(OutputStream out, Object data) throws IOException { - try { - out.write(data.toString().getBytes("UTF-8")); - } catch (UnsupportedEncodingException e) { - // A conforming JVM is required to support UTF-8 - e.printStackTrace(); - } + out.write(StringUtils.getBytes(data.toString())); } /**