From 71ae75a5bff920d886395275fdc6f991207d8000 Mon Sep 17 00:00:00 2001 From: frsyuki Date: Fri, 22 Oct 2010 16:18:07 +0900 Subject: [PATCH] java: adds OptionalPacker --- java/src/main/java/org/msgpack/Packer.java | 10 +++++ .../org/msgpack/packer/BigIntegerPacker.java | 2 +- .../org/msgpack/packer/BooleanPacker.java | 2 +- .../org/msgpack/packer/ByteArrayPacker.java | 2 +- .../java/org/msgpack/packer/BytePacker.java | 2 +- .../java/org/msgpack/packer/DoublePacker.java | 2 +- .../java/org/msgpack/packer/FloatPacker.java | 2 +- .../org/msgpack/packer/IntegerPacker.java | 2 +- .../java/org/msgpack/packer/LongPacker.java | 2 +- .../org/msgpack/packer/OptionalPacker.java | 38 +++++++++++++++++++ .../java/org/msgpack/packer/ShortPacker.java | 2 +- .../java/org/msgpack/packer/StringPacker.java | 2 +- 12 files changed, 58 insertions(+), 10 deletions(-) create mode 100644 java/src/main/java/org/msgpack/packer/OptionalPacker.java diff --git a/java/src/main/java/org/msgpack/Packer.java b/java/src/main/java/org/msgpack/Packer.java index a10bf192..1475ac6b 100644 --- a/java/src/main/java/org/msgpack/Packer.java +++ b/java/src/main/java/org/msgpack/Packer.java @@ -331,6 +331,16 @@ public class Packer { } + public Packer packByteArray(byte[] b) throws IOException { + packRaw(b.length); + return packRawBody(b, 0, b.length); + } + + public Packer packByteArray(byte[] b, int off, int length) throws IOException { + packRaw(length); + return packRawBody(b, off, length); + } + public Packer packString(String s) throws IOException { byte[] b = ((String)s).getBytes("UTF-8"); packRaw(b.length); diff --git a/java/src/main/java/org/msgpack/packer/BigIntegerPacker.java b/java/src/main/java/org/msgpack/packer/BigIntegerPacker.java index 60bbab91..7d4c0a6b 100644 --- a/java/src/main/java/org/msgpack/packer/BigIntegerPacker.java +++ b/java/src/main/java/org/msgpack/packer/BigIntegerPacker.java @@ -25,7 +25,7 @@ public class BigIntegerPacker implements MessagePacker { private BigIntegerPacker() { } public void pack(Packer pk, Object target) throws IOException { - pk.pack((BigInteger)target); + pk.packBigInteger((BigInteger)target); } static public BigIntegerPacker getInstance() { diff --git a/java/src/main/java/org/msgpack/packer/BooleanPacker.java b/java/src/main/java/org/msgpack/packer/BooleanPacker.java index 6f300c95..5392494c 100644 --- a/java/src/main/java/org/msgpack/packer/BooleanPacker.java +++ b/java/src/main/java/org/msgpack/packer/BooleanPacker.java @@ -24,7 +24,7 @@ public class BooleanPacker implements MessagePacker { private BooleanPacker() { } public void pack(Packer pk, Object target) throws IOException { - pk.pack((Boolean)target); + pk.packBoolean((Boolean)target); } static public BooleanPacker getInstance() { diff --git a/java/src/main/java/org/msgpack/packer/ByteArrayPacker.java b/java/src/main/java/org/msgpack/packer/ByteArrayPacker.java index f5f38f88..1c590fb7 100644 --- a/java/src/main/java/org/msgpack/packer/ByteArrayPacker.java +++ b/java/src/main/java/org/msgpack/packer/ByteArrayPacker.java @@ -24,7 +24,7 @@ public class ByteArrayPacker implements MessagePacker { private ByteArrayPacker() { } public void pack(Packer pk, Object target) throws IOException { - pk.pack((byte[])target); + pk.packByteArray((byte[])target); } static public ByteArrayPacker getInstance() { diff --git a/java/src/main/java/org/msgpack/packer/BytePacker.java b/java/src/main/java/org/msgpack/packer/BytePacker.java index a005f76e..79d5989b 100644 --- a/java/src/main/java/org/msgpack/packer/BytePacker.java +++ b/java/src/main/java/org/msgpack/packer/BytePacker.java @@ -24,7 +24,7 @@ public class BytePacker implements MessagePacker { private BytePacker() { } public void pack(Packer pk, Object target) throws IOException { - pk.pack(((Byte)target).byteValue()); + pk.packByte((Byte)target); } static public BytePacker getInstance() { diff --git a/java/src/main/java/org/msgpack/packer/DoublePacker.java b/java/src/main/java/org/msgpack/packer/DoublePacker.java index df53e332..c555869f 100644 --- a/java/src/main/java/org/msgpack/packer/DoublePacker.java +++ b/java/src/main/java/org/msgpack/packer/DoublePacker.java @@ -24,7 +24,7 @@ public class DoublePacker implements MessagePacker { private DoublePacker() { } public void pack(Packer pk, Object target) throws IOException { - pk.pack(((Double)target).doubleValue()); + pk.packDouble(((Double)target)); } static public DoublePacker getInstance() { diff --git a/java/src/main/java/org/msgpack/packer/FloatPacker.java b/java/src/main/java/org/msgpack/packer/FloatPacker.java index 3aa47e19..d9dbc71f 100644 --- a/java/src/main/java/org/msgpack/packer/FloatPacker.java +++ b/java/src/main/java/org/msgpack/packer/FloatPacker.java @@ -24,7 +24,7 @@ public class FloatPacker implements MessagePacker { private FloatPacker() { } public void pack(Packer pk, Object target) throws IOException { - pk.pack(((Float)target).floatValue()); + pk.packFloat((Float)target); } static public FloatPacker getInstance() { diff --git a/java/src/main/java/org/msgpack/packer/IntegerPacker.java b/java/src/main/java/org/msgpack/packer/IntegerPacker.java index 1e64429f..4f9cde1f 100644 --- a/java/src/main/java/org/msgpack/packer/IntegerPacker.java +++ b/java/src/main/java/org/msgpack/packer/IntegerPacker.java @@ -24,7 +24,7 @@ public class IntegerPacker implements MessagePacker { private IntegerPacker() { } public void pack(Packer pk, Object target) throws IOException { - pk.pack(((Integer)target).intValue()); + pk.packInt((Integer)target); } static public IntegerPacker getInstance() { diff --git a/java/src/main/java/org/msgpack/packer/LongPacker.java b/java/src/main/java/org/msgpack/packer/LongPacker.java index 146e42dd..bc7da8db 100644 --- a/java/src/main/java/org/msgpack/packer/LongPacker.java +++ b/java/src/main/java/org/msgpack/packer/LongPacker.java @@ -24,7 +24,7 @@ public class LongPacker implements MessagePacker { private LongPacker() { } public void pack(Packer pk, Object target) throws IOException { - pk.pack(((Long)target).longValue()); + pk.packLong((Long)target); } static public LongPacker getInstance() { diff --git a/java/src/main/java/org/msgpack/packer/OptionalPacker.java b/java/src/main/java/org/msgpack/packer/OptionalPacker.java new file mode 100644 index 00000000..e9550a46 --- /dev/null +++ b/java/src/main/java/org/msgpack/packer/OptionalPacker.java @@ -0,0 +1,38 @@ +// +// MessagePack for Java +// +// Copyright (C) 2009-2010 FURUHASHI Sadayuki +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +package org.msgpack.packer; + +import java.io.IOException; +import org.msgpack.*; + +public class OptionalPacker implements MessagePacker { + private MessagePacker elementPacker; + + public OptionalPacker(MessagePacker elementPacker) { + this.elementPacker = elementPacker; + } + + public void pack(Packer pk, Object target) throws IOException { + if(target == null) { + pk.packNil(); + } else { + elementPacker.pack(pk, target); + } + } +} + diff --git a/java/src/main/java/org/msgpack/packer/ShortPacker.java b/java/src/main/java/org/msgpack/packer/ShortPacker.java index e4be9ec8..4c55cc7d 100644 --- a/java/src/main/java/org/msgpack/packer/ShortPacker.java +++ b/java/src/main/java/org/msgpack/packer/ShortPacker.java @@ -24,7 +24,7 @@ public class ShortPacker implements MessagePacker { private ShortPacker() { } public void pack(Packer pk, Object target) throws IOException { - pk.pack(((Short)target).shortValue()); + pk.packShort((Short)target); } static public ShortPacker getInstance() { diff --git a/java/src/main/java/org/msgpack/packer/StringPacker.java b/java/src/main/java/org/msgpack/packer/StringPacker.java index 17a05008..dfea6205 100644 --- a/java/src/main/java/org/msgpack/packer/StringPacker.java +++ b/java/src/main/java/org/msgpack/packer/StringPacker.java @@ -24,7 +24,7 @@ public class StringPacker implements MessagePacker { private StringPacker() { } public void pack(Packer pk, Object target) throws IOException { - pk.pack((String)target); + pk.packString((String)target); } static public StringPacker getInstance() {