package de.jpaw.bonaparte.util.impl; import de.jpaw.bonaparte.core.BonaPortable; import de.jpaw.bonaparte.core.CompactByteArrayComposer; import de.jpaw.bonaparte.core.CompactByteArrayParser; import de.jpaw.bonaparte.core.MimeTypes; import de.jpaw.bonaparte.util.IMarshaller; import de.jpaw.util.ApplicationException; import de.jpaw.util.ByteArray; import de.jpaw.util.ByteBuilder; /** similar to MarshallerCompactBonaparte, but assumes the receiver has the same object structure. * Sub objects within JSON will be serializes as objects. * * @author mbi * */ public class RecordMarshallerCompactBonaparteIdentity implements IMarshaller { @Override public String getContentType() { return MimeTypes.MIME_TYPE_COMPACT_BONAPARTE; } @Override public ByteArray marshal(BonaPortable request) { CompactByteArrayComposer bac = new CompactByteArrayComposer(false); bac.writeRecord(request); ByteArray result = new ByteArray(bac.getBuffer(), 0, bac.getLength()); bac.close(); return result; } @Override public BonaPortable unmarshal(ByteBuilder buffer) throws ApplicationException { return (new CompactByteArrayParser(buffer.getCurrentBuffer(), 0, buffer.length())).readRecord(); } }