@Override public Serialiser<Set<? extends Object>, byte[]> getSerialisation() { SetSerialiser serialiser = new SetSerialiser(); serialiser.setObjectSerialiser(new StringSerialiser()); return serialiser; }
@Override public Set<? extends Object> deserialise(final byte[] bytes) throws SerialisationException { Set set; if (null == getSetClass()) { set = new HashSet<>(); } else { try { set = getSetClass().newInstance(); } catch (final IllegalAccessException | IllegalArgumentException | SecurityException | InstantiationException e) { throw new SerialisationException("Failed to create map instance" + e.getMessage(), e); } } final int arrayLength = bytes.length; int carriage = 0; while (carriage < arrayLength) { LengthValueBytesSerialiserUtil.ObjectCarriage c = LengthValueBytesSerialiserUtil.deserialiseNextObject(getObjectSerialiser(), carriage, bytes); set.add(c.getObject()); carriage = c.getCarriage(); } return set; }
@Test public void setSerialiserWithOverlappingValuesTest() throws SerialisationException { Set<Integer> set = new LinkedHashSet<>(); set.add(1); set.add(3); set.add(2); set.add(7); set.add(3); set.add(11); ((SetSerialiser) serialiser).setObjectSerialiser(new IntegerSerialiser()); ((SetSerialiser) serialiser).setSetClass(LinkedHashSet.class); byte[] b = serialiser.serialise(set); Set o = serialiser.deserialise(b); assertEquals(LinkedHashSet.class, o.getClass()); assertEquals(5, o.size()); assertTrue(o.contains(1)); assertTrue(o.contains(3)); assertTrue(o.contains(2)); assertTrue(o.contains(7)); assertTrue(o.contains(11)); }
@Override public byte[] serialise(final Set<? extends Object> object) throws SerialisationException { LengthValueBytesSerialiserUtil.LengthValueBuilder builder = new LengthValueBytesSerialiserUtil.LengthValueBuilder(); try { for (final Object entry : object) { builder.appendLengthValueFromObjectToByteStream(getObjectSerialiser(), entry); } } catch (final IOException e) { throw new SerialisationException(e.getMessage(), e); } return builder.toArray(); }
@Override public Set<? extends Object> deserialiseEmpty() throws SerialisationException { Set set; if (null == getSetClass()) { set = new HashSet<>(); } else { try { set = getSetClass().newInstance(); } catch (final IllegalAccessException | IllegalArgumentException | SecurityException | InstantiationException e) { throw new SerialisationException("Failed to create map instance" + e.getMessage(), e); } } return set; }
@Override public byte[] serialise(final Set<? extends Object> object) throws SerialisationException { LengthValueBytesSerialiserUtil.LengthValueBuilder builder = new LengthValueBytesSerialiserUtil.LengthValueBuilder(); try { for (final Object entry : object) { builder.appendLengthValueFromObjectToByteStream(getObjectSerialiser(), entry); } } catch (final IOException e) { throw new SerialisationException(e.getMessage(), e); } return builder.toArray(); }
@Override public Set<? extends Object> deserialiseEmpty() throws SerialisationException { Set set; if (null == getSetClass()) { set = new HashSet<>(); } else { try { set = getSetClass().newInstance(); } catch (final IllegalAccessException | IllegalArgumentException | SecurityException | InstantiationException e) { throw new SerialisationException("Failed to create map instance" + e.getMessage(), e); } } return set; }
@Override public Set<? extends Object> deserialise(final byte[] bytes) throws SerialisationException { Set set; if (null == getSetClass()) { set = new HashSet<>(); } else { try { set = getSetClass().newInstance(); } catch (final IllegalAccessException | IllegalArgumentException | SecurityException | InstantiationException e) { throw new SerialisationException("Failed to create map instance" + e.getMessage(), e); } } final int arrayLength = bytes.length; int carriage = 0; while (carriage < arrayLength) { LengthValueBytesSerialiserUtil.ObjectCarriage c = LengthValueBytesSerialiserUtil.deserialiseNextObject(getObjectSerialiser(), carriage, bytes); set.add(c.getObject()); carriage = c.getCarriage(); } return set; }