All Downloads are FREE. Search and download functionalities are using the official Maven repository.

nablarch.common.web.session.encoder.JaxbStateEncoder Maven / Gradle / Ivy

There is a newer version: 2.2.0
Show newest version
package nablarch.common.web.session.encoder;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

import javax.xml.bind.JAXB;

import nablarch.common.web.session.EncodeException;
import nablarch.common.web.session.StateEncoder;
import nablarch.core.util.FileUtil;

/**
 * JAXBを使用した{@link StateEncoder}実装クラス。
 * 

* XMLベースのためJVMに依存せずに直列化を行うことができる。
* ただし、パフォーマンス及びデータサイズの面で{@link JavaSerializeStateEncoder}に劣るため、 * 本クラスを使用する場面は限られる。 * * @author kawasima * @author tajima */ public class JaxbStateEncoder implements StateEncoder { @Override public byte[] encode(T obj) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); OutputStreamWriter writer = null; try { writer = new OutputStreamWriter(baos, "UTF-8"); JAXB.marshal(obj, writer); return baos.toByteArray(); } catch (IOException ex) { throw new EncodeException(ex); } finally { FileUtil.closeQuietly(writer); } } @Override public T decode(byte[] dmp, Class type) { ByteArrayInputStream bais = new ByteArrayInputStream(dmp); InputStreamReader reader = null; try { reader = new InputStreamReader(bais, "UTF-8"); return JAXB.unmarshal(reader, type); } catch (IOException ex) { throw new EncodeException(ex); } finally { FileUtil.closeQuietly(reader); } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy