/** * @author emerix * @file ToolStream.java * @datecreation Oct 28, 2009 */ package com.rafali.flickruploader; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutput; import java.io.ObjectOutputStream; import java.nio.ByteBuffer; import java.util.Arrays; import java.util.zip.GZIPInputStream; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.rafali.common.Base64UrlSafe; import com.rafali.common.ToolString; /** * */ public class ToolStream { private static final Logger logger = LoggerFactory.getLogger(ToolStream.class.getPackage().getName()); public static byte[] readBytes(InputStream in) { ByteBuffer buff = ByteBuffer.allocate(1 << 20); byte[] tmp = new byte[1 << 14]; int size = 0; while (true) { int r; try { r = in.read(tmp); } catch (IOException e) { throw new IllegalStateException(e); } if (r == -1) break; buff.put(tmp, 0, r); size += r; } return Arrays.copyOfRange(buff.array(), 0, size); } static byte[] toBytes(Object object) { try { ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(bos); out.writeObject(object); return bos.toByteArray(); } catch (IOException e) { logger.error("IOException : " + ToolString.stack2string(e)); } return null; } public static String encode(Object object) { try { ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutput out = new ObjectOutputStream(bos); out.writeObject(object); out.close(); byte[] buf = bos.toByteArray(); String base64 = new String(Base64UrlSafe.encodeBase64(buf)); return base64; } catch (IOException e) { logger.error("IOException : " + e.getMessage()); } return null; } @SuppressWarnings("unchecked") public static <T> T decodeGzip(String response) { try { byte[] bytes = Base64UrlSafe.decodeBase64(response.getBytes()); ObjectInputStream in = new ObjectInputStream(new GZIPInputStream(new ByteArrayInputStream(bytes))); T readObject = (T) in.readObject(); in.close(); return readObject; } catch (IOException e) { logger.error("IOException : " + e.getMessage()); } catch (ClassNotFoundException e) { logger.error("ClassNotFoundException : " + e.getMessage()); } return null; } public static String convertStreamToString(java.io.InputStream is) { java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A"); return s.hasNext() ? s.next() : ""; } }