Skip to content

Commit 0dd101f

Browse files
committed
added templates for BigDecimal, ByteBuffer and Date objects
1 parent fb7357b commit 0dd101f

4 files changed

Lines changed: 150 additions & 0 deletions

File tree

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
//
2+
// MessagePack for Java
3+
//
4+
// Copyright (C) 2009-2011 FURUHASHI Sadayuki
5+
//
6+
// Licensed under the Apache License, Version 2.0 (the "License");
7+
// you may not use this file except in compliance with the License.
8+
// You may obtain a copy of the License at
9+
//
10+
// http://www.apache.org/licenses/LICENSE-2.0
11+
//
12+
// Unless required by applicable law or agreed to in writing, software
13+
// distributed under the License is distributed on an "AS IS" BASIS,
14+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
// See the License for the specific language governing permissions and
16+
// limitations under the License.
17+
//
18+
package org.msgpack.template;
19+
20+
import java.io.IOException;
21+
import java.math.BigDecimal;
22+
import org.msgpack.packer.Packer;
23+
import org.msgpack.unpacker.Unpacker;
24+
import org.msgpack.MessageTypeException;
25+
26+
27+
public class BigDecimalTemplate implements Template {
28+
private BigDecimalTemplate() { }
29+
30+
public void write(Packer pk, Object target) throws IOException {
31+
if(target == null) {
32+
throw new MessageTypeException("Attempted to write null");
33+
}
34+
pk.writeString(((BigDecimal)target).toString());
35+
}
36+
37+
public Object read(Unpacker u, Object to) throws IOException {
38+
String temp = u.readString();
39+
return new BigDecimal(temp);
40+
}
41+
42+
static public BigDecimalTemplate getInstance() {
43+
return instance;
44+
}
45+
46+
static final BigDecimalTemplate instance = new BigDecimalTemplate();
47+
}
48+
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
//
2+
// MessagePack for Java
3+
//
4+
// Copyright (C) 2009-2011 FURUHASHI Sadayuki
5+
//
6+
// Licensed under the Apache License, Version 2.0 (the "License");
7+
// you may not use this file except in compliance with the License.
8+
// You may obtain a copy of the License at
9+
//
10+
// http://www.apache.org/licenses/LICENSE-2.0
11+
//
12+
// Unless required by applicable law or agreed to in writing, software
13+
// distributed under the License is distributed on an "AS IS" BASIS,
14+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
// See the License for the specific language governing permissions and
16+
// limitations under the License.
17+
//
18+
package org.msgpack.template;
19+
20+
import java.io.IOException;
21+
import java.nio.ByteBuffer;
22+
23+
import org.msgpack.packer.Packer;
24+
import org.msgpack.unpacker.Unpacker;
25+
import org.msgpack.MessageTypeException;
26+
27+
28+
public class ByteBufferTemplate implements Template {
29+
private ByteBufferTemplate() { }
30+
31+
public void write(Packer pk, Object target) throws IOException {
32+
if(target == null) {
33+
throw new MessageTypeException("Attempted to write null");
34+
}
35+
ByteBuffer buf = (ByteBuffer) target;
36+
byte[] bytes = buf.array();
37+
pk.writeByteArray(bytes);
38+
}
39+
40+
public Object read(Unpacker u, Object to) throws IOException {
41+
byte[] bytes = u.readByteArray(); // TODO read to 'to' obj
42+
ByteBuffer buf = ByteBuffer.wrap(bytes);
43+
return buf;
44+
}
45+
46+
static public ByteBufferTemplate getInstance() {
47+
return instance;
48+
}
49+
50+
static final ByteBufferTemplate instance = new ByteBufferTemplate();
51+
}
52+
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
//
2+
// MessagePack for Java
3+
//
4+
// Copyright (C) 2009-2011 FURUHASHI Sadayuki
5+
//
6+
// Licensed under the Apache License, Version 2.0 (the "License");
7+
// you may not use this file except in compliance with the License.
8+
// You may obtain a copy of the License at
9+
//
10+
// http://www.apache.org/licenses/LICENSE-2.0
11+
//
12+
// Unless required by applicable law or agreed to in writing, software
13+
// distributed under the License is distributed on an "AS IS" BASIS,
14+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
// See the License for the specific language governing permissions and
16+
// limitations under the License.
17+
//
18+
package org.msgpack.template;
19+
20+
import java.io.IOException;
21+
import java.util.Date;
22+
23+
import org.msgpack.packer.Packer;
24+
import org.msgpack.unpacker.Unpacker;
25+
import org.msgpack.MessageTypeException;
26+
27+
28+
public class DateTemplate implements Template {
29+
private DateTemplate() { }
30+
31+
public void write(Packer pk, Object target) throws IOException {
32+
if(target == null) {
33+
throw new MessageTypeException("Attempted to write null");
34+
}
35+
pk.writeLong(((Date)target).getTime());
36+
}
37+
38+
public Object read(Unpacker u, Object to) throws IOException {
39+
long temp = u.readLong();
40+
return new Date(temp);
41+
}
42+
43+
static public DateTemplate getInstance() {
44+
return instance;
45+
}
46+
47+
static final DateTemplate instance = new DateTemplate();
48+
}
49+

src/main/java/org/msgpack/template/Template.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
public interface Template {
2626
public void write(Packer pk, Object v) throws IOException;
27+
2728
public Object read(Unpacker u, Object to) throws IOException;
2829
}
2930

0 commit comments

Comments
 (0)