java: MessagePackOptional -> Optional, MessagePackNullable -> Nullable

This commit is contained in:
frsyuki 2010-11-10 00:16:23 +09:00
parent 1135976225
commit c283842563
8 changed files with 147 additions and 155 deletions

View File

@ -22,6 +22,7 @@ import java.io.InputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import org.msgpack.util.codegen.DynamicTemplate;
import org.msgpack.util.codegen.DynamicOrdinalEnumTemplate;
import org.msgpack.util.codegen.FieldList;
public class MessagePack {
@ -146,17 +147,18 @@ public class MessagePack {
}
public static void register(Class<?> target) { // auto-detect
// FIXME
//Template tmpl;
//if(List.isAssignableFrom(target)) {
Template tmpl;
if(target.isEnum()) {
tmpl = DynamicOrdinalEnumTemplate.create(target);
//} else if(List.isAssignableFrom(target)) {
//} else if(Set.isAssignableFrom(target)) {
//} else if(Map.isAssignableFrom(target)) {
//} else if(Collection.isAssignableFrom(target)) {
//} else if(BigInteger.isAssignableFrom(target)) {
//} else {
//}
} else {
tmpl = DynamicTemplate.create(target);
}
Template tmpl = DynamicTemplate.create(target);
CustomPacker.register(target, tmpl);
CustomConverter.register(target, tmpl);
CustomUnpacker.register(target, tmpl);

View File

@ -24,5 +24,5 @@ import java.lang.annotation.Target;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MessagePackNullable {
public @interface Nullable {
}

View File

@ -24,5 +24,5 @@ import java.lang.annotation.Target;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MessagePackOptional {
public @interface Optional {
}

View File

@ -22,9 +22,8 @@ import org.msgpack.*;
import org.msgpack.annotation.MessagePackDelegate;
import org.msgpack.annotation.MessagePackMessage;
import org.msgpack.annotation.MessagePackOrdinalEnum;
import org.msgpack.util.codegen.DynamicPacker;
import org.msgpack.util.codegen.DynamicConverter;
import org.msgpack.util.codegen.DynamicUnpacker;
import org.msgpack.util.codegen.DynamicTemplate;
import org.msgpack.util.codegen.DynamicOrdinalEnumTemplate;
import java.util.*;
import java.math.BigInteger;
@ -131,18 +130,17 @@ public class ClassTemplate implements Template {
}
if (CustomMessage.isAnnotated(klass, MessagePackMessage.class)) {
packer = DynamicPacker.create(klass);
Template tmpl = DynamicTemplate.create(klass);
CustomMessage.register(klass, tmpl);
tmpl.pack(pk, o);
return;
} else if (CustomMessage.isAnnotated(klass, MessagePackDelegate.class)) {
// FIXME DelegatePacker
throw new UnsupportedOperationException("not supported yet. : " + klass.getName());
} else if (CustomMessage.isAnnotated(klass, MessagePackOrdinalEnum.class)) {
// FIXME OrdinalEnumPacker
throw new UnsupportedOperationException("not supported yet. : " + klass.getName());
}
if (packer != null) {
CustomPacker.register(klass, packer);
packer.pack(pk, o);
Template tmpl = DynamicOrdinalEnumTemplate.create(klass);
CustomMessage.register(klass, tmpl);
tmpl.pack(pk, o);
return;
}
@ -169,38 +167,32 @@ public class ClassTemplate implements Template {
}
if (CustomMessage.isAnnotated(klass, MessagePackMessage.class)) {
unpacker = DynamicUnpacker.create(klass);
Template tmpl = DynamicTemplate.create(klass);
CustomMessage.register(klass, tmpl);
return tmpl.unpack(pac, to);
} else if (CustomMessage.isAnnotated(klass, MessagePackDelegate.class)) {
// TODO DelegateUnpacker
throw new UnsupportedOperationException("not supported yet. : " + klass.getName());
} else if (CustomMessage.isAnnotated(klass, MessagePackOrdinalEnum.class)) {
// TODO OrdinalEnumUnpacker
throw new UnsupportedOperationException("not supported yet. : " + klass.getName());
}
if (unpacker != null) {
CustomUnpacker.register(klass, unpacker);
return unpacker.unpack(pac, to);
Template tmpl = DynamicOrdinalEnumTemplate.create(klass);
CustomMessage.register(klass, tmpl);
return tmpl.unpack(pac, to);
}
// fallback
{
MessageConverter converter = null;
if (CustomMessage.isAnnotated(klass, MessagePackMessage.class)) {
converter = DynamicConverter.create(klass);
Template tmpl = DynamicTemplate.create(klass);
CustomMessage.register(klass, tmpl);
return tmpl.convert(pac.unpackObject(), to);
} else if (CustomMessage.isAnnotated(klass, MessagePackDelegate.class)) {
// TODO DelegateConverter
throw new UnsupportedOperationException("not supported yet. : " + klass.getName());
} else if (CustomMessage.isAnnotated(klass, MessagePackOrdinalEnum.class)) {
// TODO OrdinalEnumConverter
throw new UnsupportedOperationException("not supported yet. : " + klass.getName());
}
if (converter != null) {
CustomConverter.register(klass, converter);
return converter.convert(pac.unpackObject(), to);
}
Template tmpl = DynamicOrdinalEnumTemplate.create(klass);
CustomMessage.register(klass, tmpl);
return tmpl.convert(pac.unpackObject(), to);
}
throw new MessageTypeException();
@ -232,18 +224,16 @@ public class ClassTemplate implements Template {
}
if (CustomMessage.isAnnotated(klass, MessagePackMessage.class)) {
converter = DynamicConverter.create(klass);
Template tmpl = DynamicTemplate.create(klass);
CustomMessage.register(klass, tmpl);
return tmpl.convert(from, to);
} else if (CustomMessage.isAnnotated(klass, MessagePackDelegate.class)) {
// TODO DelegateConverter
throw new UnsupportedOperationException("not supported yet. : " + klass.getName());
} else if (CustomMessage.isAnnotated(klass, MessagePackOrdinalEnum.class)) {
// TODO OrdinalEnumConverter
throw new UnsupportedOperationException("not supported yet. : " + klass.getName());
}
if (converter != null) {
CustomConverter.register(klass, converter);
return converter.convert(from, to);
Template tmpl = DynamicOrdinalEnumTemplate.create(klass);
CustomMessage.register(klass, tmpl);
return tmpl.convert(from, to);
}
throw new MessageTypeException();

View File

@ -39,8 +39,8 @@ import org.msgpack.MessageTypeException;
import org.msgpack.Packer;
import org.msgpack.Template;
import org.msgpack.Unpacker;
import org.msgpack.annotation.MessagePackOptional;
import org.msgpack.annotation.MessagePackNullable;
import org.msgpack.annotation.Optional;
import org.msgpack.annotation.Nullable;
import org.msgpack.template.OptionalTemplate;
import org.msgpack.template.NullableTemplate;
import org.slf4j.Logger;
@ -290,11 +290,11 @@ class DynamicCodeGen extends DynamicCodeGenBase implements Constants {
} else {
tmpl = createTemplate(c);
}
if (isAnnotated(field, MessagePackOptional.class)) {
if (isAnnotated(field, Optional.class)) {
// @Optional types
return new OptionalTemplate(tmpl);
}
if (!c.isPrimitive() && isAnnotated(field, MessagePackNullable.class)) {
if (!c.isPrimitive() && isAnnotated(field, Nullable.class)) {
// @Nullable reference types
return new NullableTemplate(tmpl);
}

View File

@ -20,7 +20,7 @@ public class TestAnnotations extends TestCase {
public String name;
// required and nullable field.
@MessagePackNullable
@Nullable
public String nickname;
}
@ -29,11 +29,11 @@ public class TestAnnotations extends TestCase {
public static class MyClassVersion2 {
public String name;
@MessagePackNullable
@Nullable
public String nickname;
// adds an optional field on version 2.
@MessagePackOptional
@Optional
public int age = -1;
}
@ -42,7 +42,7 @@ public class TestAnnotations extends TestCase {
public static class MyClassVersion3 {
public String name;
@MessagePackNullable
@Nullable
public String nickname;
// adds required fields on version 3, then
@ -50,7 +50,7 @@ public class TestAnnotations extends TestCase {
public int age;
// optional field is nullable.
@MessagePackOptional
@Optional
public String school;
}

View File

@ -27,8 +27,8 @@ import org.msgpack.Packer;
import org.msgpack.Template;
import org.msgpack.Unpacker;
import org.msgpack.annotation.MessagePackMessage;
import org.msgpack.annotation.MessagePackOptional;
import org.msgpack.annotation.MessagePackOrdinalEnum;
import org.msgpack.annotation.Optional;
import org.msgpack.packer.OptionalPacker;
import org.msgpack.template.NullableTemplate;
@ -179,19 +179,19 @@ public class TestPackConvert extends TestCase {
}
public static class OptionalPrimitiveTypeFieldsClass {
@MessagePackOptional
@Optional
public byte f0;
@MessagePackOptional
@Optional
public short f1;
@MessagePackOptional
@Optional
public int f2;
@MessagePackOptional
@Optional
public long f3;
@MessagePackOptional
@Optional
public float f4;
@MessagePackOptional
@Optional
public double f5;
@MessagePackOptional
@Optional
public boolean f6;
public OptionalPrimitiveTypeFieldsClass() {
@ -384,27 +384,27 @@ public class TestPackConvert extends TestCase {
}
public static class OptionalGeneralReferenceTypeFieldsClass {
@MessagePackOptional
@Optional
public Byte f0;
@MessagePackOptional
@Optional
public Short f1;
@MessagePackOptional
@Optional
public Integer f2;
@MessagePackOptional
@Optional
public Long f3;
@MessagePackOptional
@Optional
public Float f4;
@MessagePackOptional
@Optional
public Double f5;
@MessagePackOptional
@Optional
public Boolean f6;
@MessagePackOptional
@Optional
public BigInteger f7;
@MessagePackOptional
@Optional
public String f8;
@MessagePackOptional
@Optional
public byte[] f9;
@MessagePackOptional
@Optional
public ByteBuffer f10;
public OptionalGeneralReferenceTypeFieldsClass() {
@ -640,17 +640,17 @@ public class TestPackConvert extends TestCase {
}
public static class SampleOptionalListTypes {
@MessagePackOptional
@Optional
public List<Integer> f0;
@MessagePackOptional
@Optional
public List<Integer> f1;
@MessagePackOptional
@Optional
public List<String> f2;
@MessagePackOptional
@Optional
public List<List<String>> f3;
@MessagePackOptional
@Optional
public List<SampleOptionalListNestedType> f4;
@MessagePackOptional
@Optional
public List<ByteBuffer> f5;
public SampleOptionalListTypes() {
@ -659,9 +659,9 @@ public class TestPackConvert extends TestCase {
@MessagePackMessage
public static class SampleOptionalListNestedType {
@MessagePackOptional
@Optional
public byte[] f0;
@MessagePackOptional
@Optional
public String f1;
public SampleOptionalListNestedType() {
@ -828,11 +828,11 @@ public class TestPackConvert extends TestCase {
}
public static class SampleOptionalMapTypes {
@MessagePackOptional
@Optional
public Map<Integer, Integer> f0;
@MessagePackOptional
@Optional
public Map<Integer, Integer> f1;
@MessagePackOptional
@Optional
public Map<String, Integer> f2;
public SampleOptionalMapTypes() {
@ -1176,9 +1176,9 @@ public class TestPackConvert extends TestCase {
}
public static class SampleOptionalEnumFieldClass {
@MessagePackOptional
@Optional
public int f0;
@MessagePackOptional
@Optional
public SampleOptionalEnum f1;
public SampleOptionalEnumFieldClass() {
@ -1255,9 +1255,9 @@ public class TestPackConvert extends TestCase {
}
public static class OptionalFieldModifiersClass {
@MessagePackOptional
@Optional
public int f0;
@MessagePackOptional
@Optional
public final int f1 = 1;
private int f2;
protected int f3;
@ -1396,9 +1396,9 @@ public class TestPackConvert extends TestCase {
}
public static class OptionalBaseClass {
@MessagePackOptional
@Optional
public int f0;
@MessagePackOptional
@Optional
public OptionalNestedClass f1;
public OptionalBaseClass() {
@ -1406,7 +1406,7 @@ public class TestPackConvert extends TestCase {
}
public static class OptionalNestedClass {
@MessagePackOptional
@Optional
public int f2;
public OptionalNestedClass() {
@ -1530,9 +1530,9 @@ public class TestPackConvert extends TestCase {
}
public static class OptionalBaseClass2 {
@MessagePackOptional
@Optional
public int f0;
@MessagePackOptional
@Optional
public OptionalMessagePackMessageClass2 f1;
public OptionalBaseClass2() {
@ -1541,7 +1541,7 @@ public class TestPackConvert extends TestCase {
@MessagePackMessage
public static class OptionalMessagePackMessageClass2 {
@MessagePackOptional
@Optional
public int f2;
public OptionalMessagePackMessageClass2() {
@ -1675,7 +1675,7 @@ public class TestPackConvert extends TestCase {
}
public static class SampleOptionalSubClass extends SampleOptionalSuperClass {
@MessagePackOptional
@Optional
public int f0;
public final int f1 = 1;
private int f2;
@ -1687,7 +1687,7 @@ public class TestPackConvert extends TestCase {
}
public static class SampleOptionalSuperClass {
@MessagePackOptional
@Optional
public int f5;
public final int f6 = 2;
@SuppressWarnings("unused")
@ -1867,12 +1867,12 @@ public class TestPackConvert extends TestCase {
}
public static class OptionalBaseMessagePackableConvertableClass {
@MessagePackOptional
@Optional
public OptionalMessagePackableConvertableClass f0;
@MessagePackOptional
@Optional
public int f1;
@MessagePackOptional
@Optional
public List<OptionalMessagePackableConvertableClass> f2;
public OptionalBaseMessagePackableConvertableClass() {
@ -1881,9 +1881,9 @@ public class TestPackConvert extends TestCase {
public static class OptionalMessagePackableConvertableClass implements
MessagePackable, MessageConvertable {
@MessagePackOptional
@Optional
public int f0;
@MessagePackOptional
@Optional
public int f1;
public OptionalMessagePackableConvertableClass() {

View File

@ -21,8 +21,8 @@ import org.msgpack.Packer;
import org.msgpack.Template;
import org.msgpack.Unpacker;
import org.msgpack.annotation.MessagePackMessage;
import org.msgpack.annotation.MessagePackOptional;
import org.msgpack.annotation.MessagePackOrdinalEnum;
import org.msgpack.annotation.Optional;
import org.msgpack.packer.OptionalPacker;
import org.msgpack.template.NullableTemplate;
@ -170,19 +170,19 @@ public class TestPackUnpack extends TestCase {
}
public static class OptionalPrimitiveTypeFieldsClass {
@MessagePackOptional
@Optional
public byte f0;
@MessagePackOptional
@Optional
public short f1;
@MessagePackOptional
@Optional
public int f2;
@MessagePackOptional
@Optional
public long f3;
@MessagePackOptional
@Optional
public float f4;
@MessagePackOptional
@Optional
public double f5;
@MessagePackOptional
@Optional
public boolean f6;
public OptionalPrimitiveTypeFieldsClass() {
@ -350,27 +350,27 @@ public class TestPackUnpack extends TestCase {
}
public static class GeneralOptionalReferenceTypeFieldsClass {
@MessagePackOptional
@Optional
public Byte f0;
@MessagePackOptional
@Optional
public Short f1;
@MessagePackOptional
@Optional
public Integer f2;
@MessagePackOptional
@Optional
public Long f3;
@MessagePackOptional
@Optional
public Float f4;
@MessagePackOptional
@Optional
public Double f5;
@MessagePackOptional
@Optional
public Boolean f6;
@MessagePackOptional
@Optional
public BigInteger f7;
@MessagePackOptional
@Optional
public String f8;
@MessagePackOptional
@Optional
public byte[] f9;
@MessagePackOptional
@Optional
public ByteBuffer f10;
public GeneralOptionalReferenceTypeFieldsClass() {
@ -580,17 +580,17 @@ public class TestPackUnpack extends TestCase {
}
public static class SampleOptionalListTypes {
@MessagePackOptional
@Optional
public List<Integer> f0;
@MessagePackOptional
@Optional
public List<Integer> f1;
@MessagePackOptional
@Optional
public List<String> f2;
@MessagePackOptional
@Optional
public List<List<String>> f3;
@MessagePackOptional
@Optional
public List<SampleOptionalListNestedType> f4;
@MessagePackOptional
@Optional
public List<ByteBuffer> f5;
public SampleOptionalListTypes() {
@ -599,9 +599,9 @@ public class TestPackUnpack extends TestCase {
@MessagePackMessage
public static class SampleOptionalListNestedType {
@MessagePackOptional
@Optional
public byte[] f0;
@MessagePackOptional
@Optional
public String f1;
public SampleOptionalListNestedType() {
@ -746,11 +746,11 @@ public class TestPackUnpack extends TestCase {
}
public static class SampleOptionalMapTypes {
@MessagePackOptional
@Optional
public Map<Integer, Integer> f0;
@MessagePackOptional
@Optional
public Map<Integer, Integer> f1;
@MessagePackOptional
@Optional
public Map<String, Integer> f2;
public SampleOptionalMapTypes() {
@ -1065,10 +1065,10 @@ public class TestPackUnpack extends TestCase {
}
public static class SampleOptionalEnumFieldClass {
@MessagePackOptional
@Optional
public int f0;
@MessagePackOptional
@Optional
public SampleOptionalEnum f1;
public SampleOptionalEnumFieldClass() {
@ -1136,9 +1136,9 @@ public class TestPackUnpack extends TestCase {
}
public static class OptionalFieldModifiersClass {
@MessagePackOptional
@Optional
public int f0;
@MessagePackOptional
@Optional
public final int f1 = 1;
private int f2;
protected int f3;
@ -1245,9 +1245,9 @@ public class TestPackUnpack extends TestCase {
}
public static class OptionalBaseClass {
@MessagePackOptional
@Optional
public int f0;
@MessagePackOptional
@Optional
public OptionalNestedClass f1;
public OptionalBaseClass() {
@ -1255,7 +1255,7 @@ public class TestPackUnpack extends TestCase {
}
public static class OptionalNestedClass {
@MessagePackOptional
@Optional
public int f2;
public OptionalNestedClass() {
@ -1355,9 +1355,9 @@ public class TestPackUnpack extends TestCase {
}
public static class OptionalBaseClass2 {
@MessagePackOptional
@Optional
public int f0;
@MessagePackOptional
@Optional
public OptionalMessagePackMessageClass2 f1;
public OptionalBaseClass2() {
@ -1366,7 +1366,7 @@ public class TestPackUnpack extends TestCase {
@MessagePackMessage
public static class OptionalMessagePackMessageClass2 {
@MessagePackOptional
@Optional
public int f2;
public OptionalMessagePackMessageClass2() {
@ -1482,7 +1482,7 @@ public class TestPackUnpack extends TestCase {
}
public static class SampleOptionalSubClass extends SampleOptionalSuperClass {
@MessagePackOptional
@Optional
public int f0;
public final int f1 = 1;
private int f2;
@ -1494,7 +1494,7 @@ public class TestPackUnpack extends TestCase {
}
public static class SampleOptionalSuperClass {
@MessagePackOptional
@Optional
public int f5;
public final int f6 = 2;
@SuppressWarnings("unused")
@ -1649,11 +1649,11 @@ public class TestPackUnpack extends TestCase {
}
public static class OptionalBaseMessagePackableUnpackableClass {
@MessagePackOptional
@Optional
public OptionalMessagePackableUnpackableClass f0;
@MessagePackOptional
@Optional
public int f1;
@MessagePackOptional
@Optional
public List<OptionalMessagePackableUnpackableClass> f2;
public OptionalBaseMessagePackableUnpackableClass() {
@ -1662,9 +1662,9 @@ public class TestPackUnpack extends TestCase {
public static class OptionalMessagePackableUnpackableClass implements
MessagePackable, MessageUnpackable {
@MessagePackOptional
@Optional
public int f0;
@MessagePackOptional
@Optional
public int f1;
public OptionalMessagePackableUnpackableClass() {