annotate src/main/java/org/msgpack/MessagePack.java @ 0:cb825acd883a

first commit
author sugi
date Sat, 18 Oct 2014 15:06:15 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
cb825acd883a first commit
sugi
parents:
diff changeset
1 //
cb825acd883a first commit
sugi
parents:
diff changeset
2 // MessagePack for Java
cb825acd883a first commit
sugi
parents:
diff changeset
3 //
cb825acd883a first commit
sugi
parents:
diff changeset
4 // Copyright (C) 2009 - 2013 FURUHASHI Sadayuki
cb825acd883a first commit
sugi
parents:
diff changeset
5 //
cb825acd883a first commit
sugi
parents:
diff changeset
6 // Licensed under the Apache License, Version 2.0 (the "License");
cb825acd883a first commit
sugi
parents:
diff changeset
7 // you may not use this file except in compliance with the License.
cb825acd883a first commit
sugi
parents:
diff changeset
8 // You may obtain a copy of the License at
cb825acd883a first commit
sugi
parents:
diff changeset
9 //
cb825acd883a first commit
sugi
parents:
diff changeset
10 // http://www.apache.org/licenses/LICENSE-2.0
cb825acd883a first commit
sugi
parents:
diff changeset
11 //
cb825acd883a first commit
sugi
parents:
diff changeset
12 // Unless required by applicable law or agreed to in writing, software
cb825acd883a first commit
sugi
parents:
diff changeset
13 // distributed under the License is distributed on an "AS IS" BASIS,
cb825acd883a first commit
sugi
parents:
diff changeset
14 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
cb825acd883a first commit
sugi
parents:
diff changeset
15 // See the License for the specific language governing permissions and
cb825acd883a first commit
sugi
parents:
diff changeset
16 // limitations under the License.
cb825acd883a first commit
sugi
parents:
diff changeset
17 //
cb825acd883a first commit
sugi
parents:
diff changeset
18 package org.msgpack;
cb825acd883a first commit
sugi
parents:
diff changeset
19
cb825acd883a first commit
sugi
parents:
diff changeset
20 import java.io.InputStream;
cb825acd883a first commit
sugi
parents:
diff changeset
21 import java.io.OutputStream;
cb825acd883a first commit
sugi
parents:
diff changeset
22 import java.io.IOException;
cb825acd883a first commit
sugi
parents:
diff changeset
23 import java.lang.reflect.Type;
cb825acd883a first commit
sugi
parents:
diff changeset
24 import java.nio.ByteBuffer;
cb825acd883a first commit
sugi
parents:
diff changeset
25 import org.msgpack.template.Template;
cb825acd883a first commit
sugi
parents:
diff changeset
26 import org.msgpack.template.TemplateRegistry;
cb825acd883a first commit
sugi
parents:
diff changeset
27 import org.msgpack.packer.Packer;
cb825acd883a first commit
sugi
parents:
diff changeset
28 import org.msgpack.packer.BufferPacker;
cb825acd883a first commit
sugi
parents:
diff changeset
29 import org.msgpack.packer.MessagePackPacker;
cb825acd883a first commit
sugi
parents:
diff changeset
30 import org.msgpack.packer.MessagePackBufferPacker;
cb825acd883a first commit
sugi
parents:
diff changeset
31 import org.msgpack.packer.Unconverter;
cb825acd883a first commit
sugi
parents:
diff changeset
32 import org.msgpack.unpacker.Unpacker;
cb825acd883a first commit
sugi
parents:
diff changeset
33 import org.msgpack.unpacker.BufferUnpacker;
cb825acd883a first commit
sugi
parents:
diff changeset
34 import org.msgpack.unpacker.MessagePackUnpacker;
cb825acd883a first commit
sugi
parents:
diff changeset
35 import org.msgpack.unpacker.MessagePackBufferUnpacker;
cb825acd883a first commit
sugi
parents:
diff changeset
36 import org.msgpack.unpacker.Converter;
cb825acd883a first commit
sugi
parents:
diff changeset
37 import org.msgpack.type.Value;
cb825acd883a first commit
sugi
parents:
diff changeset
38
cb825acd883a first commit
sugi
parents:
diff changeset
39 /**
cb825acd883a first commit
sugi
parents:
diff changeset
40 * <p>
cb825acd883a first commit
sugi
parents:
diff changeset
41 * This is basic class to use MessagePack for Java. It creates serializers and
cb825acd883a first commit
sugi
parents:
diff changeset
42 * deserializers for objects of classes.
cb825acd883a first commit
sugi
parents:
diff changeset
43 * </p>
cb825acd883a first commit
sugi
parents:
diff changeset
44 *
cb825acd883a first commit
sugi
parents:
diff changeset
45 * <p>
cb825acd883a first commit
sugi
parents:
diff changeset
46 * See <a
cb825acd883a first commit
sugi
parents:
diff changeset
47 * href="http://wiki.msgpack.org/display/MSGPACK/QuickStart+for+Java">Quick
cb825acd883a first commit
sugi
parents:
diff changeset
48 * Start for Java</a> on MessagePack wiki.
cb825acd883a first commit
sugi
parents:
diff changeset
49 * </p>
cb825acd883a first commit
sugi
parents:
diff changeset
50 *
cb825acd883a first commit
sugi
parents:
diff changeset
51 */
cb825acd883a first commit
sugi
parents:
diff changeset
52 public class MessagePack {
cb825acd883a first commit
sugi
parents:
diff changeset
53 private TemplateRegistry registry;
cb825acd883a first commit
sugi
parents:
diff changeset
54
cb825acd883a first commit
sugi
parents:
diff changeset
55 /**
cb825acd883a first commit
sugi
parents:
diff changeset
56 *
cb825acd883a first commit
sugi
parents:
diff changeset
57 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
58 */
cb825acd883a first commit
sugi
parents:
diff changeset
59 public MessagePack() {
cb825acd883a first commit
sugi
parents:
diff changeset
60 registry = new TemplateRegistry(null);
cb825acd883a first commit
sugi
parents:
diff changeset
61 }
cb825acd883a first commit
sugi
parents:
diff changeset
62
cb825acd883a first commit
sugi
parents:
diff changeset
63 /**
cb825acd883a first commit
sugi
parents:
diff changeset
64 *
cb825acd883a first commit
sugi
parents:
diff changeset
65 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
66 * @param msgpack
cb825acd883a first commit
sugi
parents:
diff changeset
67 */
cb825acd883a first commit
sugi
parents:
diff changeset
68 public MessagePack(MessagePack msgpack) {
cb825acd883a first commit
sugi
parents:
diff changeset
69 registry = new TemplateRegistry(msgpack.registry);
cb825acd883a first commit
sugi
parents:
diff changeset
70 }
cb825acd883a first commit
sugi
parents:
diff changeset
71
cb825acd883a first commit
sugi
parents:
diff changeset
72 protected MessagePack(TemplateRegistry registry) {
cb825acd883a first commit
sugi
parents:
diff changeset
73 this.registry = registry;
cb825acd883a first commit
sugi
parents:
diff changeset
74 }
cb825acd883a first commit
sugi
parents:
diff changeset
75
cb825acd883a first commit
sugi
parents:
diff changeset
76 /**
cb825acd883a first commit
sugi
parents:
diff changeset
77 *
cb825acd883a first commit
sugi
parents:
diff changeset
78 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
79 * @param cl
cb825acd883a first commit
sugi
parents:
diff changeset
80 */
cb825acd883a first commit
sugi
parents:
diff changeset
81 public void setClassLoader(final ClassLoader cl) {
cb825acd883a first commit
sugi
parents:
diff changeset
82 registry.setClassLoader(cl);
cb825acd883a first commit
sugi
parents:
diff changeset
83 }
cb825acd883a first commit
sugi
parents:
diff changeset
84
cb825acd883a first commit
sugi
parents:
diff changeset
85 /**
cb825acd883a first commit
sugi
parents:
diff changeset
86 * Returns serializer that enables serializing objects into
cb825acd883a first commit
sugi
parents:
diff changeset
87 * {@link java.io.OutputStream} object.
cb825acd883a first commit
sugi
parents:
diff changeset
88 *
cb825acd883a first commit
sugi
parents:
diff changeset
89 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
90 * @param out
cb825acd883a first commit
sugi
parents:
diff changeset
91 * output stream
cb825acd883a first commit
sugi
parents:
diff changeset
92 * @return stream-based serializer
cb825acd883a first commit
sugi
parents:
diff changeset
93 */
cb825acd883a first commit
sugi
parents:
diff changeset
94 public Packer createPacker(OutputStream out) {
cb825acd883a first commit
sugi
parents:
diff changeset
95 return new MessagePackPacker(this, out);
cb825acd883a first commit
sugi
parents:
diff changeset
96 }
cb825acd883a first commit
sugi
parents:
diff changeset
97
cb825acd883a first commit
sugi
parents:
diff changeset
98 /**
cb825acd883a first commit
sugi
parents:
diff changeset
99 * Returns serializer that enables serializing objects into buffer.
cb825acd883a first commit
sugi
parents:
diff changeset
100 *
cb825acd883a first commit
sugi
parents:
diff changeset
101 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
102 * @return buffer-based serializer
cb825acd883a first commit
sugi
parents:
diff changeset
103 */
cb825acd883a first commit
sugi
parents:
diff changeset
104 public BufferPacker createBufferPacker() {
cb825acd883a first commit
sugi
parents:
diff changeset
105 return new MessagePackBufferPacker(this);
cb825acd883a first commit
sugi
parents:
diff changeset
106 }
cb825acd883a first commit
sugi
parents:
diff changeset
107
cb825acd883a first commit
sugi
parents:
diff changeset
108 /**
cb825acd883a first commit
sugi
parents:
diff changeset
109 * Returns serializer that enables serializing objects into buffer.
cb825acd883a first commit
sugi
parents:
diff changeset
110 *
cb825acd883a first commit
sugi
parents:
diff changeset
111 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
112 * @param bufferSize
cb825acd883a first commit
sugi
parents:
diff changeset
113 * initial size of buffer
cb825acd883a first commit
sugi
parents:
diff changeset
114 * @return buffer-based serializer
cb825acd883a first commit
sugi
parents:
diff changeset
115 */
cb825acd883a first commit
sugi
parents:
diff changeset
116 public BufferPacker createBufferPacker(int bufferSize) {
cb825acd883a first commit
sugi
parents:
diff changeset
117 return new MessagePackBufferPacker(this, bufferSize);
cb825acd883a first commit
sugi
parents:
diff changeset
118 }
cb825acd883a first commit
sugi
parents:
diff changeset
119
cb825acd883a first commit
sugi
parents:
diff changeset
120 /**
cb825acd883a first commit
sugi
parents:
diff changeset
121 * Returns deserializer that enables deserializing
cb825acd883a first commit
sugi
parents:
diff changeset
122 * {@link java.io.InputStream} object.
cb825acd883a first commit
sugi
parents:
diff changeset
123 *
cb825acd883a first commit
sugi
parents:
diff changeset
124 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
125 * @param in
cb825acd883a first commit
sugi
parents:
diff changeset
126 * input stream
cb825acd883a first commit
sugi
parents:
diff changeset
127 * @return stream-based deserializer
cb825acd883a first commit
sugi
parents:
diff changeset
128 */
cb825acd883a first commit
sugi
parents:
diff changeset
129 public Unpacker createUnpacker(InputStream in) {
cb825acd883a first commit
sugi
parents:
diff changeset
130 return new MessagePackUnpacker(this, in);
cb825acd883a first commit
sugi
parents:
diff changeset
131 }
cb825acd883a first commit
sugi
parents:
diff changeset
132
cb825acd883a first commit
sugi
parents:
diff changeset
133 /**
cb825acd883a first commit
sugi
parents:
diff changeset
134 * Returns empty deserializer that enables deserializing buffer.
cb825acd883a first commit
sugi
parents:
diff changeset
135 *
cb825acd883a first commit
sugi
parents:
diff changeset
136 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
137 * @return buffer-based deserializer
cb825acd883a first commit
sugi
parents:
diff changeset
138 */
cb825acd883a first commit
sugi
parents:
diff changeset
139 public BufferUnpacker createBufferUnpacker() {
cb825acd883a first commit
sugi
parents:
diff changeset
140 return new MessagePackBufferUnpacker(this);
cb825acd883a first commit
sugi
parents:
diff changeset
141 }
cb825acd883a first commit
sugi
parents:
diff changeset
142
cb825acd883a first commit
sugi
parents:
diff changeset
143 /**
cb825acd883a first commit
sugi
parents:
diff changeset
144 * Returns deserializer that enables deserializing buffer.
cb825acd883a first commit
sugi
parents:
diff changeset
145 *
cb825acd883a first commit
sugi
parents:
diff changeset
146 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
147 * @param bytes
cb825acd883a first commit
sugi
parents:
diff changeset
148 * input byte array
cb825acd883a first commit
sugi
parents:
diff changeset
149 * @return buffer-based deserializer
cb825acd883a first commit
sugi
parents:
diff changeset
150 */
cb825acd883a first commit
sugi
parents:
diff changeset
151 public BufferUnpacker createBufferUnpacker(byte[] bytes) {
cb825acd883a first commit
sugi
parents:
diff changeset
152 return createBufferUnpacker().wrap(bytes);
cb825acd883a first commit
sugi
parents:
diff changeset
153 }
cb825acd883a first commit
sugi
parents:
diff changeset
154
cb825acd883a first commit
sugi
parents:
diff changeset
155 /**
cb825acd883a first commit
sugi
parents:
diff changeset
156 * Returns deserializer that enables deserializing buffer.
cb825acd883a first commit
sugi
parents:
diff changeset
157 *
cb825acd883a first commit
sugi
parents:
diff changeset
158 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
159 * @param bytes
cb825acd883a first commit
sugi
parents:
diff changeset
160 * @param off
cb825acd883a first commit
sugi
parents:
diff changeset
161 * @param len
cb825acd883a first commit
sugi
parents:
diff changeset
162 * @return buffer-based deserializer
cb825acd883a first commit
sugi
parents:
diff changeset
163 */
cb825acd883a first commit
sugi
parents:
diff changeset
164 public BufferUnpacker createBufferUnpacker(byte[] bytes, int off, int len) {
cb825acd883a first commit
sugi
parents:
diff changeset
165 return createBufferUnpacker().wrap(bytes, off, len);
cb825acd883a first commit
sugi
parents:
diff changeset
166 }
cb825acd883a first commit
sugi
parents:
diff changeset
167
cb825acd883a first commit
sugi
parents:
diff changeset
168 /**
cb825acd883a first commit
sugi
parents:
diff changeset
169 * Returns deserializer that enables deserializing buffer.
cb825acd883a first commit
sugi
parents:
diff changeset
170 *
cb825acd883a first commit
sugi
parents:
diff changeset
171 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
172 * @param buffer
cb825acd883a first commit
sugi
parents:
diff changeset
173 * input {@link java.nio.ByteBuffer} object
cb825acd883a first commit
sugi
parents:
diff changeset
174 * @return buffer-based deserializer
cb825acd883a first commit
sugi
parents:
diff changeset
175 */
cb825acd883a first commit
sugi
parents:
diff changeset
176 public BufferUnpacker createBufferUnpacker(ByteBuffer buffer) {
cb825acd883a first commit
sugi
parents:
diff changeset
177 return createBufferUnpacker().wrap(buffer);
cb825acd883a first commit
sugi
parents:
diff changeset
178 }
cb825acd883a first commit
sugi
parents:
diff changeset
179
cb825acd883a first commit
sugi
parents:
diff changeset
180 /**
cb825acd883a first commit
sugi
parents:
diff changeset
181 * Serializes specified object.
cb825acd883a first commit
sugi
parents:
diff changeset
182 *
cb825acd883a first commit
sugi
parents:
diff changeset
183 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
184 * @param v
cb825acd883a first commit
sugi
parents:
diff changeset
185 * serialized object
cb825acd883a first commit
sugi
parents:
diff changeset
186 * @return output byte array
cb825acd883a first commit
sugi
parents:
diff changeset
187 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
188 */
cb825acd883a first commit
sugi
parents:
diff changeset
189 public <T> byte[] write(T v) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
190 BufferPacker pk = createBufferPacker();
cb825acd883a first commit
sugi
parents:
diff changeset
191 if (v == null) {
cb825acd883a first commit
sugi
parents:
diff changeset
192 pk.writeNil();
cb825acd883a first commit
sugi
parents:
diff changeset
193 } else {
cb825acd883a first commit
sugi
parents:
diff changeset
194 @SuppressWarnings("unchecked")
cb825acd883a first commit
sugi
parents:
diff changeset
195 Template<T> tmpl = registry.lookup(v.getClass());
cb825acd883a first commit
sugi
parents:
diff changeset
196 tmpl.write(pk, v);
cb825acd883a first commit
sugi
parents:
diff changeset
197 }
cb825acd883a first commit
sugi
parents:
diff changeset
198 return pk.toByteArray();
cb825acd883a first commit
sugi
parents:
diff changeset
199 }
cb825acd883a first commit
sugi
parents:
diff changeset
200
cb825acd883a first commit
sugi
parents:
diff changeset
201 /**
cb825acd883a first commit
sugi
parents:
diff changeset
202 * Serializes specified object. It allows serializing object by specified
cb825acd883a first commit
sugi
parents:
diff changeset
203 * template.
cb825acd883a first commit
sugi
parents:
diff changeset
204 *
cb825acd883a first commit
sugi
parents:
diff changeset
205 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
206 * @param v
cb825acd883a first commit
sugi
parents:
diff changeset
207 * @param template
cb825acd883a first commit
sugi
parents:
diff changeset
208 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
209 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
210 */
cb825acd883a first commit
sugi
parents:
diff changeset
211 public <T> byte[] write(T v, Template<T> template) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
212 BufferPacker pk = createBufferPacker();
cb825acd883a first commit
sugi
parents:
diff changeset
213 template.write(pk, v);
cb825acd883a first commit
sugi
parents:
diff changeset
214 return pk.toByteArray();
cb825acd883a first commit
sugi
parents:
diff changeset
215 }
cb825acd883a first commit
sugi
parents:
diff changeset
216
cb825acd883a first commit
sugi
parents:
diff changeset
217 /**
cb825acd883a first commit
sugi
parents:
diff changeset
218 * Serializes specified object to output stream.
cb825acd883a first commit
sugi
parents:
diff changeset
219 *
cb825acd883a first commit
sugi
parents:
diff changeset
220 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
221 * @param out
cb825acd883a first commit
sugi
parents:
diff changeset
222 * output stream
cb825acd883a first commit
sugi
parents:
diff changeset
223 * @param v
cb825acd883a first commit
sugi
parents:
diff changeset
224 * serialized object
cb825acd883a first commit
sugi
parents:
diff changeset
225 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
226 */
cb825acd883a first commit
sugi
parents:
diff changeset
227 public <T> void write(OutputStream out, T v) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
228 Packer pk = createPacker(out);
cb825acd883a first commit
sugi
parents:
diff changeset
229 if (v == null) {
cb825acd883a first commit
sugi
parents:
diff changeset
230 pk.writeNil();
cb825acd883a first commit
sugi
parents:
diff changeset
231 } else {
cb825acd883a first commit
sugi
parents:
diff changeset
232 @SuppressWarnings("unchecked")
cb825acd883a first commit
sugi
parents:
diff changeset
233 Template<T> tmpl = registry.lookup(v.getClass());
cb825acd883a first commit
sugi
parents:
diff changeset
234 tmpl.write(pk, v);
cb825acd883a first commit
sugi
parents:
diff changeset
235 }
cb825acd883a first commit
sugi
parents:
diff changeset
236 }
cb825acd883a first commit
sugi
parents:
diff changeset
237
cb825acd883a first commit
sugi
parents:
diff changeset
238 /**
cb825acd883a first commit
sugi
parents:
diff changeset
239 * Serializes object to output stream by specified template.
cb825acd883a first commit
sugi
parents:
diff changeset
240 *
cb825acd883a first commit
sugi
parents:
diff changeset
241 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
242 * @param out
cb825acd883a first commit
sugi
parents:
diff changeset
243 * output stream
cb825acd883a first commit
sugi
parents:
diff changeset
244 * @param v
cb825acd883a first commit
sugi
parents:
diff changeset
245 * serialized object
cb825acd883a first commit
sugi
parents:
diff changeset
246 * @param template
cb825acd883a first commit
sugi
parents:
diff changeset
247 * serializer/deserializer for the object
cb825acd883a first commit
sugi
parents:
diff changeset
248 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
249 */
cb825acd883a first commit
sugi
parents:
diff changeset
250 public <T> void write(OutputStream out, T v, Template<T> template)
cb825acd883a first commit
sugi
parents:
diff changeset
251 throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
252 Packer pk = createPacker(out);
cb825acd883a first commit
sugi
parents:
diff changeset
253 template.write(pk, v);
cb825acd883a first commit
sugi
parents:
diff changeset
254 }
cb825acd883a first commit
sugi
parents:
diff changeset
255
cb825acd883a first commit
sugi
parents:
diff changeset
256 /**
cb825acd883a first commit
sugi
parents:
diff changeset
257 * Serializes {@link org.msgpack.type.Value} object to byte array.
cb825acd883a first commit
sugi
parents:
diff changeset
258 *
cb825acd883a first commit
sugi
parents:
diff changeset
259 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
260 * @param v
cb825acd883a first commit
sugi
parents:
diff changeset
261 * serialized {@link org.msgpack.type.Value} object
cb825acd883a first commit
sugi
parents:
diff changeset
262 * @return output byte array
cb825acd883a first commit
sugi
parents:
diff changeset
263 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
264 */
cb825acd883a first commit
sugi
parents:
diff changeset
265 public byte[] write(Value v) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
266 // FIXME ValueTemplate should do this
cb825acd883a first commit
sugi
parents:
diff changeset
267 BufferPacker pk = createBufferPacker();
cb825acd883a first commit
sugi
parents:
diff changeset
268 pk.write(v);
cb825acd883a first commit
sugi
parents:
diff changeset
269 return pk.toByteArray();
cb825acd883a first commit
sugi
parents:
diff changeset
270 }
cb825acd883a first commit
sugi
parents:
diff changeset
271
cb825acd883a first commit
sugi
parents:
diff changeset
272 /**
cb825acd883a first commit
sugi
parents:
diff changeset
273 * Deserializes specified byte array to {@link org.msgpack.type.Value}
cb825acd883a first commit
sugi
parents:
diff changeset
274 * object.
cb825acd883a first commit
sugi
parents:
diff changeset
275 *
cb825acd883a first commit
sugi
parents:
diff changeset
276 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
277 * @param bytes
cb825acd883a first commit
sugi
parents:
diff changeset
278 * input byte array
cb825acd883a first commit
sugi
parents:
diff changeset
279 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
280 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
281 */
cb825acd883a first commit
sugi
parents:
diff changeset
282 public Value read(byte[] bytes) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
283 return read(bytes, 0, bytes.length);
cb825acd883a first commit
sugi
parents:
diff changeset
284 }
cb825acd883a first commit
sugi
parents:
diff changeset
285
cb825acd883a first commit
sugi
parents:
diff changeset
286 /**
cb825acd883a first commit
sugi
parents:
diff changeset
287 * Deserializes byte array to {@link org.msgpack.type.Value} object.
cb825acd883a first commit
sugi
parents:
diff changeset
288 *
cb825acd883a first commit
sugi
parents:
diff changeset
289 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
290 * @param bytes
cb825acd883a first commit
sugi
parents:
diff changeset
291 * @param off
cb825acd883a first commit
sugi
parents:
diff changeset
292 * @param len
cb825acd883a first commit
sugi
parents:
diff changeset
293 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
294 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
295 */
cb825acd883a first commit
sugi
parents:
diff changeset
296 public Value read(byte[] bytes, int off, int len) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
297 return createBufferUnpacker(bytes, off, len).readValue();
cb825acd883a first commit
sugi
parents:
diff changeset
298 }
cb825acd883a first commit
sugi
parents:
diff changeset
299
cb825acd883a first commit
sugi
parents:
diff changeset
300 /**
cb825acd883a first commit
sugi
parents:
diff changeset
301 * Deserializes {@link java.nio.ByteBuffer} object to
cb825acd883a first commit
sugi
parents:
diff changeset
302 * {@link org.msgpack.type.Value} object.
cb825acd883a first commit
sugi
parents:
diff changeset
303 *
cb825acd883a first commit
sugi
parents:
diff changeset
304 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
305 * @param buffer
cb825acd883a first commit
sugi
parents:
diff changeset
306 * input buffer
cb825acd883a first commit
sugi
parents:
diff changeset
307 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
308 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
309 */
cb825acd883a first commit
sugi
parents:
diff changeset
310 public Value read(ByteBuffer buffer) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
311 return createBufferUnpacker(buffer).readValue();
cb825acd883a first commit
sugi
parents:
diff changeset
312 }
cb825acd883a first commit
sugi
parents:
diff changeset
313
cb825acd883a first commit
sugi
parents:
diff changeset
314 /**
cb825acd883a first commit
sugi
parents:
diff changeset
315 * Deserializes input stream to {@link org.msgpack.type.Value} object.
cb825acd883a first commit
sugi
parents:
diff changeset
316 *
cb825acd883a first commit
sugi
parents:
diff changeset
317 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
318 * @param in
cb825acd883a first commit
sugi
parents:
diff changeset
319 * input stream
cb825acd883a first commit
sugi
parents:
diff changeset
320 * @return deserialized {@link org.msgpack.type.Value} object
cb825acd883a first commit
sugi
parents:
diff changeset
321 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
322 */
cb825acd883a first commit
sugi
parents:
diff changeset
323 public Value read(InputStream in) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
324 return createUnpacker(in).readValue();
cb825acd883a first commit
sugi
parents:
diff changeset
325 }
cb825acd883a first commit
sugi
parents:
diff changeset
326
cb825acd883a first commit
sugi
parents:
diff changeset
327 /**
cb825acd883a first commit
sugi
parents:
diff changeset
328 * Deserializes byte array to object.
cb825acd883a first commit
sugi
parents:
diff changeset
329 *
cb825acd883a first commit
sugi
parents:
diff changeset
330 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
331 * @param bytes
cb825acd883a first commit
sugi
parents:
diff changeset
332 * input byte array
cb825acd883a first commit
sugi
parents:
diff changeset
333 * @param v
cb825acd883a first commit
sugi
parents:
diff changeset
334 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
335 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
336 */
cb825acd883a first commit
sugi
parents:
diff changeset
337 public <T> T read(byte[] bytes, T v) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
338 @SuppressWarnings("unchecked")
cb825acd883a first commit
sugi
parents:
diff changeset
339 Template<T> tmpl = registry.lookup(v.getClass());
cb825acd883a first commit
sugi
parents:
diff changeset
340 return read(bytes, v, tmpl);
cb825acd883a first commit
sugi
parents:
diff changeset
341 }
cb825acd883a first commit
sugi
parents:
diff changeset
342
cb825acd883a first commit
sugi
parents:
diff changeset
343 /**
cb825acd883a first commit
sugi
parents:
diff changeset
344 * Deserializes byte array to object according to template.
cb825acd883a first commit
sugi
parents:
diff changeset
345 *
cb825acd883a first commit
sugi
parents:
diff changeset
346 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
347 * @param bytes
cb825acd883a first commit
sugi
parents:
diff changeset
348 * input byte array
cb825acd883a first commit
sugi
parents:
diff changeset
349 * @param tmpl
cb825acd883a first commit
sugi
parents:
diff changeset
350 * template
cb825acd883a first commit
sugi
parents:
diff changeset
351 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
352 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
353 */
cb825acd883a first commit
sugi
parents:
diff changeset
354 public <T> T read(byte[] bytes, Template<T> tmpl) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
355 return read(bytes, null, tmpl);
cb825acd883a first commit
sugi
parents:
diff changeset
356 }
cb825acd883a first commit
sugi
parents:
diff changeset
357
cb825acd883a first commit
sugi
parents:
diff changeset
358 /**
cb825acd883a first commit
sugi
parents:
diff changeset
359 * Deserializes byte array to object of specified class.
cb825acd883a first commit
sugi
parents:
diff changeset
360 *
cb825acd883a first commit
sugi
parents:
diff changeset
361 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
362 * @param bytes
cb825acd883a first commit
sugi
parents:
diff changeset
363 * input byte array
cb825acd883a first commit
sugi
parents:
diff changeset
364 * @param c
cb825acd883a first commit
sugi
parents:
diff changeset
365 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
366 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
367 */
cb825acd883a first commit
sugi
parents:
diff changeset
368 public <T> T read(byte[] bytes, Class<T> c) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
369 @SuppressWarnings("unchecked")
cb825acd883a first commit
sugi
parents:
diff changeset
370 Template<T> tmpl = registry.lookup(c);
cb825acd883a first commit
sugi
parents:
diff changeset
371 return read(bytes, null, tmpl);
cb825acd883a first commit
sugi
parents:
diff changeset
372 }
cb825acd883a first commit
sugi
parents:
diff changeset
373
cb825acd883a first commit
sugi
parents:
diff changeset
374 /**
cb825acd883a first commit
sugi
parents:
diff changeset
375 * Deserializes byte array to object according to specified template.
cb825acd883a first commit
sugi
parents:
diff changeset
376 *
cb825acd883a first commit
sugi
parents:
diff changeset
377 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
378 * @param bytes
cb825acd883a first commit
sugi
parents:
diff changeset
379 * input byte array
cb825acd883a first commit
sugi
parents:
diff changeset
380 * @param v
cb825acd883a first commit
sugi
parents:
diff changeset
381 * @param tmpl
cb825acd883a first commit
sugi
parents:
diff changeset
382 * template
cb825acd883a first commit
sugi
parents:
diff changeset
383 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
384 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
385 */
cb825acd883a first commit
sugi
parents:
diff changeset
386 public <T> T read(byte[] bytes, T v, Template<T> tmpl) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
387 BufferUnpacker u = createBufferUnpacker(bytes);
cb825acd883a first commit
sugi
parents:
diff changeset
388 return (T) tmpl.read(u, v);
cb825acd883a first commit
sugi
parents:
diff changeset
389 }
cb825acd883a first commit
sugi
parents:
diff changeset
390
cb825acd883a first commit
sugi
parents:
diff changeset
391 /**
cb825acd883a first commit
sugi
parents:
diff changeset
392 * Deserializes byte array to object.
cb825acd883a first commit
sugi
parents:
diff changeset
393 *
cb825acd883a first commit
sugi
parents:
diff changeset
394 * @since 0.6.8
cb825acd883a first commit
sugi
parents:
diff changeset
395 * @param bytes
cb825acd883a first commit
sugi
parents:
diff changeset
396 * input byte array
cb825acd883a first commit
sugi
parents:
diff changeset
397 * @param v
cb825acd883a first commit
sugi
parents:
diff changeset
398 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
399 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
400 */
cb825acd883a first commit
sugi
parents:
diff changeset
401 public <T> T read(byte[] bytes, int off, int len, Class<T> c) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
402 @SuppressWarnings("unchecked")
cb825acd883a first commit
sugi
parents:
diff changeset
403 Template<T> tmpl = registry.lookup(c);
cb825acd883a first commit
sugi
parents:
diff changeset
404 BufferUnpacker u = createBufferUnpacker(bytes, off, len);
cb825acd883a first commit
sugi
parents:
diff changeset
405 return (T) tmpl.read(u, null);
cb825acd883a first commit
sugi
parents:
diff changeset
406 }
cb825acd883a first commit
sugi
parents:
diff changeset
407
cb825acd883a first commit
sugi
parents:
diff changeset
408 /**
cb825acd883a first commit
sugi
parents:
diff changeset
409 * Deserializes buffer to object.
cb825acd883a first commit
sugi
parents:
diff changeset
410 *
cb825acd883a first commit
sugi
parents:
diff changeset
411 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
412 * @param b
cb825acd883a first commit
sugi
parents:
diff changeset
413 * input {@link java.nio.ByteBuffer} object
cb825acd883a first commit
sugi
parents:
diff changeset
414 * @param v
cb825acd883a first commit
sugi
parents:
diff changeset
415 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
416 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
417 */
cb825acd883a first commit
sugi
parents:
diff changeset
418 public <T> T read(ByteBuffer b, T v) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
419 @SuppressWarnings("unchecked")
cb825acd883a first commit
sugi
parents:
diff changeset
420 Template<T> tmpl = registry.lookup(v.getClass());
cb825acd883a first commit
sugi
parents:
diff changeset
421 return read(b, v, tmpl);
cb825acd883a first commit
sugi
parents:
diff changeset
422 }
cb825acd883a first commit
sugi
parents:
diff changeset
423
cb825acd883a first commit
sugi
parents:
diff changeset
424 /**
cb825acd883a first commit
sugi
parents:
diff changeset
425 * Deserializes buffer to object according to template.
cb825acd883a first commit
sugi
parents:
diff changeset
426 *
cb825acd883a first commit
sugi
parents:
diff changeset
427 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
428 * @param b
cb825acd883a first commit
sugi
parents:
diff changeset
429 * input buffer object
cb825acd883a first commit
sugi
parents:
diff changeset
430 * @param tmpl
cb825acd883a first commit
sugi
parents:
diff changeset
431 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
432 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
433 */
cb825acd883a first commit
sugi
parents:
diff changeset
434 public <T> T read(ByteBuffer b, Template<T> tmpl) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
435 return read(b, null, tmpl);
cb825acd883a first commit
sugi
parents:
diff changeset
436 }
cb825acd883a first commit
sugi
parents:
diff changeset
437
cb825acd883a first commit
sugi
parents:
diff changeset
438 /**
cb825acd883a first commit
sugi
parents:
diff changeset
439 * Deserializes buffer to object of specified class.
cb825acd883a first commit
sugi
parents:
diff changeset
440 *
cb825acd883a first commit
sugi
parents:
diff changeset
441 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
442 * @param b
cb825acd883a first commit
sugi
parents:
diff changeset
443 * @param c
cb825acd883a first commit
sugi
parents:
diff changeset
444 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
445 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
446 */
cb825acd883a first commit
sugi
parents:
diff changeset
447 public <T> T read(ByteBuffer b, Class<T> c) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
448 @SuppressWarnings("unchecked")
cb825acd883a first commit
sugi
parents:
diff changeset
449 Template<T> tmpl = registry.lookup(c);
cb825acd883a first commit
sugi
parents:
diff changeset
450 return read(b, null, tmpl);
cb825acd883a first commit
sugi
parents:
diff changeset
451 }
cb825acd883a first commit
sugi
parents:
diff changeset
452
cb825acd883a first commit
sugi
parents:
diff changeset
453 /**
cb825acd883a first commit
sugi
parents:
diff changeset
454 * Deserializes buffer to object according to template.
cb825acd883a first commit
sugi
parents:
diff changeset
455 *
cb825acd883a first commit
sugi
parents:
diff changeset
456 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
457 * @param b
cb825acd883a first commit
sugi
parents:
diff changeset
458 * input buffer object
cb825acd883a first commit
sugi
parents:
diff changeset
459 * @param v
cb825acd883a first commit
sugi
parents:
diff changeset
460 * @param tmpl
cb825acd883a first commit
sugi
parents:
diff changeset
461 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
462 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
463 */
cb825acd883a first commit
sugi
parents:
diff changeset
464 public <T> T read(ByteBuffer b, T v, Template<T> tmpl) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
465 BufferUnpacker u = createBufferUnpacker(b);
cb825acd883a first commit
sugi
parents:
diff changeset
466 return tmpl.read(u, v);
cb825acd883a first commit
sugi
parents:
diff changeset
467 }
cb825acd883a first commit
sugi
parents:
diff changeset
468
cb825acd883a first commit
sugi
parents:
diff changeset
469 /**
cb825acd883a first commit
sugi
parents:
diff changeset
470 * Deserializes input stream to object.
cb825acd883a first commit
sugi
parents:
diff changeset
471 *
cb825acd883a first commit
sugi
parents:
diff changeset
472 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
473 * @param in
cb825acd883a first commit
sugi
parents:
diff changeset
474 * input stream
cb825acd883a first commit
sugi
parents:
diff changeset
475 * @param v
cb825acd883a first commit
sugi
parents:
diff changeset
476 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
477 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
478 */
cb825acd883a first commit
sugi
parents:
diff changeset
479 public <T> T read(InputStream in, T v) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
480 @SuppressWarnings("unchecked")
cb825acd883a first commit
sugi
parents:
diff changeset
481 Template<T> tmpl = registry.lookup(v.getClass());
cb825acd883a first commit
sugi
parents:
diff changeset
482 return read(in, v, tmpl);
cb825acd883a first commit
sugi
parents:
diff changeset
483 }
cb825acd883a first commit
sugi
parents:
diff changeset
484
cb825acd883a first commit
sugi
parents:
diff changeset
485 /**
cb825acd883a first commit
sugi
parents:
diff changeset
486 * Deserializes input stream to object according to template.
cb825acd883a first commit
sugi
parents:
diff changeset
487 *
cb825acd883a first commit
sugi
parents:
diff changeset
488 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
489 * @param in
cb825acd883a first commit
sugi
parents:
diff changeset
490 * input stream
cb825acd883a first commit
sugi
parents:
diff changeset
491 * @param tmpl
cb825acd883a first commit
sugi
parents:
diff changeset
492 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
493 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
494 */
cb825acd883a first commit
sugi
parents:
diff changeset
495 public <T> T read(InputStream in, Template<T> tmpl) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
496 return read(in, null, tmpl);
cb825acd883a first commit
sugi
parents:
diff changeset
497 }
cb825acd883a first commit
sugi
parents:
diff changeset
498
cb825acd883a first commit
sugi
parents:
diff changeset
499 /**
cb825acd883a first commit
sugi
parents:
diff changeset
500 * Deserializes input stream to object of specified class.
cb825acd883a first commit
sugi
parents:
diff changeset
501 *
cb825acd883a first commit
sugi
parents:
diff changeset
502 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
503 * @param in
cb825acd883a first commit
sugi
parents:
diff changeset
504 * @param c
cb825acd883a first commit
sugi
parents:
diff changeset
505 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
506 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
507 */
cb825acd883a first commit
sugi
parents:
diff changeset
508 public <T> T read(InputStream in, Class<T> c) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
509 @SuppressWarnings("unchecked")
cb825acd883a first commit
sugi
parents:
diff changeset
510 Template<T> tmpl = registry.lookup(c);
cb825acd883a first commit
sugi
parents:
diff changeset
511 return read(in, null, tmpl);
cb825acd883a first commit
sugi
parents:
diff changeset
512 }
cb825acd883a first commit
sugi
parents:
diff changeset
513
cb825acd883a first commit
sugi
parents:
diff changeset
514 /**
cb825acd883a first commit
sugi
parents:
diff changeset
515 * Deserializes input stream to object according to template
cb825acd883a first commit
sugi
parents:
diff changeset
516 *
cb825acd883a first commit
sugi
parents:
diff changeset
517 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
518 * @param in
cb825acd883a first commit
sugi
parents:
diff changeset
519 * input stream
cb825acd883a first commit
sugi
parents:
diff changeset
520 * @param v
cb825acd883a first commit
sugi
parents:
diff changeset
521 * @param tmpl
cb825acd883a first commit
sugi
parents:
diff changeset
522 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
523 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
524 */
cb825acd883a first commit
sugi
parents:
diff changeset
525 public <T> T read(InputStream in, T v, Template<T> tmpl) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
526 Unpacker u = createUnpacker(in);
cb825acd883a first commit
sugi
parents:
diff changeset
527 return tmpl.read(u, v);
cb825acd883a first commit
sugi
parents:
diff changeset
528 }
cb825acd883a first commit
sugi
parents:
diff changeset
529
cb825acd883a first commit
sugi
parents:
diff changeset
530 /**
cb825acd883a first commit
sugi
parents:
diff changeset
531 * Converts specified {@link org.msgpack.type.Value} object to object.
cb825acd883a first commit
sugi
parents:
diff changeset
532 *
cb825acd883a first commit
sugi
parents:
diff changeset
533 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
534 * @param v
cb825acd883a first commit
sugi
parents:
diff changeset
535 * @param to
cb825acd883a first commit
sugi
parents:
diff changeset
536 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
537 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
538 */
cb825acd883a first commit
sugi
parents:
diff changeset
539 public <T> T convert(Value v, T to) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
540 @SuppressWarnings("unchecked")
cb825acd883a first commit
sugi
parents:
diff changeset
541 Template<T> tmpl = registry.lookup(to.getClass());
cb825acd883a first commit
sugi
parents:
diff changeset
542 return tmpl.read(new Converter(this, v), to);
cb825acd883a first commit
sugi
parents:
diff changeset
543 }
cb825acd883a first commit
sugi
parents:
diff changeset
544
cb825acd883a first commit
sugi
parents:
diff changeset
545 /**
cb825acd883a first commit
sugi
parents:
diff changeset
546 * Converts {@link org.msgpack.type.Value} object to object specified class.
cb825acd883a first commit
sugi
parents:
diff changeset
547 *
cb825acd883a first commit
sugi
parents:
diff changeset
548 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
549 * @param v
cb825acd883a first commit
sugi
parents:
diff changeset
550 * @param c
cb825acd883a first commit
sugi
parents:
diff changeset
551 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
552 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
553 */
cb825acd883a first commit
sugi
parents:
diff changeset
554 public <T> T convert(Value v, Class<T> c) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
555 @SuppressWarnings("unchecked")
cb825acd883a first commit
sugi
parents:
diff changeset
556 Template<T> tmpl = registry.lookup(c);
cb825acd883a first commit
sugi
parents:
diff changeset
557 return tmpl.read(new Converter(this, v), null);
cb825acd883a first commit
sugi
parents:
diff changeset
558 }
cb825acd883a first commit
sugi
parents:
diff changeset
559
cb825acd883a first commit
sugi
parents:
diff changeset
560 /**
cb825acd883a first commit
sugi
parents:
diff changeset
561 * Converts {@link org.msgpack.type.Value} object to object according to template
cb825acd883a first commit
sugi
parents:
diff changeset
562 *
cb825acd883a first commit
sugi
parents:
diff changeset
563 * @since 0.6.8
cb825acd883a first commit
sugi
parents:
diff changeset
564 * @param v
cb825acd883a first commit
sugi
parents:
diff changeset
565 * @param tmpl
cb825acd883a first commit
sugi
parents:
diff changeset
566 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
567 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
568 */
cb825acd883a first commit
sugi
parents:
diff changeset
569 public <T> T convert(Value v, Template<T> tmpl) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
570 return tmpl.read(new Converter(this, v), null);
cb825acd883a first commit
sugi
parents:
diff changeset
571 }
cb825acd883a first commit
sugi
parents:
diff changeset
572
cb825acd883a first commit
sugi
parents:
diff changeset
573 /**
cb825acd883a first commit
sugi
parents:
diff changeset
574 * Unconverts specified object to {@link org.msgpack.type.Value} object.
cb825acd883a first commit
sugi
parents:
diff changeset
575 *
cb825acd883a first commit
sugi
parents:
diff changeset
576 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
577 * @param v
cb825acd883a first commit
sugi
parents:
diff changeset
578 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
579 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
580 */
cb825acd883a first commit
sugi
parents:
diff changeset
581 public <T> Value unconvert(T v) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
582 Unconverter pk = new Unconverter(this);
cb825acd883a first commit
sugi
parents:
diff changeset
583 if (v == null) {
cb825acd883a first commit
sugi
parents:
diff changeset
584 pk.writeNil();
cb825acd883a first commit
sugi
parents:
diff changeset
585 } else {
cb825acd883a first commit
sugi
parents:
diff changeset
586 @SuppressWarnings("unchecked")
cb825acd883a first commit
sugi
parents:
diff changeset
587 Template<T> tmpl = registry.lookup(v.getClass());
cb825acd883a first commit
sugi
parents:
diff changeset
588 tmpl.write(pk, v);
cb825acd883a first commit
sugi
parents:
diff changeset
589 }
cb825acd883a first commit
sugi
parents:
diff changeset
590 return pk.getResult();
cb825acd883a first commit
sugi
parents:
diff changeset
591 }
cb825acd883a first commit
sugi
parents:
diff changeset
592
cb825acd883a first commit
sugi
parents:
diff changeset
593 /**
cb825acd883a first commit
sugi
parents:
diff changeset
594 * Registers {@link org.msgpack.template.Template} object for objects of
cb825acd883a first commit
sugi
parents:
diff changeset
595 * specified class. <tt>Template</tt> object is a pair of serializer and
cb825acd883a first commit
sugi
parents:
diff changeset
596 * deserializer for object serialization. It is generated automatically.
cb825acd883a first commit
sugi
parents:
diff changeset
597 *
cb825acd883a first commit
sugi
parents:
diff changeset
598 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
599 * @param type
cb825acd883a first commit
sugi
parents:
diff changeset
600 */
cb825acd883a first commit
sugi
parents:
diff changeset
601 public void register(Class<?> type) {
cb825acd883a first commit
sugi
parents:
diff changeset
602 registry.register(type);
cb825acd883a first commit
sugi
parents:
diff changeset
603 }
cb825acd883a first commit
sugi
parents:
diff changeset
604
cb825acd883a first commit
sugi
parents:
diff changeset
605 /**
cb825acd883a first commit
sugi
parents:
diff changeset
606 * Registers specified {@link org.msgpack.template.Template} object
cb825acd883a first commit
sugi
parents:
diff changeset
607 * associated by class.
cb825acd883a first commit
sugi
parents:
diff changeset
608 *
cb825acd883a first commit
sugi
parents:
diff changeset
609 * @see #register(Class)
cb825acd883a first commit
sugi
parents:
diff changeset
610 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
611 * @param type
cb825acd883a first commit
sugi
parents:
diff changeset
612 * @param template
cb825acd883a first commit
sugi
parents:
diff changeset
613 */
cb825acd883a first commit
sugi
parents:
diff changeset
614 public <T> void register(Class<T> type, Template<T> template) {
cb825acd883a first commit
sugi
parents:
diff changeset
615 registry.register(type, template);
cb825acd883a first commit
sugi
parents:
diff changeset
616 }
cb825acd883a first commit
sugi
parents:
diff changeset
617
cb825acd883a first commit
sugi
parents:
diff changeset
618 /**
cb825acd883a first commit
sugi
parents:
diff changeset
619 * Unregisters {@link org.msgpack.template.Template} object for objects of
cb825acd883a first commit
sugi
parents:
diff changeset
620 * specified class.
cb825acd883a first commit
sugi
parents:
diff changeset
621 *
cb825acd883a first commit
sugi
parents:
diff changeset
622 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
623 * @param type
cb825acd883a first commit
sugi
parents:
diff changeset
624 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
625 */
cb825acd883a first commit
sugi
parents:
diff changeset
626 public boolean unregister(Class<?> type) {
cb825acd883a first commit
sugi
parents:
diff changeset
627 return registry.unregister(type);
cb825acd883a first commit
sugi
parents:
diff changeset
628 }
cb825acd883a first commit
sugi
parents:
diff changeset
629
cb825acd883a first commit
sugi
parents:
diff changeset
630 /**
cb825acd883a first commit
sugi
parents:
diff changeset
631 * Unregisters all {@link org.msgpack.template.Template} objects that have
cb825acd883a first commit
sugi
parents:
diff changeset
632 * been registered in advance.
cb825acd883a first commit
sugi
parents:
diff changeset
633 *
cb825acd883a first commit
sugi
parents:
diff changeset
634 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
635 */
cb825acd883a first commit
sugi
parents:
diff changeset
636 public void unregister() {
cb825acd883a first commit
sugi
parents:
diff changeset
637 registry.unregister();
cb825acd883a first commit
sugi
parents:
diff changeset
638 }
cb825acd883a first commit
sugi
parents:
diff changeset
639
cb825acd883a first commit
sugi
parents:
diff changeset
640 /**
cb825acd883a first commit
sugi
parents:
diff changeset
641 * Looks up a {@link org.msgpack.template.Template} object, which is
cb825acd883a first commit
sugi
parents:
diff changeset
642 * serializer/deserializer associated by specified class.
cb825acd883a first commit
sugi
parents:
diff changeset
643 *
cb825acd883a first commit
sugi
parents:
diff changeset
644 * @since 0.6.0
cb825acd883a first commit
sugi
parents:
diff changeset
645 * @param type
cb825acd883a first commit
sugi
parents:
diff changeset
646 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
647 */
cb825acd883a first commit
sugi
parents:
diff changeset
648 @SuppressWarnings("unchecked")
cb825acd883a first commit
sugi
parents:
diff changeset
649 public <T> Template<T> lookup(Class<T> type) {
cb825acd883a first commit
sugi
parents:
diff changeset
650 return registry.lookup(type);
cb825acd883a first commit
sugi
parents:
diff changeset
651 }
cb825acd883a first commit
sugi
parents:
diff changeset
652
cb825acd883a first commit
sugi
parents:
diff changeset
653 public Template<?> lookup(Type type) {
cb825acd883a first commit
sugi
parents:
diff changeset
654 return registry.lookup(type);
cb825acd883a first commit
sugi
parents:
diff changeset
655 }
cb825acd883a first commit
sugi
parents:
diff changeset
656
cb825acd883a first commit
sugi
parents:
diff changeset
657 private static final MessagePack globalMessagePack = new MessagePack();
cb825acd883a first commit
sugi
parents:
diff changeset
658
cb825acd883a first commit
sugi
parents:
diff changeset
659 /**
cb825acd883a first commit
sugi
parents:
diff changeset
660 * Serializes specified object and returns the byte array.
cb825acd883a first commit
sugi
parents:
diff changeset
661 *
cb825acd883a first commit
sugi
parents:
diff changeset
662 * @deprecated {@link MessagePack#write(Object)}
cb825acd883a first commit
sugi
parents:
diff changeset
663 * @param v
cb825acd883a first commit
sugi
parents:
diff changeset
664 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
665 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
666 */
cb825acd883a first commit
sugi
parents:
diff changeset
667 @Deprecated
cb825acd883a first commit
sugi
parents:
diff changeset
668 public static byte[] pack(Object v) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
669 return globalMessagePack.write(v);
cb825acd883a first commit
sugi
parents:
diff changeset
670 }
cb825acd883a first commit
sugi
parents:
diff changeset
671
cb825acd883a first commit
sugi
parents:
diff changeset
672 /**
cb825acd883a first commit
sugi
parents:
diff changeset
673 * Serializes specified object to output stream.
cb825acd883a first commit
sugi
parents:
diff changeset
674 *
cb825acd883a first commit
sugi
parents:
diff changeset
675 * @deprecated {@link MessagePack#write(OutputStream, Object)}
cb825acd883a first commit
sugi
parents:
diff changeset
676 * @param out
cb825acd883a first commit
sugi
parents:
diff changeset
677 * @param v
cb825acd883a first commit
sugi
parents:
diff changeset
678 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
679 */
cb825acd883a first commit
sugi
parents:
diff changeset
680 @Deprecated
cb825acd883a first commit
sugi
parents:
diff changeset
681 public static void pack(OutputStream out, Object v) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
682 globalMessagePack.write(out, v);
cb825acd883a first commit
sugi
parents:
diff changeset
683 }
cb825acd883a first commit
sugi
parents:
diff changeset
684
cb825acd883a first commit
sugi
parents:
diff changeset
685 /**
cb825acd883a first commit
sugi
parents:
diff changeset
686 * Serializes object by specified template and return the byte array.
cb825acd883a first commit
sugi
parents:
diff changeset
687 *
cb825acd883a first commit
sugi
parents:
diff changeset
688 * @deprecated {@link MessagePack#write(Object, Template)}
cb825acd883a first commit
sugi
parents:
diff changeset
689 * @param v
cb825acd883a first commit
sugi
parents:
diff changeset
690 * @param template
cb825acd883a first commit
sugi
parents:
diff changeset
691 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
692 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
693 */
cb825acd883a first commit
sugi
parents:
diff changeset
694 @Deprecated
cb825acd883a first commit
sugi
parents:
diff changeset
695 public static <T> byte[] pack(T v, Template<T> template) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
696 return globalMessagePack.write(v, template);
cb825acd883a first commit
sugi
parents:
diff changeset
697 }
cb825acd883a first commit
sugi
parents:
diff changeset
698
cb825acd883a first commit
sugi
parents:
diff changeset
699 /**
cb825acd883a first commit
sugi
parents:
diff changeset
700 * Serializes object to output stream. The object is serialized by specified
cb825acd883a first commit
sugi
parents:
diff changeset
701 * template.
cb825acd883a first commit
sugi
parents:
diff changeset
702 *
cb825acd883a first commit
sugi
parents:
diff changeset
703 * @deprecated {@link MessagePack#write(OutputStream, Object, Template)}
cb825acd883a first commit
sugi
parents:
diff changeset
704 * @param out
cb825acd883a first commit
sugi
parents:
diff changeset
705 * @param v
cb825acd883a first commit
sugi
parents:
diff changeset
706 * @param template
cb825acd883a first commit
sugi
parents:
diff changeset
707 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
708 */
cb825acd883a first commit
sugi
parents:
diff changeset
709 @Deprecated
cb825acd883a first commit
sugi
parents:
diff changeset
710 public static <T> void pack(OutputStream out, T v, Template<T> template)
cb825acd883a first commit
sugi
parents:
diff changeset
711 throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
712 globalMessagePack.write(out, v, template);
cb825acd883a first commit
sugi
parents:
diff changeset
713 }
cb825acd883a first commit
sugi
parents:
diff changeset
714
cb825acd883a first commit
sugi
parents:
diff changeset
715 /**
cb825acd883a first commit
sugi
parents:
diff changeset
716 * Converts byte array to {@link org.msgpack.type.Value} object.
cb825acd883a first commit
sugi
parents:
diff changeset
717 *
cb825acd883a first commit
sugi
parents:
diff changeset
718 * @deprecated {@link MessagePack#read(byte[])}
cb825acd883a first commit
sugi
parents:
diff changeset
719 * @param bytes
cb825acd883a first commit
sugi
parents:
diff changeset
720 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
721 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
722 */
cb825acd883a first commit
sugi
parents:
diff changeset
723 @Deprecated
cb825acd883a first commit
sugi
parents:
diff changeset
724 public static Value unpack(byte[] bytes) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
725 return globalMessagePack.read(bytes);
cb825acd883a first commit
sugi
parents:
diff changeset
726 }
cb825acd883a first commit
sugi
parents:
diff changeset
727
cb825acd883a first commit
sugi
parents:
diff changeset
728 @Deprecated
cb825acd883a first commit
sugi
parents:
diff changeset
729 public static <T> T unpack(byte[] bytes, Template<T> template) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
730 BufferUnpacker u = new MessagePackBufferUnpacker(globalMessagePack).wrap(bytes);
cb825acd883a first commit
sugi
parents:
diff changeset
731 return template.read(u, null);
cb825acd883a first commit
sugi
parents:
diff changeset
732 }
cb825acd883a first commit
sugi
parents:
diff changeset
733
cb825acd883a first commit
sugi
parents:
diff changeset
734 @Deprecated
cb825acd883a first commit
sugi
parents:
diff changeset
735 public static <T> T unpack(byte[] bytes, Template<T> template, T to) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
736 BufferUnpacker u = new MessagePackBufferUnpacker(globalMessagePack).wrap(bytes);
cb825acd883a first commit
sugi
parents:
diff changeset
737 return template.read(u, to);
cb825acd883a first commit
sugi
parents:
diff changeset
738 }
cb825acd883a first commit
sugi
parents:
diff changeset
739
cb825acd883a first commit
sugi
parents:
diff changeset
740 /**
cb825acd883a first commit
sugi
parents:
diff changeset
741 * Deserializes byte array to object of specified class.
cb825acd883a first commit
sugi
parents:
diff changeset
742 *
cb825acd883a first commit
sugi
parents:
diff changeset
743 * @deprecated {@link MessagePack#read(byte[], Class)}
cb825acd883a first commit
sugi
parents:
diff changeset
744 * @param bytes
cb825acd883a first commit
sugi
parents:
diff changeset
745 * @param klass
cb825acd883a first commit
sugi
parents:
diff changeset
746 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
747 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
748 */
cb825acd883a first commit
sugi
parents:
diff changeset
749 @Deprecated
cb825acd883a first commit
sugi
parents:
diff changeset
750 public static <T> T unpack(byte[] bytes, Class<T> klass) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
751 return globalMessagePack.read(bytes, klass);
cb825acd883a first commit
sugi
parents:
diff changeset
752 }
cb825acd883a first commit
sugi
parents:
diff changeset
753
cb825acd883a first commit
sugi
parents:
diff changeset
754 /**
cb825acd883a first commit
sugi
parents:
diff changeset
755 * Deserializes byte array to object.
cb825acd883a first commit
sugi
parents:
diff changeset
756 *
cb825acd883a first commit
sugi
parents:
diff changeset
757 * @param bytes
cb825acd883a first commit
sugi
parents:
diff changeset
758 * @param to
cb825acd883a first commit
sugi
parents:
diff changeset
759 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
760 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
761 */
cb825acd883a first commit
sugi
parents:
diff changeset
762 @Deprecated
cb825acd883a first commit
sugi
parents:
diff changeset
763 public static <T> T unpack(byte[] bytes, T to) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
764 return globalMessagePack.read(bytes, to);
cb825acd883a first commit
sugi
parents:
diff changeset
765 }
cb825acd883a first commit
sugi
parents:
diff changeset
766
cb825acd883a first commit
sugi
parents:
diff changeset
767 /**
cb825acd883a first commit
sugi
parents:
diff changeset
768 * Converts input stream to {@link org.msgpack.type.Value} object.
cb825acd883a first commit
sugi
parents:
diff changeset
769 *
cb825acd883a first commit
sugi
parents:
diff changeset
770 * @deprecated {@link MessagePack#read(InputStream)}
cb825acd883a first commit
sugi
parents:
diff changeset
771 * @param in
cb825acd883a first commit
sugi
parents:
diff changeset
772 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
773 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
774 */
cb825acd883a first commit
sugi
parents:
diff changeset
775 @Deprecated
cb825acd883a first commit
sugi
parents:
diff changeset
776 public static Value unpack(InputStream in) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
777 return globalMessagePack.read(in);
cb825acd883a first commit
sugi
parents:
diff changeset
778 }
cb825acd883a first commit
sugi
parents:
diff changeset
779
cb825acd883a first commit
sugi
parents:
diff changeset
780 /**
cb825acd883a first commit
sugi
parents:
diff changeset
781 * @deprecated
cb825acd883a first commit
sugi
parents:
diff changeset
782 * @param in
cb825acd883a first commit
sugi
parents:
diff changeset
783 * @param tmpl
cb825acd883a first commit
sugi
parents:
diff changeset
784 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
785 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
786 * @throws MessageTypeException
cb825acd883a first commit
sugi
parents:
diff changeset
787 */
cb825acd883a first commit
sugi
parents:
diff changeset
788 @Deprecated
cb825acd883a first commit
sugi
parents:
diff changeset
789 public static <T> T unpack(InputStream in, Template<T> tmpl)
cb825acd883a first commit
sugi
parents:
diff changeset
790 throws IOException, MessageTypeException {
cb825acd883a first commit
sugi
parents:
diff changeset
791 return tmpl.read(new MessagePackUnpacker(globalMessagePack, in), null);
cb825acd883a first commit
sugi
parents:
diff changeset
792 }
cb825acd883a first commit
sugi
parents:
diff changeset
793
cb825acd883a first commit
sugi
parents:
diff changeset
794 /**
cb825acd883a first commit
sugi
parents:
diff changeset
795 * @deprecated
cb825acd883a first commit
sugi
parents:
diff changeset
796 * @param in
cb825acd883a first commit
sugi
parents:
diff changeset
797 * @param tmpl
cb825acd883a first commit
sugi
parents:
diff changeset
798 * @param to
cb825acd883a first commit
sugi
parents:
diff changeset
799 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
800 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
801 * @throws MessageTypeException
cb825acd883a first commit
sugi
parents:
diff changeset
802 */
cb825acd883a first commit
sugi
parents:
diff changeset
803 @Deprecated
cb825acd883a first commit
sugi
parents:
diff changeset
804 public static <T> T unpack(InputStream in, Template<T> tmpl, T to)
cb825acd883a first commit
sugi
parents:
diff changeset
805 throws IOException, MessageTypeException {
cb825acd883a first commit
sugi
parents:
diff changeset
806 return (T) tmpl.read(new MessagePackUnpacker(globalMessagePack, in), to);
cb825acd883a first commit
sugi
parents:
diff changeset
807 }
cb825acd883a first commit
sugi
parents:
diff changeset
808
cb825acd883a first commit
sugi
parents:
diff changeset
809 /**
cb825acd883a first commit
sugi
parents:
diff changeset
810 * Deserializes input stream to object of specified class.
cb825acd883a first commit
sugi
parents:
diff changeset
811 *
cb825acd883a first commit
sugi
parents:
diff changeset
812 * @deprecated {@link MessagePack#read(InputStream, Class)}
cb825acd883a first commit
sugi
parents:
diff changeset
813 * @param in
cb825acd883a first commit
sugi
parents:
diff changeset
814 * @param klass
cb825acd883a first commit
sugi
parents:
diff changeset
815 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
816 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
817 */
cb825acd883a first commit
sugi
parents:
diff changeset
818 @Deprecated
cb825acd883a first commit
sugi
parents:
diff changeset
819 public static <T> T unpack(InputStream in, Class<T> klass)
cb825acd883a first commit
sugi
parents:
diff changeset
820 throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
821 return globalMessagePack.read(in, klass);
cb825acd883a first commit
sugi
parents:
diff changeset
822 }
cb825acd883a first commit
sugi
parents:
diff changeset
823
cb825acd883a first commit
sugi
parents:
diff changeset
824 /**
cb825acd883a first commit
sugi
parents:
diff changeset
825 * Deserializes input stream to object.
cb825acd883a first commit
sugi
parents:
diff changeset
826 *
cb825acd883a first commit
sugi
parents:
diff changeset
827 * @deprecated {@link MessagePack#read(InputStream, Object)}
cb825acd883a first commit
sugi
parents:
diff changeset
828 * @param in
cb825acd883a first commit
sugi
parents:
diff changeset
829 * @param to
cb825acd883a first commit
sugi
parents:
diff changeset
830 * @return
cb825acd883a first commit
sugi
parents:
diff changeset
831 * @throws IOException
cb825acd883a first commit
sugi
parents:
diff changeset
832 */
cb825acd883a first commit
sugi
parents:
diff changeset
833 @Deprecated
cb825acd883a first commit
sugi
parents:
diff changeset
834 public static <T> T unpack(InputStream in, T to) throws IOException {
cb825acd883a first commit
sugi
parents:
diff changeset
835 return globalMessagePack.read(in, to);
cb825acd883a first commit
sugi
parents:
diff changeset
836 }
cb825acd883a first commit
sugi
parents:
diff changeset
837 }