@Override public int compareTo(final TypeValue typeValue) { if (null == typeValue) { return 1; } int i = stringComparator.compare(type, typeValue.getType()); if (i != 0) { return i; } return stringComparator.compare(value, typeValue.getValue()); } }
@Override public byte[] serialise(final TypeValue typeValue) throws SerialisationException { String type = typeValue.getType(); String value = typeValue.getValue(); if ((null == type || type.isEmpty()) && (null == value || value.isEmpty())) { throw new SerialisationException("TypeValue passed to serialiser is blank"); } ByteArrayOutputStream out = new ByteArrayOutputStream(); if (null != type) { try { out.write(ByteArrayEscapeUtils.escape(type.getBytes(CommonConstants.UTF_8))); } catch (final IOException e) { throw new SerialisationException("Failed to serialise the Type from TypeValue Object", e); } } out.write(ByteArrayEscapeUtils.DELIMITER); if (null != value) { try { out.write(ByteArrayEscapeUtils.escape(value.getBytes(CommonConstants.UTF_8))); } catch (final IOException e) { throw new SerialisationException("Failed to serialise the Value from TypeValue Object", e); } } return out.toByteArray(); }
@Test public void testCanSerialiseDeSerialiseCorrectly() throws SerialisationException { TypeValue typeValue = new TypeValue("testType", "testValue"); byte[] bytes = serialiser.serialise(typeValue); String serialisedForm = new String(bytes); assertEquals("testType\0testValue", serialisedForm); TypeValue deSerialisedTypeValue = serialiser.deserialise(bytes); assertEquals(typeValue.getType(), deSerialisedTypeValue.getType()); assertEquals(typeValue.getValue(), deSerialisedTypeValue.getValue()); assertEquals(typeValue, deSerialisedTypeValue); }
@Test public void testCanSerialiseDeSerialiseCorrectlyValueOnly() throws SerialisationException { TypeValue typeValue = new TypeValue(); typeValue.setValue("testValue"); byte[] bytes = serialiser.serialise(typeValue); String serialisedForm = new String(bytes); assertEquals("\0testValue", serialisedForm); TypeValue deSerialisedTypeValue = serialiser.deserialise(bytes); assertNull(deSerialisedTypeValue.getType()); assertEquals(typeValue.getValue(), deSerialisedTypeValue.getValue()); assertEquals(typeValue, deSerialisedTypeValue); }
@Test public void testCanSerialiseDeSerialiseCorrectlyTypeOnly() throws SerialisationException { TypeValue typeValue = new TypeValue(); typeValue.setType("testType"); byte[] bytes = serialiser.serialise(typeValue); String serialisedForm = new String(bytes); assertEquals("testType\0", serialisedForm); TypeValue deSerialisedTypeValue = serialiser.deserialise(bytes); assertEquals(typeValue.getType(), deSerialisedTypeValue.getType()); assertNull(typeValue.getValue(), deSerialisedTypeValue.getValue()); assertEquals(typeValue, deSerialisedTypeValue); }
@Test public void testCanSerialiseDeserialiseCorrectlyAndBeEscaped() throws SerialisationException { TypeValue typeValue = new TypeValue("testType", "testValue"); byte[] bytes = ByteArrayEscapeUtils.escape(serialiser.serialise(typeValue)); String serialisedForm = new String(bytes); assertEquals("testType\1\1testValue", serialisedForm); TypeValue deSerialisedTypeValue = serialiser.deserialise(ByteArrayEscapeUtils .unEscape(bytes)); assertEquals(typeValue.getType(), deSerialisedTypeValue.getType()); assertEquals(typeValue.getValue(), deSerialisedTypeValue.getValue()); assertEquals(typeValue, deSerialisedTypeValue); }
@Override public Object[] serialise(final TypeValue object) throws SerialisationException { if (null != object) { return new Object[]{object.getType(), object.getValue()}; } return new Object[]{null, null}; }
@Override public int compareTo(final TypeValue typeValue) { if (null == typeValue) { return 1; } int i = stringComparator.compare(type, typeValue.getType()); if (i != 0) { return i; } return stringComparator.compare(value, typeValue.getValue()); } }
@Override public byte[] serialise(final TypeValue typeValue) throws SerialisationException { String type = typeValue.getType(); String value = typeValue.getValue(); if ((null == type || type.isEmpty()) && (null == value || value.isEmpty())) { throw new SerialisationException("TypeValue passed to serialiser is blank"); } ByteArrayOutputStream out = new ByteArrayOutputStream(); if (null != type) { try { out.write(ByteArrayEscapeUtils.escape(type.getBytes(CommonConstants.UTF_8))); } catch (final IOException e) { throw new SerialisationException("Failed to serialise the Type from TypeValue Object", e); } } out.write(ByteArrayEscapeUtils.DELIMITER); if (null != value) { try { out.write(ByteArrayEscapeUtils.escape(value.getBytes(CommonConstants.UTF_8))); } catch (final IOException e) { throw new SerialisationException("Failed to serialise the Value from TypeValue Object", e); } } return out.toByteArray(); }
@Override public void write(final Kryo kryo, final Output output, final TypeValue typeValue) { output.writeString(typeValue.getType()); output.writeString(typeValue.getValue()); }