Skip to content

Commit a7b7c2c

Browse files
committed
changed OrdinalEnumTemplate
1 parent d8bce5c commit a7b7c2c

2 files changed

Lines changed: 15 additions & 4 deletions

File tree

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

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,17 +39,28 @@ public OrdinalEnumTemplate(Class<T> targetClass) {
3939

4040
@Override
4141
public void write(Packer pk, T target, boolean required) throws IOException {
42+
if (target == null) {
43+
if (required) {
44+
throw new MessageTypeException("Attempted to write null");
45+
}
46+
pk.writeNil();
47+
return;
48+
}
4249
Integer ordinal = reverse.get(target);
43-
if(ordinal == null) {
50+
if (ordinal == null) {
4451
throw new MessageTypeException(new IllegalArgumentException("ordinal: " + ordinal));
4552
}
4653
pk.write((int)ordinal);
4754
}
4855

4956
@Override
5057
public T read(Unpacker pac, T to, boolean required) throws IOException, MessageTypeException {
58+
if (!required && pac.trySkipNil()) {
59+
return null;
60+
}
61+
5162
int ordinal = pac.readInt();
52-
if(entries.length <= ordinal) {
63+
if (entries.length <= ordinal) {
5364
throw new MessageTypeException(new IllegalArgumentException("ordinal: " + ordinal));
5465
}
5566
return entries[ordinal];

src/test/java/org/msgpack/unpacker/TestReadTemplate.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,8 @@ public void testReadTemplateNull() throws IOException {
8484
Collection<Long> tcollection = u().read(tCollection(TLong));
8585
assertNull(tcollection);
8686

87-
//MyEnum tordinalenum = u().read(tOrdinalEnum(MyEnum.class));
88-
//assertNull(tordinalenum);
87+
MyEnum tordinalenum = u().read(tOrdinalEnum(MyEnum.class));
88+
assertNull(tordinalenum);
8989
}
9090

9191
// return unpacker that can read a nil

0 commit comments

Comments
 (0)