| 2785 | } |
| 2786 | |
| 2787 | @SuppressWarnings("unchecked") |
| 2788 | private static void packValue(org.msgpack.core.MessagePacker packer, Object value) throws java.io.IOException { |
| 2789 | if (value == null) { |
| 2790 | packer.packNil(); |
| 2791 | } else if (value instanceof Boolean) { |
| 2792 | packer.packBoolean((Boolean) value); |
| 2793 | } else if (value instanceof Byte) { |
| 2794 | packer.packByte((Byte) value); |
| 2795 | } else if (value instanceof Short) { |
| 2796 | packer.packShort((Short) value); |
| 2797 | } else if (value instanceof Integer) { |
| 2798 | packer.packInt((Integer) value); |
| 2799 | } else if (value instanceof Long) { |
| 2800 | packer.packLong((Long) value); |
| 2801 | } else if (value instanceof java.math.BigInteger) { |
| 2802 | packer.packBigInteger((java.math.BigInteger) value); |
| 2803 | } else if (value instanceof Float) { |
| 2804 | packer.packFloat((Float) value); |
| 2805 | } else if (value instanceof Double) { |
| 2806 | packer.packDouble((Double) value); |
| 2807 | } else if (value instanceof String) { |
| 2808 | packer.packString((String) value); |
| 2809 | } else if (value instanceof byte[]) { |
| 2810 | byte[] bytes = (byte[]) value; |
| 2811 | packer.packBinaryHeader(bytes.length); |
| 2812 | packer.writePayload(bytes); |
| 2813 | } else if (value instanceof Map) { |
| 2814 | Map<Object, Object> map = (Map<Object, Object>) value; |
| 2815 | packer.packMapHeader(map.size()); |
| 2816 | for (Map.Entry<Object, Object> entry : map.entrySet()) { |
| 2817 | packValue(packer, entry.getKey()); |
| 2818 | packValue(packer, entry.getValue()); |
| 2819 | } |
| 2820 | } else if (value instanceof List) { |
| 2821 | List<Object> list = (List<Object>) value; |
| 2822 | packer.packArrayHeader(list.size()); |
| 2823 | for (Object item : list) { |
| 2824 | packValue(packer, item); |
| 2825 | } |
| 2826 | } else { |
| 2827 | // Best-effort fallback for unknown types |
| 2828 | packer.packString(value.toString()); |
| 2829 | } |
| 2830 | } |
| 2831 | |
| 2832 | public int binaryLength(Object binary) { |
| 2833 | if (binary instanceof byte[]) { |