diff options
| author | frsyuki <frsyuki@users.sourceforge.jp> | 2010-10-24 19:32:45 +0900 |
|---|---|---|
| committer | frsyuki <frsyuki@users.sourceforge.jp> | 2010-10-24 19:32:45 +0900 |
| commit | e3bf8a404b993da62676d1d435e49a37c404fe3b (patch) | |
| tree | 402fe06e2b18907cad5d7a7f24604b5dbc9f0e68 /java/src/main | |
| parent | dbb28d9a8ffd259d9a9d977892d71434eebffb5a (diff) | |
| download | msgpack-python-e3bf8a404b993da62676d1d435e49a37c404fe3b.tar.gz | |
java: adds MessagePack class
Diffstat (limited to 'java/src/main')
| -rw-r--r-- | java/src/main/java/org/msgpack/MessagePack.java | 123 | ||||
| -rw-r--r-- | java/src/main/java/org/msgpack/Unpacker.java | 5 |
2 files changed, 126 insertions, 2 deletions
diff --git a/java/src/main/java/org/msgpack/MessagePack.java b/java/src/main/java/org/msgpack/MessagePack.java new file mode 100644 index 0000000..f9dcce8 --- /dev/null +++ b/java/src/main/java/org/msgpack/MessagePack.java @@ -0,0 +1,123 @@ +// +// 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; + +import java.io.OutputStream; +import java.io.InputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; + +public class MessagePack { + public static byte[] pack(Object obj) { + ByteArrayOutputStream out = new ByteArrayOutputStream(); + try { + new Packer(out).pack(obj); + } catch (IOException e) { + throw new RuntimeException(e); + } + return out.toByteArray(); + } + + public static void pack(OutputStream out, Object obj) throws IOException { + new Packer(out).pack(obj); + } + + public static byte[] pack(Object obj, Template tmpl) throws MessageTypeException { + ByteArrayOutputStream out = new ByteArrayOutputStream(); + try { + new Packer(out).pack(obj, tmpl); + } catch (IOException e) { + throw new RuntimeException(e); + } + return out.toByteArray(); + } + + public static void pack(OutputStream out, Object obj, Template tmpl) throws IOException { + new Packer(out).pack(obj, tmpl); + } + + + public static MessagePackObject unpack(byte[] buffer) throws IOException { + Unpacker pac = new Unpacker(); + pac.wrap(buffer); + try { + return pac.unpackObject(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public static Object unpack(byte[] buffer, Template tmpl) throws MessageTypeException { + Unpacker pac = new Unpacker(); + pac.wrap(buffer); + try { + return pac.unpack(tmpl); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public static <T> T unpack(byte[] buffer, Class<T> klass) throws MessageTypeException { + Unpacker pac = new Unpacker(); + pac.wrap(buffer); + try { + return pac.unpack(klass); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public static MessagePackObject unpack(InputStream in) { + Unpacker pac = new Unpacker(in); + try { + return pac.unpackObject(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public static Object unpack(InputStream in, Template tmpl) throws IOException, MessageTypeException { + Unpacker pac = new Unpacker(in); + try { + return pac.unpack(tmpl); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public static <T> T unpack(InputStream in, Class<T> klass) throws IOException, MessageTypeException { + Unpacker pac = new Unpacker(in); + try { + return pac.unpack(klass); + } catch (IOException e) { + throw new RuntimeException(e); + } + + } + + //public static void register(Class<?> target); // TODO: auto-detect + + //public static void register(Class<?> target, Template tmpl); // TODO + + //public static void registerPacker(Class<?> target, MessagePacker packer); // TODO + + //public static void registerConverter(Class<?> target, MessageConverter converter); // TODO + + //public static void registerUnpacker(Class<?> target, MessageUnpacker unpacker); // TODO +} + diff --git a/java/src/main/java/org/msgpack/Unpacker.java b/java/src/main/java/org/msgpack/Unpacker.java index e458b62..d07de1e 100644 --- a/java/src/main/java/org/msgpack/Unpacker.java +++ b/java/src/main/java/org/msgpack/Unpacker.java @@ -580,8 +580,9 @@ public class Unpacker implements Iterable<MessagePackObject> { return tmpl.unpack(this); } - final public Object unpack(Class<?> klass) throws IOException, MessageTypeException, InstantiationException, IllegalAccessException { - return unpack(Templates.tClass(klass)); + final public <T> T unpack(Class<T> klass) throws IOException, MessageTypeException { + // FIXME optional? + return (T)unpack(Templates.tOptional(Templates.tClass(klass))); } } |
