@Override public int getEncodingSize() { return _type.getEncodingSize(_value); }
@Override public int hashCode() { return _type.hashCode() ^ (_value == null ? 0 : _value.hashCode()); }
public void writeToBuffer(Object value, QpidByteBuffer buffer) { buffer.put(identifier()); writeValueImpl(value, buffer); }
private GenericTypedValue(AMQType type, Object value) { if (type == null) { throw new NullPointerException("Cannot create a typed value with null type"); } _type = type; _value = type.toNativeValue(value); }
@Override public void writeToBuffer(QpidByteBuffer buffer) { buffer.put(AMQType.INT.identifier()); buffer.putInt(_value); }
return AMQType.VOID.asTypedValue(null); return AMQType.LONG_STRING.asTypedValue(val); return AMQType.ASCII_CHARACTER.asTypedValue(val); return AMQType.SHORT.asTypedValue(val); return AMQType.INT.asTypedValue(val); return AMQType.LONG.asTypedValue(val); return AMQType.FLOAT.asTypedValue(val); return AMQType.DOUBLE.asTypedValue(val); return AMQType.TIMESTAMP.asTypedValue(val); return AMQType.BYTE.asTypedValue(val); return AMQType.BOOLEAN.asTypedValue(val); return AMQType.BINARY.asTypedValue(val); return AMQType.DECIMAL.asTypedValue(val); return AMQType.FIELD_TABLE.asTypedValue(FieldTable.convertToFieldTable((Map<String,Object>)val)); return AMQType.FIELD_TABLE.asTypedValue(val);
@Override public void writeToBuffer(QpidByteBuffer buffer) { _type.writeToBuffer(_value, buffer); }
private GenericTypedValue(AMQType type, QpidByteBuffer buffer) { _type = type; _value = type.readValueFromBuffer(buffer); }
private AMQTypedValue findValueForKey(String key) { byte[] keyBytes = key.getBytes(StandardCharsets.UTF_8); _encodedForm.mark(); try { while (_encodedForm.hasRemaining()) { final byte[] bytes = AMQShortString.readAMQShortStringAsBytes(_encodedForm); if (Arrays.equals(keyBytes, bytes)) { return AMQTypedValue.readFromBuffer(_encodedForm); } else { AMQType type = AMQTypeMap.getType(_encodedForm.get()); type.skip(_encodedForm); } } } finally { _encodedForm.reset(); } return NOT_PRESENT; }
/** * Converts an instance of the type to an equivalent Java native representation, packaged as an * {@link AMQTypedValue} tagged with its AMQP type. * * @param value An instance of the type. * * @return An equivalent Java native representation, tagged with its AMQP type. */ public AMQTypedValue asTypedValue(Object value) { return AMQTypedValue.createAMQTypedValue(this, toNativeValue(value)); }
@Override public void writeToBuffer(QpidByteBuffer buffer) { buffer.put(AMQType.LONG.identifier()); buffer.putLong(_value); }
return AMQType.VOID.asTypedValue(null); return AMQType.BOOLEAN.asTypedValue(object); return AMQType.BYTE.asTypedValue(object); return AMQType.SHORT.asTypedValue(object); return AMQType.FLOAT.asTypedValue(object); return AMQType.DOUBLE.asTypedValue(object); return AMQType.LONG_STRING.asTypedValue(object); return AMQType.ASCII_CHARACTER.asTypedValue(object); return AMQType.FIELD_TABLE.asTypedValue(object); return AMQType.FIELD_TABLE.asTypedValue(FieldTable.convertToFieldTable(map)); return AMQType.FIELD_ARRAY.asTypedValue(object); return AMQType.TIMESTAMP.asTypedValue(((Date) object).getTime()); return AMQType.DECIMAL.asTypedValue(decimal); return AMQType.BINARY.asTypedValue(object); return AMQType.LONG_STRING.asTypedValue(object.toString());
public static AMQTypedValue createAMQTypedValue(AMQType type, Object value) { switch(type) { case LONG: return new LongTypedValue((Long) AMQType.LONG.toNativeValue(value)); case INT: return new IntTypedValue((Integer) AMQType.INT.toNativeValue(value)); default: return new GenericTypedValue(type, value); } }