sascha@41: package de.intevation.artifactdatabase; sascha@41: sascha@41: import de.intevation.artifacts.Artifact; sascha@41: import de.intevation.artifacts.ArtifactSerializer; sascha@41: sascha@41: import java.io.InputStream; sascha@41: import java.io.IOException; sascha@41: import java.io.OutputStream; sascha@41: import java.io.ObjectInputStream; sascha@41: import java.io.ObjectOutputStream; sascha@41: import java.io.ByteArrayOutputStream; sascha@41: import java.io.ByteArrayInputStream; sascha@41: sascha@41: import java.util.zip.GZIPOutputStream; sascha@41: import java.util.zip.GZIPInputStream; sascha@41: sascha@41: import org.apache.log4j.Logger; sascha@41: sascha@41: /** sascha@41: * @author Sascha L. Teichmann (sascha.teichmann@intevation.de) sascha@41: */ sascha@41: public class DefaultArtifactSerializer sascha@41: implements ArtifactSerializer sascha@41: { sascha@41: private static Logger logger = sascha@41: Logger.getLogger(DefaultArtifactSerializer.class); sascha@41: sascha@41: public static final ArtifactSerializer INSTANCE = sascha@41: new DefaultArtifactSerializer(); sascha@41: sascha@41: public DefaultArtifactSerializer() { sascha@41: } sascha@41: sascha@41: public Artifact fromBytes(byte [] bytes) { sascha@41: sascha@41: if (bytes == null) { sascha@41: return null; sascha@41: } sascha@41: sascha@41: ObjectInputStream ois = null; sascha@41: sascha@41: try { sascha@41: ByteArrayInputStream bis = new ByteArrayInputStream(bytes); sascha@41: GZIPInputStream gis = new GZIPInputStream(bis); sascha@41: ois = getObjectInputStream(gis); sascha@41: sascha@41: return (Artifact)ois.readObject(); sascha@41: } sascha@41: catch (IOException ioe) { sascha@41: logger.error(ioe.getLocalizedMessage(), ioe); sascha@41: } sascha@41: catch (ClassNotFoundException cnfe) { sascha@41: logger.error(cnfe.getLocalizedMessage(), cnfe); sascha@41: } sascha@41: catch (ClassCastException cce) { sascha@41: logger.error(cce.getLocalizedMessage(), cce); sascha@41: } sascha@41: finally { sascha@41: if (ois != null) { sascha@41: try { ois.close(); } sascha@41: catch (IOException ioe) { } sascha@41: } sascha@41: } sascha@41: sascha@41: return null; sascha@41: } sascha@41: sascha@41: public byte [] toBytes(Artifact artifact) { sascha@41: try { sascha@41: ByteArrayOutputStream bos = new ByteArrayOutputStream(); sascha@41: GZIPOutputStream gos = new GZIPOutputStream(bos); sascha@41: ObjectOutputStream oos = getObjectOutputStream(gos); sascha@41: sascha@41: oos.writeObject(artifact); sascha@41: oos.flush(); sascha@41: oos.close(); sascha@41: sascha@41: return bos.toByteArray(); sascha@41: } sascha@41: catch (IOException ioe) { sascha@41: logger.error(ioe.getLocalizedMessage(), ioe); sascha@41: throw new RuntimeException(ioe); sascha@41: } sascha@41: } sascha@41: sascha@41: protected ObjectInputStream getObjectInputStream(InputStream is) sascha@41: throws IOException sascha@41: { sascha@41: return new ObjectInputStream(is); sascha@41: } sascha@41: sascha@41: protected ObjectOutputStream getObjectOutputStream(OutputStream os) sascha@41: throws IOException sascha@41: { sascha@41: return new ObjectOutputStream(os); sascha@41: } sascha@41: } sascha@41: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8: