public ToBytesSerialiser getSerialiserFromValue(final Object object) { return (null == object) ? null : getSerialiserFromKey(getKeyFromValue(object)); }
public void setSerialiserDetails(final List<SerialiserDetail> serialisersDetails) throws GafferCheckedException { clear(); if (null != serialisersDetails) { for (final SerialiserDetail serialiser : serialisersDetails) { addSerialiserDetails(serialiser); } } }
@Override public boolean canHandle(final Class clazz) { return supportedSerialisers.canHandle(clazz); } }
public void put(final byte serialiserEncoding, final ToBytesSerialiser serialiser, final Class supportedClass) throws GafferCheckedException { validatePutParams(serialiser, supportedClass); consistent = continuesToBeConsistant(serialiser); preservesObjectOrdering = continuesToPreserveOrdering(serialiser); keyToSerialiser.put(serialiserEncoding, serialiser); keyToClass.put(serialiserEncoding, supportedClass); classToKey.put(supportedClass, serialiserEncoding); }
@Test public void shouldNotRetainOldSerialiserWhenKeyIsOverWritten() throws Exception { //when mss.put(BYTE, SERIALISER_CLASS, SUPPORTED_CLASS); mss.put(BYTE, SERIALISER_CLASS2, SUPPORTED_CLASS); //then assertNotNull( mss.getKeyFromValue(VALUE)); assertEquals("Wrong key for value", (Object) BYTE, mss.getKeyFromValue(VALUE)); ToBytesSerialiser actualClassFromByte = mss.getSerialiserFromKey(BYTE); assertNotNull("Byte key not found", actualClassFromByte); assertEquals("Wrong new SerialiserClass returned for key", SERIALISER_CLASS2, actualClassFromByte); ToBytesSerialiser actualClassFromValue = mss.getSerialiserFromValue(Integer.MAX_VALUE); assertNotNull("Value class not found", actualClassFromValue); assertEquals("Wrong new SerialiserClass returned for value class", SERIALISER_CLASS2, actualClassFromValue); }
private void checkBasicPut() throws GafferCheckedException { assertEquals((Object) BYTE, mss.getKeyFromValue(VALUE)); ToBytesSerialiser actualClassFromByte = mss.getSerialiserFromKey(BYTE); assertNotNull("Byte key not found", actualClassFromByte); assertEquals("Wrong SerialiserClass returned for key", SERIALISER_CLASS, actualClassFromByte); ToBytesSerialiser actualClassFromValue = mss.getSerialiserFromValue(Integer.MAX_VALUE); assertNotNull("Value class not found", actualClassFromValue); assertEquals("Wrong SerialiserClass returned for value class", SERIALISER_CLASS, actualClassFromValue); }
public void addSerialiserDetails(final SerialiserDetail serialiserDetail) throws GafferCheckedException { if (null != serialiserDetail) { if (serialiserDetail.getSerialiser() instanceof MultiSerialiser) { throw new GafferCheckedException(ERROR_ADDING_MULTI_SERIALISER); } put(serialiserDetail.getKey(), serialiserDetail.getSerialiser(), serialiserDetail.getValueClass()); } }
@Override public Object deserialise(final byte[] bytes) throws SerialisationException { try { byte keyByte = bytes[0]; ToBytesSerialiser serialiser = nullCheck(supportedSerialisers.getSerialiserFromKey(keyByte)); return serialiser.deserialise(bytes, 1, bytes.length - 1); } catch (final SerialisationException e) { //re-throw SerialisationException throw e; } catch (final Exception e) { //wraps other exceptions. throw new SerialisationException(e.getMessage(), e); } }
public MultiSerialiser addSerialiser(final byte key, final ToBytesSerialiser serialiser, final Class aClass) throws GafferCheckedException { supportedSerialisers.addSerialiserDetails(key, serialiser, aClass); return this; }
public List<SerialiserDetail> getSerialisers() { return supportedSerialisers.getSerialiserDetails(); }
@Before public void setUp() throws Exception { mss = new MultiSerialiserStorage(); }
@Test public void shouldUpdateToNewerValueToSerialiser() throws Exception { //give byte serialiserEncoding = BYTE + 1; //when mss.put(serialiserEncoding, SERIALISER_CLASS2, SUPPORTED_CLASS); mss.put(BYTE, SERIALISER_CLASS, SUPPORTED_CLASS); //then checkBasicPut(); assertEquals( BYTE, (byte) mss.getKeyFromValue(VALUE)); ToBytesSerialiser actualClassFromByte2 = mss.getSerialiserFromKey(serialiserEncoding); assertNotNull("Byte key not found", actualClassFromByte2); assertEquals("Wrong SerialiserClass returned for key", SERIALISER_CLASS2, actualClassFromByte2); ToBytesSerialiser actualClassFromValue2 = mss.getSerialiserFromValue(Integer.MAX_VALUE); assertNotNull("Value class not found", actualClassFromValue2); assertEquals("Wrong SerialiserClass, should have updated to newer SerialiserClass", SERIALISER_CLASS, actualClassFromValue2); }
public void put(final byte serialiserEncoding, final ToBytesSerialiser serialiser, final Class supportedClass) throws GafferCheckedException { validatePutParams(serialiser, supportedClass); consistent = continuesToBeConsistant(serialiser); preservesObjectOrdering = continuesToPreserveOrdering(serialiser); keyToSerialiser.put(serialiserEncoding, serialiser); keyToClass.put(serialiserEncoding, supportedClass); classToKey.put(supportedClass, serialiserEncoding); }
@Test public void shouldPutAndGet() throws Exception { //when mss.put(BYTE, SERIALISER_CLASS, SUPPORTED_CLASS); //then checkBasicPut(); }
@Override public Object deserialise(final byte[] bytes) throws SerialisationException { try { byte keyByte = bytes[0]; ToBytesSerialiser serialiser = nullCheck(supportedSerialisers.getSerialiserFromKey(keyByte)); return serialiser.deserialise(bytes, 1, bytes.length - 1); } catch (final SerialisationException e) { //re-throw SerialisationException throw e; } catch (final Exception e) { //wraps other exceptions. throw new SerialisationException(e.getMessage(), e); } }
public void addSerialiserDetails(final byte key, final ToBytesSerialiser serialiser, final Class aClass) throws GafferCheckedException { addSerialiserDetails(new SerialiserDetail(key, serialiser, aClass)); }
public List<SerialiserDetail> getSerialisers() { return supportedSerialisers.getSerialiserDetails(); }
@Override public byte[] serialise(final Object object) throws SerialisationException { try (ByteArrayOutputStream stream = new ByteArrayOutputStream()) { byte key = supportedSerialisers.getKeyFromValue(object); byte[] bytes = nullCheck(supportedSerialisers.getSerialiserFromKey(key)).serialise(object); stream.write(key); stream.write(bytes); return stream.toByteArray(); } catch (final SerialisationException e) { //re-throw SerialisationException throw e; } catch (final Exception e) { //wraps other exceptions. throw new SerialisationException(e.getMessage(), e); } }
public void addSerialiserDetails(final SerialiserDetail serialiserDetail) throws GafferCheckedException { if (null != serialiserDetail) { if (serialiserDetail.getSerialiser() instanceof MultiSerialiser) { throw new GafferCheckedException(ERROR_ADDING_MULTI_SERIALISER); } put(serialiserDetail.getKey(), serialiserDetail.getSerialiser(), serialiserDetail.getValueClass()); } }
public void setSerialiserDetails(final List<SerialiserDetail> serialisersDetails) throws GafferCheckedException { clear(); if (null != serialisersDetails) { for (final SerialiserDetail serialiser : serialisersDetails) { addSerialiserDetails(serialiser); } } }