mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-10-23 16:48:07 +02:00
java: append a code for generating a messageConvert method to annotation-utilities
This commit is contained in:
@@ -11,6 +11,7 @@ import java.lang.reflect.ParameterizedType;
|
|||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
@@ -25,6 +26,7 @@ import javassist.CtNewMethod;
|
|||||||
import javassist.NotFoundException;
|
import javassist.NotFoundException;
|
||||||
|
|
||||||
import org.msgpack.MessageConvertable;
|
import org.msgpack.MessageConvertable;
|
||||||
|
import org.msgpack.MessagePackObject;
|
||||||
import org.msgpack.MessagePackable;
|
import org.msgpack.MessagePackable;
|
||||||
import org.msgpack.MessageTypeException;
|
import org.msgpack.MessageTypeException;
|
||||||
import org.msgpack.MessageUnpackable;
|
import org.msgpack.MessageUnpackable;
|
||||||
@@ -43,37 +45,6 @@ public class PackUnpackUtil {
|
|||||||
|
|
||||||
static final String KEYWORD_NEW = "new";
|
static final String KEYWORD_NEW = "new";
|
||||||
|
|
||||||
static final String TYPE_NAME_VOID = void.class.getName();
|
|
||||||
|
|
||||||
static final String TYPE_NAME_OBJECT = Object.class.getName();
|
|
||||||
|
|
||||||
static final String TYPE_NAME_IOEXCEPTION = IOException.class.getName();
|
|
||||||
|
|
||||||
static final String TYPE_NAME_PACKER = Packer.class.getName();
|
|
||||||
|
|
||||||
static final String TYPE_NAME_UNPACKER = Unpacker.class.getName();
|
|
||||||
|
|
||||||
static final String TYPE_NAME_MSGPACKABLE = MessagePackable.class
|
|
||||||
.getName();
|
|
||||||
|
|
||||||
static final String TYPE_NAME_MSGUNPACKABLE = MessageUnpackable.class
|
|
||||||
.getName();
|
|
||||||
|
|
||||||
static final String TYPE_NAME_MSGCONVERTABLE = MessageConvertable.class
|
|
||||||
.getName();
|
|
||||||
|
|
||||||
static final String TYPE_NAME_MSGTYPEEXCEPTION = MessageTypeException.class
|
|
||||||
.getName();
|
|
||||||
|
|
||||||
static final String TYPE_NAME_MSGPACKUNPACKABLE = MessagePackUnpackable.class
|
|
||||||
.getName();
|
|
||||||
|
|
||||||
static final String TYPE_NAME_MSGPACKOPTIONAL = MessagePackOptional.class
|
|
||||||
.getName();
|
|
||||||
|
|
||||||
static final String TYPE_NAME_MSGPACKOREQUIRED = MessagePackRequired.class
|
|
||||||
.getName();
|
|
||||||
|
|
||||||
static final String CHAR_NAME_SPACE = " ";
|
static final String CHAR_NAME_SPACE = " ";
|
||||||
|
|
||||||
static final String CHAR_NAME_COMMA = ",";
|
static final String CHAR_NAME_COMMA = ",";
|
||||||
@@ -92,15 +63,27 @@ public class PackUnpackUtil {
|
|||||||
|
|
||||||
static final String CHAR_NAME_LEFT_CURLY_BRACHET = "{";
|
static final String CHAR_NAME_LEFT_CURLY_BRACHET = "{";
|
||||||
|
|
||||||
|
static final String CHAR_NAME_RIGHT_SQUARE_BRACKET = "]";
|
||||||
|
|
||||||
|
static final String CHAR_NAME_LEFT_SQUARE_BRACKET = "[";
|
||||||
|
|
||||||
static final String CHAR_NAME_DOT = ".";
|
static final String CHAR_NAME_DOT = ".";
|
||||||
|
|
||||||
static final String CHAR_NAME_SEMICOLON = ";";
|
static final String CHAR_NAME_SEMICOLON = ";";
|
||||||
|
|
||||||
static final String VARIABLE_NAME_PK = "pk";
|
static final String VARIABLE_NAME_PK = "_$$_pk";
|
||||||
|
|
||||||
static final String VARIABLE_NAME_OBJ = "obj";
|
static final String VARIABLE_NAME_SIZE = "_$$_len";
|
||||||
|
|
||||||
static final String VARIABLE_NAME_SIZE = "len";
|
static final String VARIABLE_NAME_ARRAY = "_$$_ary";
|
||||||
|
|
||||||
|
static final String VARIABLE_NAME_LIST = "_$$_list";
|
||||||
|
|
||||||
|
static final String VARIABLE_NAME_MAP = "_$$_map";
|
||||||
|
|
||||||
|
static final String VARIABLE_NAME_ITER = "_$$_iter";
|
||||||
|
|
||||||
|
static final String VARIABLE_NAME_MPO1 = "_$$_mpo1";
|
||||||
|
|
||||||
static final String VARIABLE_NAME_I = "i";
|
static final String VARIABLE_NAME_I = "i";
|
||||||
|
|
||||||
@@ -110,6 +93,18 @@ public class PackUnpackUtil {
|
|||||||
|
|
||||||
static final String METHOD_NAME_PUT = "put";
|
static final String METHOD_NAME_PUT = "put";
|
||||||
|
|
||||||
|
static final String METHOD_NAME_GET = "get";
|
||||||
|
|
||||||
|
static final String METHOD_NAME_SIZE = "size";
|
||||||
|
|
||||||
|
static final String METHOD_NAME_KEYSET = "keySet";
|
||||||
|
|
||||||
|
static final String METHOD_NAME_ITERATOR = "iterator";
|
||||||
|
|
||||||
|
static final String METHOD_NAME_HASNEXT = "hasNext";
|
||||||
|
|
||||||
|
static final String METHOD_NAME_NEXT = "next";
|
||||||
|
|
||||||
static final String METHOD_NAME_MSGPACK = "messagePack";
|
static final String METHOD_NAME_MSGPACK = "messagePack";
|
||||||
|
|
||||||
static final String METHOD_NAME_MSGUNPACK = "messageUnpack";
|
static final String METHOD_NAME_MSGUNPACK = "messageUnpack";
|
||||||
@@ -147,6 +142,8 @@ public class PackUnpackUtil {
|
|||||||
static final String METHOD_NAME_UNPACKARRAY = "unpackArray";
|
static final String METHOD_NAME_UNPACKARRAY = "unpackArray";
|
||||||
|
|
||||||
static final String METHOD_NAME_UNPACKMAP = "unpackMap";
|
static final String METHOD_NAME_UNPACKMAP = "unpackMap";
|
||||||
|
|
||||||
|
static final String METHOD_NAME_ASARRAY = "asArray";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Enhancer {
|
public static class Enhancer {
|
||||||
@@ -180,9 +177,9 @@ public class PackUnpackUtil {
|
|||||||
setInterfaces(enhCtClass);
|
setInterfaces(enhCtClass);
|
||||||
addConstructor(enhCtClass);
|
addConstructor(enhCtClass);
|
||||||
Field[] fields = getDeclaredFields(origClass);
|
Field[] fields = getDeclaredFields(origClass);
|
||||||
addMessagePackMethod(enhCtClass, origCtClass, fields);
|
addMessagePackMethod(enhCtClass, fields);
|
||||||
addMessageUnpackMethod(enhCtClass, origCtClass, fields);
|
addMessageUnpackMethod(enhCtClass, fields);
|
||||||
addMessageConvertMethod(enhCtClass, origCtClass, fields);
|
addMessageConvertMethod(enhCtClass, fields);
|
||||||
return createClass(enhCtClass);
|
return createClass(enhCtClass);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -243,11 +240,11 @@ public class PackUnpackUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setInterfaces(CtClass enhCtClass) throws NotFoundException {
|
private void setInterfaces(CtClass enhCtClass) throws NotFoundException {
|
||||||
CtClass pacCtClass = pool.get(Constants.TYPE_NAME_MSGPACKABLE);
|
CtClass pacCtClass = pool.get(MessagePackable.class.getName());
|
||||||
enhCtClass.addInterface(pacCtClass);
|
enhCtClass.addInterface(pacCtClass);
|
||||||
CtClass unpacCtClass = pool.get(Constants.TYPE_NAME_MSGUNPACKABLE);
|
CtClass unpacCtClass = pool.get(MessageUnpackable.class.getName());
|
||||||
enhCtClass.addInterface(unpacCtClass);
|
enhCtClass.addInterface(unpacCtClass);
|
||||||
CtClass convCtClass = pool.get(Constants.TYPE_NAME_MSGCONVERTABLE);
|
CtClass convCtClass = pool.get(MessageConvertable.class.getName());
|
||||||
enhCtClass.addInterface(convCtClass);
|
enhCtClass.addInterface(convCtClass);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -296,24 +293,23 @@ public class PackUnpackUtil {
|
|||||||
+ field.getName());
|
+ field.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addMessagePackMethod(CtClass enhCtClass,
|
private void addMessagePackMethod(CtClass enhCtClass, Field[] fields)
|
||||||
CtClass origCtClass, Field[] fields)
|
|
||||||
throws CannotCompileException, NotFoundException {
|
throws CannotCompileException, NotFoundException {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append(Constants.KEYWORD_MODIFIER_PUBLIC);
|
sb.append(Constants.KEYWORD_MODIFIER_PUBLIC);
|
||||||
sb.append(Constants.CHAR_NAME_SPACE);
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
sb.append(Constants.TYPE_NAME_VOID);
|
sb.append(void.class.getName());
|
||||||
sb.append(Constants.CHAR_NAME_SPACE);
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
sb.append(Constants.METHOD_NAME_MSGPACK);
|
sb.append(Constants.METHOD_NAME_MSGPACK);
|
||||||
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
sb.append(Constants.TYPE_NAME_PACKER);
|
sb.append(Packer.class.getName());
|
||||||
sb.append(Constants.CHAR_NAME_SPACE);
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
sb.append(Constants.VARIABLE_NAME_PK);
|
sb.append(Constants.VARIABLE_NAME_PK);
|
||||||
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
sb.append(Constants.CHAR_NAME_SPACE);
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
sb.append(Constants.KEYWORD_THROWS);
|
sb.append(Constants.KEYWORD_THROWS);
|
||||||
sb.append(Constants.CHAR_NAME_SPACE);
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
sb.append(Constants.TYPE_NAME_IOEXCEPTION);
|
sb.append(IOException.class.getName());
|
||||||
sb.append(Constants.CHAR_NAME_SPACE);
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
sb.append(Constants.CHAR_NAME_LEFT_CURLY_BRACHET);
|
sb.append(Constants.CHAR_NAME_LEFT_CURLY_BRACHET);
|
||||||
sb.append(Constants.CHAR_NAME_SPACE);
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
@@ -345,27 +341,26 @@ public class PackUnpackUtil {
|
|||||||
sb.append(Constants.CHAR_NAME_SPACE);
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addMessageUnpackMethod(CtClass enhCtClass,
|
private void addMessageUnpackMethod(CtClass enhCtClass, Field[] fields)
|
||||||
CtClass origCtClass, Field[] fields)
|
|
||||||
throws CannotCompileException, NotFoundException {
|
throws CannotCompileException, NotFoundException {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append(Constants.KEYWORD_MODIFIER_PUBLIC);
|
sb.append(Constants.KEYWORD_MODIFIER_PUBLIC);
|
||||||
sb.append(Constants.CHAR_NAME_SPACE);
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
sb.append(Constants.TYPE_NAME_VOID);
|
sb.append(void.class.getName());
|
||||||
sb.append(Constants.CHAR_NAME_SPACE);
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
sb.append(Constants.METHOD_NAME_MSGUNPACK);
|
sb.append(Constants.METHOD_NAME_MSGUNPACK);
|
||||||
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
sb.append(Constants.TYPE_NAME_UNPACKER);
|
sb.append(Unpacker.class.getName());
|
||||||
sb.append(Constants.CHAR_NAME_SPACE);
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
sb.append(Constants.VARIABLE_NAME_PK);
|
sb.append(Constants.VARIABLE_NAME_PK);
|
||||||
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
sb.append(Constants.CHAR_NAME_SPACE);
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
sb.append(Constants.KEYWORD_THROWS);
|
sb.append(Constants.KEYWORD_THROWS);
|
||||||
sb.append(Constants.CHAR_NAME_SPACE);
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
sb.append(Constants.TYPE_NAME_MSGTYPEEXCEPTION);
|
sb.append(MessageTypeException.class.getName());
|
||||||
sb.append(Constants.CHAR_NAME_COMMA);
|
sb.append(Constants.CHAR_NAME_COMMA);
|
||||||
sb.append(Constants.CHAR_NAME_SPACE);
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
sb.append(Constants.TYPE_NAME_IOEXCEPTION);
|
sb.append(IOException.class.getName());
|
||||||
sb.append(Constants.CHAR_NAME_SPACE);
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
sb.append(Constants.CHAR_NAME_LEFT_CURLY_BRACHET);
|
sb.append(Constants.CHAR_NAME_LEFT_CURLY_BRACHET);
|
||||||
sb.append(Constants.CHAR_NAME_SPACE);
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
@@ -680,33 +675,761 @@ public class PackUnpackUtil {
|
|||||||
sb.append(Constants.CHAR_NAME_SPACE);
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addMessageConvertMethod(CtClass enhCtClass,
|
private void addMessageConvertMethod(CtClass enhCtClass, Field[] fields)
|
||||||
CtClass origCtClass, Field[] fields)
|
|
||||||
throws CannotCompileException {
|
throws CannotCompileException {
|
||||||
|
// messageConvert(MessagePackObject obj) throws MessageTypeException
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append(Constants.KEYWORD_MODIFIER_PUBLIC).append(
|
sb.append(Constants.KEYWORD_MODIFIER_PUBLIC);
|
||||||
Constants.CHAR_NAME_SPACE).append(Constants.TYPE_NAME_VOID)
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
.append(Constants.CHAR_NAME_SPACE).append(
|
sb.append(void.class.getName());
|
||||||
Constants.METHOD_NAME_MSGCONVERT).append(
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
Constants.CHAR_NAME_LEFT_PARENTHESIS).append(
|
sb.append(Constants.METHOD_NAME_MSGCONVERT);
|
||||||
Constants.TYPE_NAME_OBJECT).append(
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
Constants.CHAR_NAME_SPACE).append(
|
sb.append(MessagePackObject.class.getName());
|
||||||
Constants.VARIABLE_NAME_OBJ).append(
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
Constants.CHAR_NAME_RIGHT_PARENTHESIS).append(
|
sb.append(Constants.VARIABLE_NAME_MPO1);
|
||||||
Constants.CHAR_NAME_SPACE).append(
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
Constants.KEYWORD_THROWS).append(
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
Constants.CHAR_NAME_SPACE).append(
|
sb.append(Constants.KEYWORD_THROWS);
|
||||||
Constants.TYPE_NAME_MSGTYPEEXCEPTION).append(
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
Constants.CHAR_NAME_SPACE).append(
|
sb.append(MessageTypeException.class.getName());
|
||||||
Constants.CHAR_NAME_LEFT_CURLY_BRACHET).append(
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
Constants.CHAR_NAME_SPACE);
|
sb.append(Constants.CHAR_NAME_LEFT_CURLY_BRACHET);
|
||||||
// TODO
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
insertCodeOfMessagePackObjectArrayGet(sb);
|
||||||
|
insertCodeOfMesageConvertCalls(sb, fields);
|
||||||
sb.append(Constants.CHAR_NAME_RIGHT_CURLY_BRACHET);
|
sb.append(Constants.CHAR_NAME_RIGHT_CURLY_BRACHET);
|
||||||
//System.out.println("messageConvert method: " + sb.toString());
|
//System.out.println("messageConvert method: " + sb.toString());
|
||||||
CtMethod newCtMethod = CtNewMethod.make(sb.toString(), enhCtClass);
|
CtMethod newCtMethod = CtNewMethod.make(sb.toString(), enhCtClass);
|
||||||
enhCtClass.addMethod(newCtMethod);
|
enhCtClass.addMethod(newCtMethod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void insertCodeOfMessagePackObjectArrayGet(StringBuilder sb) {
|
||||||
|
// MessagePackObject[] ary = obj.asArray();
|
||||||
|
sb.append(MessagePackObject.class.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_SQUARE_BRACKET);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_SQUARE_BRACKET);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_ARRAY);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_MPO1);
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append(Constants.METHOD_NAME_ASARRAY);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void insertCodeOfMesageConvertCalls(StringBuilder sb,
|
||||||
|
Field[] fields) {
|
||||||
|
for (int i = 0; i < fields.length; ++i) {
|
||||||
|
insertCodeOfMessageConvertCall(sb, fields[i], fields[i]
|
||||||
|
.getType(), i, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void insertCodeOfMessageConvertCall(StringBuilder sb, Field f,
|
||||||
|
Class<?> c, int i, String name) {
|
||||||
|
if (c.isPrimitive()) { // primitive type
|
||||||
|
// f0 = objs[0].intValue();
|
||||||
|
if (c.equals(boolean.class)) {
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(f.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_ARRAY);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_SQUARE_BRACKET);
|
||||||
|
sb.append(i);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_SQUARE_BRACKET);
|
||||||
|
} else {
|
||||||
|
sb.append(name);
|
||||||
|
}
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append("asBoolean");
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
} else if (c.equals(byte.class)) {
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(f.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_ARRAY);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_SQUARE_BRACKET);
|
||||||
|
sb.append(i);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_SQUARE_BRACKET);
|
||||||
|
} else {
|
||||||
|
sb.append(name);
|
||||||
|
}
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append("asByte");
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
} else if (c.equals(short.class)) {
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(f.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_ARRAY);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_SQUARE_BRACKET);
|
||||||
|
sb.append(i);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_SQUARE_BRACKET);
|
||||||
|
} else {
|
||||||
|
sb.append(name);
|
||||||
|
}
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append("asShort");
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
} else if (c.equals(int.class)) {
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(f.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_ARRAY);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_SQUARE_BRACKET);
|
||||||
|
sb.append(i);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_SQUARE_BRACKET);
|
||||||
|
} else {
|
||||||
|
sb.append(name);
|
||||||
|
}
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append("asInt");
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
} else if (c.equals(long.class)) {
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(f.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_ARRAY);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_SQUARE_BRACKET);
|
||||||
|
sb.append(i);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_SQUARE_BRACKET);
|
||||||
|
} else {
|
||||||
|
sb.append(name);
|
||||||
|
}
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append("asLong");
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
} else if (c.equals(float.class)) {
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(f.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_ARRAY);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_SQUARE_BRACKET);
|
||||||
|
sb.append(i);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_SQUARE_BRACKET);
|
||||||
|
} else {
|
||||||
|
sb.append(name);
|
||||||
|
}
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append("asFloat");
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
} else if (c.equals(double.class)) {
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(f.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_ARRAY);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_SQUARE_BRACKET);
|
||||||
|
sb.append(i);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_SQUARE_BRACKET);
|
||||||
|
} else {
|
||||||
|
sb.append(name);
|
||||||
|
}
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append("asDouble");
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw new PackUnpackUtilException("fatal error: "
|
||||||
|
+ c.getName());
|
||||||
|
}
|
||||||
|
} else { // reference type
|
||||||
|
if (c.equals(Boolean.class)) {
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(f.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
sb.append(Constants.KEYWORD_NEW);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Boolean.class.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(Constants.VARIABLE_NAME_ARRAY);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_SQUARE_BRACKET);
|
||||||
|
sb.append(i);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_SQUARE_BRACKET);
|
||||||
|
} else {
|
||||||
|
sb.append(name);
|
||||||
|
}
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append("asBoolean");
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
} else if (c.equals(Byte.class)) {
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(f.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
sb.append(Constants.KEYWORD_NEW);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Byte.class.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(Constants.VARIABLE_NAME_ARRAY);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_SQUARE_BRACKET);
|
||||||
|
sb.append(i);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_SQUARE_BRACKET);
|
||||||
|
} else {
|
||||||
|
sb.append(name);
|
||||||
|
}
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append("asByte");
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
} else if (c.equals(Short.class)) {
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(f.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
sb.append(Constants.KEYWORD_NEW);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Short.class.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(Constants.VARIABLE_NAME_ARRAY);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_SQUARE_BRACKET);
|
||||||
|
sb.append(i);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_SQUARE_BRACKET);
|
||||||
|
} else {
|
||||||
|
sb.append(name);
|
||||||
|
}
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append("asShort");
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
} else if (c.equals(Integer.class)) {
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(f.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
sb.append(Constants.KEYWORD_NEW);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Integer.class.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(Constants.VARIABLE_NAME_ARRAY);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_SQUARE_BRACKET);
|
||||||
|
sb.append(i);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_SQUARE_BRACKET);
|
||||||
|
} else {
|
||||||
|
sb.append(name);
|
||||||
|
}
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append("asInt");
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
} else if (c.equals(Long.class)) {
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(f.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
sb.append(Constants.KEYWORD_NEW);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Long.class.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(Constants.VARIABLE_NAME_ARRAY);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_SQUARE_BRACKET);
|
||||||
|
sb.append(i);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_SQUARE_BRACKET);
|
||||||
|
} else {
|
||||||
|
sb.append(name);
|
||||||
|
}
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append("asLong");
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
} else if (c.equals(Float.class)) {
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(f.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
sb.append(Constants.KEYWORD_NEW);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Float.class.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(Constants.VARIABLE_NAME_ARRAY);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_SQUARE_BRACKET);
|
||||||
|
sb.append(i);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_SQUARE_BRACKET);
|
||||||
|
} else {
|
||||||
|
sb.append(name);
|
||||||
|
}
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append("asFloat");
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
} else if (c.equals(Double.class)) {
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(f.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
sb.append(Constants.KEYWORD_NEW);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Double.class.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(Constants.VARIABLE_NAME_ARRAY);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_SQUARE_BRACKET);
|
||||||
|
sb.append(i);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_SQUARE_BRACKET);
|
||||||
|
} else {
|
||||||
|
sb.append(name);
|
||||||
|
}
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append("asDouble");
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (c.equals(String.class)) {
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(f.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_ARRAY);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_SQUARE_BRACKET);
|
||||||
|
sb.append(i);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_SQUARE_BRACKET);
|
||||||
|
} else {
|
||||||
|
sb.append(name);
|
||||||
|
}
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append("asString");
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
} else if (c.equals(byte[].class)) {
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(f.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_ARRAY);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_SQUARE_BRACKET);
|
||||||
|
sb.append(i);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_SQUARE_BRACKET);
|
||||||
|
} else {
|
||||||
|
sb.append(name);
|
||||||
|
}
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append("asByteArray");
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
} else if (c.equals(BigInteger.class)) {
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(f.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_ARRAY);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_SQUARE_BRACKET);
|
||||||
|
sb.append(i);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_SQUARE_BRACKET);
|
||||||
|
} else {
|
||||||
|
sb.append(name);
|
||||||
|
}
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append("asBigInteger");
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
if (f != null) {
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
} else if (List.class.isAssignableFrom(c)) {
|
||||||
|
insertCodeOfMessageConvertCallForList(sb, f, c, i);
|
||||||
|
} else if (Map.class.isAssignableFrom(c)) {
|
||||||
|
insertCodeOfMessageConveretCallForMap(sb, f, c, i);
|
||||||
|
} else if (MessageConvertable.class.isAssignableFrom(c)
|
||||||
|
|| (getCache(c.getName()) != null)) {
|
||||||
|
// TODO
|
||||||
|
// TODO
|
||||||
|
// TODO
|
||||||
|
// ((MessageConvertable)f_i).messageConvert(ary[i]);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(MessageConvertable.class.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(f.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append(Constants.METHOD_NAME_MSGCONVERT);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_ARRAY);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_SQUARE_BRACKET);
|
||||||
|
sb.append(i);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_SQUARE_BRACKET);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
} else {
|
||||||
|
throw new MessageTypeException("Type error: "
|
||||||
|
+ c.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void insertCodeOfMessageConvertCallForList(StringBuilder sb,
|
||||||
|
Field field, Class<?> type, int i) {
|
||||||
|
ParameterizedType generic = (ParameterizedType) field
|
||||||
|
.getGenericType();
|
||||||
|
Class<?> genericType = (Class<?>) generic.getActualTypeArguments()[0];
|
||||||
|
|
||||||
|
// List<MessagePackObject> list = ary[i].asList();
|
||||||
|
sb.append(List.class.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_LIST);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_ARRAY);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_SQUARE_BRACKET);
|
||||||
|
sb.append(i);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_SQUARE_BRACKET);
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append("asList");
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
|
||||||
|
// int size = list.size();
|
||||||
|
sb.append(int.class.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_SIZE);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_LIST);
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append(Constants.METHOD_NAME_SIZE);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
|
||||||
|
// field initializer
|
||||||
|
sb.append(field.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.KEYWORD_NEW);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(ArrayList.class.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
|
||||||
|
// for loop
|
||||||
|
sb.append(Constants.KEYWORD_FOR);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(int.class.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_I);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(0);
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_I);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_LESSTHAN);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_SIZE);
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_PLUS);
|
||||||
|
sb.append(Constants.CHAR_NAME_PLUS);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_I);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
|
||||||
|
// block begin
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_CURLY_BRACHET);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(MessagePackObject.class.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append("_$$_val");
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(MessagePackObject.class.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_LIST);
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append(Constants.METHOD_NAME_GET);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_I);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
|
||||||
|
sb.append(field.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append(Constants.METHOD_NAME_ADD);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
insertCodeOfMessageConvertCall(sb, null, genericType, -1, "_$$_val");
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
// block end
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_CURLY_BRACHET);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void insertCodeOfMessageConveretCallForMap(StringBuilder sb,
|
||||||
|
Field f, Class<?> c, int i) {
|
||||||
|
ParameterizedType generic = (ParameterizedType) f.getGenericType();
|
||||||
|
Class<?> genericType0 = (Class<?>) generic.getActualTypeArguments()[0];
|
||||||
|
Class<?> genericType1 = (Class<?>) generic.getActualTypeArguments()[1];
|
||||||
|
|
||||||
|
// Map<MessagePackObject, MessagePackObject> map = ary[i].asMap();
|
||||||
|
sb.append(Map.class.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_MAP);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_ARRAY);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_SQUARE_BRACKET);
|
||||||
|
sb.append(i);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_SQUARE_BRACKET);
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append("asMap");
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
|
||||||
|
// int size = list.size();
|
||||||
|
sb.append(int.class.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_SIZE);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_MAP);
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append(Constants.METHOD_NAME_SIZE);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
|
||||||
|
// field initializer
|
||||||
|
sb.append(f.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.KEYWORD_NEW);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(HashMap.class.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
|
||||||
|
// for loop
|
||||||
|
sb.append(Constants.KEYWORD_FOR);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Iterator.class.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_ITER);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_MAP);
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append(Constants.METHOD_NAME_KEYSET);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append(Constants.METHOD_NAME_ITERATOR);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_ITER);
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append(Constants.METHOD_NAME_HASNEXT);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_CURLY_BRACHET);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
|
||||||
|
// block map.
|
||||||
|
sb.append(MessagePackObject.class.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append("_$$_key");
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(MessagePackObject.class.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_ITER);
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append(Constants.METHOD_NAME_NEXT);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(MessagePackObject.class.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append("_$$_val");
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_EQUAL);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append(MessagePackObject.class.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.VARIABLE_NAME_MAP);
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append(Constants.METHOD_NAME_GET);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
sb.append("_$$_key");
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
|
||||||
|
sb.append(f.getName());
|
||||||
|
sb.append(Constants.CHAR_NAME_DOT);
|
||||||
|
sb.append(Constants.METHOD_NAME_PUT);
|
||||||
|
sb.append(Constants.CHAR_NAME_LEFT_PARENTHESIS);
|
||||||
|
insertCodeOfMessageConvertCall(sb, null, genericType0, -1,
|
||||||
|
"_$$_key");
|
||||||
|
sb.append(Constants.CHAR_NAME_COMMA);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
insertCodeOfMessageConvertCall(sb, null, genericType1, -1,
|
||||||
|
"_$$_val");
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_PARENTHESIS);
|
||||||
|
sb.append(Constants.CHAR_NAME_SEMICOLON);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
|
||||||
|
sb.append(Constants.CHAR_NAME_RIGHT_CURLY_BRACHET);
|
||||||
|
sb.append(Constants.CHAR_NAME_SPACE);
|
||||||
|
}
|
||||||
|
|
||||||
private Class<?> createClass(CtClass enhCtClass)
|
private Class<?> createClass(CtClass enhCtClass)
|
||||||
throws CannotCompileException {
|
throws CannotCompileException {
|
||||||
return enhCtClass.toClass(null, null);
|
return enhCtClass.toClass(null, null);
|
||||||
@@ -749,6 +1472,19 @@ public class PackUnpackUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Object initEnhancedInstance(MessagePackObject obj,
|
||||||
|
Class<?> origClass) {
|
||||||
|
Object ret = newEnhancedInstance(origClass);
|
||||||
|
((MessageConvertable) ret).messageConvert(obj);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Object initEnhancedInstance(MessagePackObject obj,
|
||||||
|
Object origObj) {
|
||||||
|
((MessageConvertable) origObj).messageConvert(obj);
|
||||||
|
return origObj;
|
||||||
|
}
|
||||||
|
|
||||||
@MessagePackUnpackable
|
@MessagePackUnpackable
|
||||||
public static class Image {
|
public static class Image {
|
||||||
public String uri = "";
|
public String uri = "";
|
||||||
|
@@ -12,6 +12,7 @@ import java.util.Map;
|
|||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.msgpack.MessagePackObject;
|
||||||
import org.msgpack.MessageUnpackable;
|
import org.msgpack.MessageUnpackable;
|
||||||
import org.msgpack.Packer;
|
import org.msgpack.Packer;
|
||||||
import org.msgpack.Unpacker;
|
import org.msgpack.Unpacker;
|
||||||
@@ -19,7 +20,7 @@ import org.msgpack.Unpacker;
|
|||||||
public class TestMessagePackUnpackable extends TestCase {
|
public class TestMessagePackUnpackable extends TestCase {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testPrimitiveTypeFields() throws Exception {
|
public void testPrimitiveTypeFields01() throws Exception {
|
||||||
PrimitiveTypeFieldsClass src = (PrimitiveTypeFieldsClass) PackUnpackUtil
|
PrimitiveTypeFieldsClass src = (PrimitiveTypeFieldsClass) PackUnpackUtil
|
||||||
.newEnhancedInstance(PrimitiveTypeFieldsClass.class);
|
.newEnhancedInstance(PrimitiveTypeFieldsClass.class);
|
||||||
src.f0 = (byte) 0;
|
src.f0 = (byte) 0;
|
||||||
@@ -45,6 +46,36 @@ public class TestMessagePackUnpackable extends TestCase {
|
|||||||
assertEquals(src.f6, dst.f6);
|
assertEquals(src.f6, dst.f6);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testPrimitiveTypeFields02() throws Exception {
|
||||||
|
PrimitiveTypeFieldsClass src = (PrimitiveTypeFieldsClass) PackUnpackUtil
|
||||||
|
.newEnhancedInstance(PrimitiveTypeFieldsClass.class);
|
||||||
|
src.f0 = (byte) 0;
|
||||||
|
src.f1 = 1;
|
||||||
|
src.f2 = 2;
|
||||||
|
src.f3 = 3;
|
||||||
|
src.f4 = 4;
|
||||||
|
src.f5 = 5;
|
||||||
|
src.f6 = false;
|
||||||
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||||
|
new Packer(out).pack(src);
|
||||||
|
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
|
||||||
|
Unpacker pac = new Unpacker(in);
|
||||||
|
Iterator<MessagePackObject> it = pac.iterator();
|
||||||
|
assertTrue(it.hasNext());
|
||||||
|
MessagePackObject mpo = it.next();
|
||||||
|
PrimitiveTypeFieldsClass dst = (PrimitiveTypeFieldsClass) PackUnpackUtil
|
||||||
|
.initEnhancedInstance(mpo, PrimitiveTypeFieldsClass.class);
|
||||||
|
assertEquals(src.f0, dst.f0);
|
||||||
|
assertEquals(src.f1, dst.f1);
|
||||||
|
assertEquals(src.f2, dst.f2);
|
||||||
|
assertEquals(src.f3, dst.f3);
|
||||||
|
assertEquals(src.f4, dst.f4);
|
||||||
|
assertEquals(src.f5, dst.f5);
|
||||||
|
assertEquals(src.f6, dst.f6);
|
||||||
|
assertFalse(it.hasNext());
|
||||||
|
}
|
||||||
|
|
||||||
@MessagePackUnpackable
|
@MessagePackUnpackable
|
||||||
public static class PrimitiveTypeFieldsClass {
|
public static class PrimitiveTypeFieldsClass {
|
||||||
public byte f0;
|
public byte f0;
|
||||||
@@ -60,7 +91,7 @@ public class TestMessagePackUnpackable extends TestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGeneralReferenceTypeFieldsClass() throws Exception {
|
public void testGeneralReferenceTypeFieldsClass01() throws Exception {
|
||||||
GeneralReferenceTypeFieldsClass src = (GeneralReferenceTypeFieldsClass) PackUnpackUtil
|
GeneralReferenceTypeFieldsClass src = (GeneralReferenceTypeFieldsClass) PackUnpackUtil
|
||||||
.newEnhancedInstance(GeneralReferenceTypeFieldsClass.class);
|
.newEnhancedInstance(GeneralReferenceTypeFieldsClass.class);
|
||||||
src.f0 = 0;
|
src.f0 = 0;
|
||||||
@@ -93,6 +124,44 @@ public class TestMessagePackUnpackable extends TestCase {
|
|||||||
assertEquals(src.f9[1], dst.f9[1]);
|
assertEquals(src.f9[1], dst.f9[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGeneralReferenceTypeFieldsClass02() throws Exception {
|
||||||
|
GeneralReferenceTypeFieldsClass src = (GeneralReferenceTypeFieldsClass) PackUnpackUtil
|
||||||
|
.newEnhancedInstance(GeneralReferenceTypeFieldsClass.class);
|
||||||
|
src.f0 = 0;
|
||||||
|
src.f1 = 1;
|
||||||
|
src.f2 = 2;
|
||||||
|
src.f3 = (long) 3;
|
||||||
|
src.f4 = (float) 4;
|
||||||
|
src.f5 = (double) 5;
|
||||||
|
src.f6 = false;
|
||||||
|
src.f7 = new BigInteger("7");
|
||||||
|
src.f8 = "8";
|
||||||
|
src.f9 = new byte[] { 0x01, 0x02 };
|
||||||
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||||
|
new Packer(out).pack(src);
|
||||||
|
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
|
||||||
|
Unpacker pac = new Unpacker(in);
|
||||||
|
Iterator<MessagePackObject> it = pac.iterator();
|
||||||
|
assertTrue(it.hasNext());
|
||||||
|
MessagePackObject mpo = it.next();
|
||||||
|
GeneralReferenceTypeFieldsClass dst = (GeneralReferenceTypeFieldsClass) PackUnpackUtil
|
||||||
|
.initEnhancedInstance(mpo,
|
||||||
|
GeneralReferenceTypeFieldsClass.class);
|
||||||
|
assertEquals(src.f0, dst.f0);
|
||||||
|
assertEquals(src.f1, dst.f1);
|
||||||
|
assertEquals(src.f2, dst.f2);
|
||||||
|
assertEquals(src.f3, dst.f3);
|
||||||
|
assertEquals(src.f4, dst.f4);
|
||||||
|
assertEquals(src.f5, dst.f5);
|
||||||
|
assertEquals(src.f6, dst.f6);
|
||||||
|
assertEquals(src.f7, dst.f7);
|
||||||
|
assertEquals(src.f8, dst.f8);
|
||||||
|
assertEquals(src.f9[0], dst.f9[0]);
|
||||||
|
assertEquals(src.f9[1], dst.f9[1]);
|
||||||
|
assertFalse(it.hasNext());
|
||||||
|
}
|
||||||
|
|
||||||
@MessagePackUnpackable
|
@MessagePackUnpackable
|
||||||
public static class GeneralReferenceTypeFieldsClass {
|
public static class GeneralReferenceTypeFieldsClass {
|
||||||
public Byte f0;
|
public Byte f0;
|
||||||
@@ -110,7 +179,7 @@ public class TestMessagePackUnpackable extends TestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testListTypes() throws Exception {
|
public void testListTypes01() throws Exception {
|
||||||
SampleListTypes src = (SampleListTypes) PackUnpackUtil
|
SampleListTypes src = (SampleListTypes) PackUnpackUtil
|
||||||
.newEnhancedInstance(SampleListTypes.class);
|
.newEnhancedInstance(SampleListTypes.class);
|
||||||
src.f0 = new ArrayList<Integer>();
|
src.f0 = new ArrayList<Integer>();
|
||||||
@@ -140,6 +209,39 @@ public class TestMessagePackUnpackable extends TestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testListTypes02() throws Exception {
|
||||||
|
SampleListTypes src = (SampleListTypes) PackUnpackUtil
|
||||||
|
.newEnhancedInstance(SampleListTypes.class);
|
||||||
|
src.f0 = new ArrayList<Integer>();
|
||||||
|
src.f1 = new ArrayList<Integer>();
|
||||||
|
src.f1.add(1);
|
||||||
|
src.f1.add(2);
|
||||||
|
src.f1.add(3);
|
||||||
|
src.f2 = new ArrayList<String>();
|
||||||
|
src.f2.add("e1");
|
||||||
|
src.f2.add("e2");
|
||||||
|
src.f2.add("e3");
|
||||||
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||||
|
new Packer(out).pack(src);
|
||||||
|
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
|
||||||
|
Unpacker pac = new Unpacker(in);
|
||||||
|
Iterator<MessagePackObject> it = pac.iterator();
|
||||||
|
assertTrue(it.hasNext());
|
||||||
|
MessagePackObject mpo = it.next();
|
||||||
|
SampleListTypes dst = (SampleListTypes) PackUnpackUtil
|
||||||
|
.initEnhancedInstance(mpo, SampleListTypes.class);
|
||||||
|
assertEquals(src.f0.size(), dst.f0.size());
|
||||||
|
assertEquals(src.f1.size(), dst.f1.size());
|
||||||
|
for (int i = 0; i < src.f1.size(); ++i) {
|
||||||
|
assertEquals(src.f1.get(i), dst.f1.get(i));
|
||||||
|
}
|
||||||
|
assertEquals(src.f2.size(), dst.f2.size());
|
||||||
|
for (int i = 0; i < src.f2.size(); ++i) {
|
||||||
|
assertEquals(src.f2.get(i), dst.f2.get(i));
|
||||||
|
}
|
||||||
|
assertFalse(it.hasNext());
|
||||||
|
}
|
||||||
|
|
||||||
@MessagePackUnpackable
|
@MessagePackUnpackable
|
||||||
public static class SampleListTypes {
|
public static class SampleListTypes {
|
||||||
public List<Integer> f0;
|
public List<Integer> f0;
|
||||||
@@ -150,7 +252,7 @@ public class TestMessagePackUnpackable extends TestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testMapTypes() throws Exception {
|
public void testMapTypes01() throws Exception {
|
||||||
SampleMapTypes src = (SampleMapTypes) PackUnpackUtil
|
SampleMapTypes src = (SampleMapTypes) PackUnpackUtil
|
||||||
.newEnhancedInstance(SampleMapTypes.class);
|
.newEnhancedInstance(SampleMapTypes.class);
|
||||||
src.f0 = new HashMap<Integer, Integer>();
|
src.f0 = new HashMap<Integer, Integer>();
|
||||||
@@ -190,6 +292,49 @@ public class TestMessagePackUnpackable extends TestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testMapTypes02() throws Exception {
|
||||||
|
SampleMapTypes src = (SampleMapTypes) PackUnpackUtil
|
||||||
|
.newEnhancedInstance(SampleMapTypes.class);
|
||||||
|
src.f0 = new HashMap<Integer, Integer>();
|
||||||
|
src.f1 = new HashMap<Integer, Integer>();
|
||||||
|
src.f1.put(1, 1);
|
||||||
|
src.f1.put(2, 2);
|
||||||
|
src.f1.put(3, 3);
|
||||||
|
src.f2 = new HashMap<String, Integer>();
|
||||||
|
src.f2.put("k1", 1);
|
||||||
|
src.f2.put("k2", 2);
|
||||||
|
src.f2.put("k3", 3);
|
||||||
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||||
|
new Packer(out).pack(src);
|
||||||
|
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
|
||||||
|
Unpacker pac = new Unpacker(in);
|
||||||
|
Iterator<MessagePackObject> it = pac.iterator();
|
||||||
|
assertTrue(it.hasNext());
|
||||||
|
MessagePackObject mpo = it.next();
|
||||||
|
SampleMapTypes dst = (SampleMapTypes) PackUnpackUtil
|
||||||
|
.initEnhancedInstance(mpo, SampleMapTypes.class);
|
||||||
|
assertEquals(src.f0.size(), dst.f0.size());
|
||||||
|
assertEquals(src.f1.size(), dst.f1.size());
|
||||||
|
Iterator<Integer> srcf1 = src.f1.keySet().iterator();
|
||||||
|
Iterator<Integer> dstf1 = dst.f1.keySet().iterator();
|
||||||
|
while (srcf1.hasNext()) {
|
||||||
|
Integer s1 = srcf1.next();
|
||||||
|
Integer d1 = dstf1.next();
|
||||||
|
assertEquals(s1, d1);
|
||||||
|
assertEquals(src.f1.get(s1), dst.f1.get(d1));
|
||||||
|
}
|
||||||
|
assertEquals(src.f2.size(), dst.f2.size());
|
||||||
|
Iterator<String> srcf2 = src.f2.keySet().iterator();
|
||||||
|
Iterator<String> dstf2 = dst.f2.keySet().iterator();
|
||||||
|
while (srcf2.hasNext()) {
|
||||||
|
String s2 = srcf2.next();
|
||||||
|
String d2 = dstf2.next();
|
||||||
|
assertEquals(s2, d2);
|
||||||
|
assertEquals(src.f2.get(s2), dst.f2.get(d2));
|
||||||
|
}
|
||||||
|
assertFalse(it.hasNext());
|
||||||
|
}
|
||||||
|
|
||||||
@MessagePackUnpackable
|
@MessagePackUnpackable
|
||||||
public static class SampleMapTypes {
|
public static class SampleMapTypes {
|
||||||
public Map<Integer, Integer> f0;
|
public Map<Integer, Integer> f0;
|
||||||
@@ -351,7 +496,7 @@ public class TestMessagePackUnpackable extends TestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testFieldModifiers() throws Exception {
|
public void testFieldModifiers01() throws Exception {
|
||||||
FieldModifiersClass src = (FieldModifiersClass) PackUnpackUtil
|
FieldModifiersClass src = (FieldModifiersClass) PackUnpackUtil
|
||||||
.newEnhancedInstance(FieldModifiersClass.class);
|
.newEnhancedInstance(FieldModifiersClass.class);
|
||||||
src.f0 = 0;
|
src.f0 = 0;
|
||||||
@@ -372,6 +517,31 @@ public class TestMessagePackUnpackable extends TestCase {
|
|||||||
assertTrue(src.f4 != dst.f4);
|
assertTrue(src.f4 != dst.f4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testFieldModifiers02() throws Exception {
|
||||||
|
FieldModifiersClass src = (FieldModifiersClass) PackUnpackUtil
|
||||||
|
.newEnhancedInstance(FieldModifiersClass.class);
|
||||||
|
src.f0 = 0;
|
||||||
|
src.f2 = 2;
|
||||||
|
src.f3 = 3;
|
||||||
|
src.f4 = 4;
|
||||||
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||||
|
new Packer(out).pack(src);
|
||||||
|
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
|
||||||
|
Unpacker pac = new Unpacker(in);
|
||||||
|
Iterator<MessagePackObject> it = pac.iterator();
|
||||||
|
assertTrue(it.hasNext());
|
||||||
|
MessagePackObject mpo = it.next();
|
||||||
|
FieldModifiersClass dst = (FieldModifiersClass) PackUnpackUtil
|
||||||
|
.initEnhancedInstance(mpo, FieldModifiersClass.class);
|
||||||
|
assertTrue(src.f0 == dst.f0);
|
||||||
|
assertTrue(src.f1 == dst.f1);
|
||||||
|
assertTrue(src.f2 != dst.f2);
|
||||||
|
assertTrue(src.f3 == dst.f3);
|
||||||
|
assertTrue(src.f4 != dst.f4);
|
||||||
|
assertFalse(it.hasNext());
|
||||||
|
}
|
||||||
|
|
||||||
@MessagePackUnpackable
|
@MessagePackUnpackable
|
||||||
public static class FieldModifiersClass {
|
public static class FieldModifiersClass {
|
||||||
public int f0;
|
public int f0;
|
||||||
@@ -385,7 +555,7 @@ public class TestMessagePackUnpackable extends TestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testNestedAnnotatedFieldClass() throws Exception {
|
public void testNestedAnnotatedFieldClass01() throws Exception {
|
||||||
NestedClass src2 = (NestedClass) PackUnpackUtil
|
NestedClass src2 = (NestedClass) PackUnpackUtil
|
||||||
.newEnhancedInstance(NestedClass.class);
|
.newEnhancedInstance(NestedClass.class);
|
||||||
BaseClass src = (BaseClass) PackUnpackUtil
|
BaseClass src = (BaseClass) PackUnpackUtil
|
||||||
@@ -407,6 +577,33 @@ public class TestMessagePackUnpackable extends TestCase {
|
|||||||
assertTrue(src2.f2 == dst.f1.f2);
|
assertTrue(src2.f2 == dst.f1.f2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNestedAnnotatedFieldClass02() throws Exception {
|
||||||
|
NestedClass src2 = (NestedClass) PackUnpackUtil
|
||||||
|
.newEnhancedInstance(NestedClass.class);
|
||||||
|
BaseClass src = (BaseClass) PackUnpackUtil
|
||||||
|
.newEnhancedInstance(BaseClass.class);
|
||||||
|
src.f0 = 0;
|
||||||
|
src2.f2 = 2;
|
||||||
|
src.f1 = src2;
|
||||||
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||||
|
new Packer(out).pack(src);
|
||||||
|
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
|
||||||
|
Unpacker pac = new Unpacker(in);
|
||||||
|
Iterator<MessagePackObject> it = pac.iterator();
|
||||||
|
assertTrue(it.hasNext());
|
||||||
|
MessagePackObject mpo = it.next();
|
||||||
|
NestedClass dst2 = (NestedClass) PackUnpackUtil
|
||||||
|
.newEnhancedInstance(NestedClass.class);
|
||||||
|
BaseClass dst = (BaseClass) PackUnpackUtil
|
||||||
|
.newEnhancedInstance(BaseClass.class);
|
||||||
|
dst.f1 = dst2;
|
||||||
|
dst = (BaseClass) PackUnpackUtil.initEnhancedInstance(mpo, dst);
|
||||||
|
assertTrue(src.f0 == dst.f0);
|
||||||
|
assertTrue(src2.f2 == dst.f1.f2);
|
||||||
|
assertFalse(it.hasNext());
|
||||||
|
}
|
||||||
|
|
||||||
@MessagePackUnpackable
|
@MessagePackUnpackable
|
||||||
public static class BaseClass {
|
public static class BaseClass {
|
||||||
public int f0;
|
public int f0;
|
||||||
@@ -425,7 +622,7 @@ public class TestMessagePackUnpackable extends TestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testExtendedClass() throws Exception {
|
public void testExtendedClass01() throws Exception {
|
||||||
SampleSubClass src = (SampleSubClass) PackUnpackUtil
|
SampleSubClass src = (SampleSubClass) PackUnpackUtil
|
||||||
.newEnhancedInstance(SampleSubClass.class);
|
.newEnhancedInstance(SampleSubClass.class);
|
||||||
src.f0 = 0;
|
src.f0 = 0;
|
||||||
@@ -453,6 +650,38 @@ public class TestMessagePackUnpackable extends TestCase {
|
|||||||
assertTrue(src.f9 != dst.f9);
|
assertTrue(src.f9 != dst.f9);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testExtendedClass02() throws Exception {
|
||||||
|
SampleSubClass src = (SampleSubClass) PackUnpackUtil
|
||||||
|
.newEnhancedInstance(SampleSubClass.class);
|
||||||
|
src.f0 = 0;
|
||||||
|
src.f2 = 2;
|
||||||
|
src.f3 = 3;
|
||||||
|
src.f4 = 4;
|
||||||
|
src.f5 = 5;
|
||||||
|
src.f8 = 8;
|
||||||
|
src.f9 = 9;
|
||||||
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||||
|
new Packer(out).pack(src);
|
||||||
|
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
|
||||||
|
Unpacker pac = new Unpacker(in);
|
||||||
|
Iterator<MessagePackObject> it = pac.iterator();
|
||||||
|
assertTrue(it.hasNext());
|
||||||
|
MessagePackObject mpo = it.next();
|
||||||
|
SampleSubClass dst = (SampleSubClass) PackUnpackUtil
|
||||||
|
.initEnhancedInstance(mpo, SampleSubClass.class);
|
||||||
|
assertTrue(src.f0 == dst.f0);
|
||||||
|
assertTrue(src.f1 == dst.f1);
|
||||||
|
assertTrue(src.f2 != dst.f2);
|
||||||
|
assertTrue(src.f3 == dst.f3);
|
||||||
|
assertTrue(src.f4 != dst.f4);
|
||||||
|
assertTrue(src.f5 == dst.f5);
|
||||||
|
assertTrue(src.f6 == dst.f6);
|
||||||
|
assertTrue(src.f8 == dst.f8);
|
||||||
|
assertTrue(src.f9 != dst.f9);
|
||||||
|
assertFalse(it.hasNext());
|
||||||
|
}
|
||||||
|
|
||||||
@MessagePackUnpackable
|
@MessagePackUnpackable
|
||||||
public static class SampleSubClass extends SampleSuperClass {
|
public static class SampleSubClass extends SampleSuperClass {
|
||||||
public int f0;
|
public int f0;
|
||||||
|
Reference in New Issue
Block a user