Mercurial > dive4elements > framework
view artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactSerializer.java @ 66:89e3de0ee05f
Implemented some methods to get access to ArtifactFactories which are stored in the ArtifactDatabase.
artifacts/trunk@546 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Fri, 15 Jan 2010 17:39:32 +0000 |
parents | 5e4bc24ea438 |
children | 48d1a9a082c2 |
line wrap: on
line source
package de.intevation.artifactdatabase; import de.intevation.artifacts.Artifact; import de.intevation.artifacts.ArtifactSerializer; import java.io.InputStream; import java.io.IOException; import java.io.OutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.ByteArrayOutputStream; import java.io.ByteArrayInputStream; import java.util.zip.GZIPOutputStream; import java.util.zip.GZIPInputStream; import org.apache.log4j.Logger; /** * @author Sascha L. Teichmann (sascha.teichmann@intevation.de) */ public class DefaultArtifactSerializer implements ArtifactSerializer { private static Logger logger = Logger.getLogger(DefaultArtifactSerializer.class); public static final ArtifactSerializer INSTANCE = new DefaultArtifactSerializer(); public DefaultArtifactSerializer() { } public Artifact fromBytes(byte [] bytes) { if (bytes == null) { return null; } ObjectInputStream ois = null; try { ByteArrayInputStream bis = new ByteArrayInputStream(bytes); GZIPInputStream gis = new GZIPInputStream(bis); ois = getObjectInputStream(gis); return (Artifact)ois.readObject(); } catch (IOException ioe) { logger.error(ioe.getLocalizedMessage(), ioe); } catch (ClassNotFoundException cnfe) { logger.error(cnfe.getLocalizedMessage(), cnfe); } catch (ClassCastException cce) { logger.error(cce.getLocalizedMessage(), cce); } finally { if (ois != null) { try { ois.close(); } catch (IOException ioe) { } } } return null; } public byte [] toBytes(Artifact artifact) { try { ByteArrayOutputStream bos = new ByteArrayOutputStream(); GZIPOutputStream gos = new GZIPOutputStream(bos); ObjectOutputStream oos = getObjectOutputStream(gos); oos.writeObject(artifact); oos.flush(); oos.close(); return bos.toByteArray(); } catch (IOException ioe) { logger.error(ioe.getLocalizedMessage(), ioe); throw new RuntimeException(ioe); } } protected ObjectInputStream getObjectInputStream(InputStream is) throws IOException { return new ObjectInputStream(is); } protected ObjectOutputStream getObjectOutputStream(OutputStream os) throws IOException { return new ObjectOutputStream(os); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8: