@Override public void deserialize(IFilterCodeSystem<?> cs, ByteBuffer buffer) { value = serializer.deserialize(buffer); }
@Override public void serialize(IFilterCodeSystem<?> cs, ByteBuffer buffer) { serializer.serialize(value, buffer); }
@Test public void testNormal() { BigDecimal input = new BigDecimal("1234.1234"); ByteBuffer buffer = ByteBuffer.allocate(256); buffer.mark(); bigDecimalSerializer.serialize(input, buffer); buffer.reset(); BigDecimal output = bigDecimalSerializer.deserialize(buffer); assertEquals(input, output); }
@BeforeClass public static void beforeClass() { staticCreateTestMetadata(); bigDecimalSerializer = new BigDecimalSerializer(DataType.getType("decimal")); }
@Test public void testNull() { BigDecimal input = null; ByteBuffer buffer = ByteBuffer.allocate(256); buffer.mark(); bigDecimalSerializer.serialize(input, buffer); buffer.reset(); BigDecimal output = bigDecimalSerializer.deserialize(buffer); assertEquals(input, output); } }
public class BigDecimalSerializerFactory extends AbstractSerializerFactory { private BigDecimalSerializer bigDecimalSerializer = new BigDecimalSerializer(); private BigDecimalDeserializer bigDecimalDeserializer = new BigDecimalDeserializer(); @Override public Serializer getSerializer(Class cl) throws HessianProtocolException { if (BigDecimal.class.isAssignableFrom(cl)) { return bigDecimalSerializer; } return null; } @Override public Deserializer getDeserializer(Class cl) throws HessianProtocolException { if (BigDecimal.class.isAssignableFrom(cl)) { return bigDecimalDeserializer; } return null; }
@Test public void testScaleOutOfRange() { BigDecimal input = new BigDecimal("1234.1234567890"); ByteBuffer buffer = ByteBuffer.allocate(256); buffer.mark(); bigDecimalSerializer.serialize(input, buffer); buffer.reset(); BigDecimal output = bigDecimalSerializer.deserialize(buffer); assertEquals(input.setScale(bigDecimalSerializer.type.getScale(), BigDecimal.ROUND_HALF_EVEN), output); }
@Test(expected = IllegalArgumentException.class) public void testOutOfPrecision() { BigDecimal input = new BigDecimal("66855344214907231736.4924"); ByteBuffer buffer = ByteBuffer.allocate(256); bigDecimalSerializer.serialize(input, buffer); }
@Override public void deserialize(IFilterCodeSystem<?> cs, ByteBuffer buffer) { value = serializer.deserialize(buffer); }
@Override public void serialize(IFilterCodeSystem<?> cs, ByteBuffer buffer) { serializer.serialize(value, buffer); }