diff --git a/java/src/main/java/org/msgpack/template/JavassistTemplateBuilder.java b/java/src/main/java/org/msgpack/template/JavassistTemplateBuilder.java index 6a19ea4b..a1879221 100644 --- a/java/src/main/java/org/msgpack/template/JavassistTemplateBuilder.java +++ b/java/src/main/java/org/msgpack/template/JavassistTemplateBuilder.java @@ -332,7 +332,7 @@ public class JavassistTemplateBuilder extends TemplateBuilder { buildString("if($1.tryUnpackNull()) {"); if(e.isRequired()) { - // Requred + nil => exception + // Required + nil => exception buildString("throw new %s();", MessageTypeException.class.getName()); } else if(e.isOptional()) { // Optional + nil => keep default value @@ -360,6 +360,8 @@ public class JavassistTemplateBuilder extends TemplateBuilder { } buildString("if($1.tryUnpackNull()) {"); + // this is Optional field becaue i >= minimumArrayLength + // Optional + nil => keep default value buildString("} else {"); Class type = e.getType(); if(type.isPrimitive()) { @@ -370,6 +372,8 @@ public class JavassistTemplateBuilder extends TemplateBuilder { buildString("}"); } + // latter entries are all Optional + nil => keep default value + buildString("for(int i=%d; i < length; i++) {", i); buildString(" $1.unpackObject();"); buildString("}"); @@ -409,7 +413,7 @@ public class JavassistTemplateBuilder extends TemplateBuilder { buildString("obj = array[%d];", i); buildString("if(obj.isNil()) {"); if(e.isRequired()) { - // Requred + nil => exception + // Required + nil => exception buildString("throw new %s();", MessageTypeException.class.getName()); } else if(e.isOptional()) { // Optional + nil => keep default value @@ -437,6 +441,8 @@ public class JavassistTemplateBuilder extends TemplateBuilder { buildString("obj = array[%d];", i); buildString("if(obj.isNil()) {"); + // this is Optional field becaue i >= minimumArrayLength + // Optional + nil => keep default value buildString("} else {"); Class type = e.getType(); if(type.isPrimitive()) { @@ -447,6 +453,8 @@ public class JavassistTemplateBuilder extends TemplateBuilder { buildString("}"); } + // latter entries are all Optional + nil => keep default value + buildString("return _$$_t;"); buildString("}"); diff --git a/java/src/main/java/org/msgpack/template/ReflectionTemplateBuilder.java b/java/src/main/java/org/msgpack/template/ReflectionTemplateBuilder.java index aecde46e..8f50185a 100644 --- a/java/src/main/java/org/msgpack/template/ReflectionTemplateBuilder.java +++ b/java/src/main/java/org/msgpack/template/ReflectionTemplateBuilder.java @@ -255,7 +255,7 @@ public class ReflectionTemplateBuilder extends TemplateBuilder { if(pac.tryUnpackNull()) { if(e.isRequired()) { - // Requred + nil => exception + // Required + nil => exception throw new MessageTypeException(); } else if(e.isOptional()) { // Optional + nil => keep default value @@ -323,7 +323,7 @@ public class ReflectionTemplateBuilder extends TemplateBuilder { MessagePackObject obj = array[i]; if(obj.isNil()) { if(e.isRequired()) { - // Requred + nil => exception + // Required + nil => exception throw new MessageTypeException(); } else if(e.isOptional()) { // Optional + nil => keep default value