diff --git a/source/base/src/main/java/com/jd/blockchain/consts/DataCodes.java b/source/base/src/main/java/com/jd/blockchain/consts/DataCodes.java
index 2afa40f3..e4e17a14 100644
--- a/source/base/src/main/java/com/jd/blockchain/consts/DataCodes.java
+++ b/source/base/src/main/java/com/jd/blockchain/consts/DataCodes.java
@@ -89,7 +89,7 @@ public interface DataCodes {
public static final int ENUM_TYPE_TRANSACTION_STATE = 0xB22;
- public static final int ENUM_TYPE_DATA_TYPE = 0xB23;
+ public static final int ENUM_TYPE_BYTES_VALUE_TYPE = 0xB23;
public static final int DIGITALSIGNATURE = 0xB30;
diff --git a/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/DataContractEncoder.java b/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/DataContractEncoder.java
index 1cb0fc75..179f7d76 100644
--- a/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/DataContractEncoder.java
+++ b/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/DataContractEncoder.java
@@ -2,7 +2,6 @@ package com.jd.blockchain.binaryproto;
import com.jd.blockchain.utils.io.BytesInputStream;
import com.jd.blockchain.utils.io.BytesOutputBuffer;
-import com.jd.blockchain.utils.io.BytesSlice;
/**
* 二进制编码器;
diff --git a/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/DataField.java b/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/DataField.java
index ca714dae..1829eed6 100644
--- a/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/DataField.java
+++ b/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/DataField.java
@@ -37,11 +37,11 @@ public @interface DataField {
* 基本数据类型;
*
*
- * 如果字段的类型属于 {@link DataType} 枚举中的基本数据类型,则需要显式指定一种具体的类型;
+ * 如果字段的类型属于 {@link PrimitiveType} 枚举中的基本数据类型,则需要显式指定一种具体的类型;
*
* @return
*/
- DataType primitiveType() default DataType.NIL;
+ PrimitiveType primitiveType() default PrimitiveType.NIL;
/**
* 是否是枚举类型;
@@ -78,8 +78,8 @@ public @interface DataField {
/**
* 最大长度,单位为“byte”
*
- * 仅对于文本、字节数组、大整数等相关的数据类型有效(即:{@link DataType} 枚举中编码大于等于 0x20
- * {@link DataType#TEXT}的数据类型);
+ * 仅对于文本、字节数组、大整数等相关的数据类型有效(即:{@link PrimitiveType} 枚举中编码大于等于 0x20
+ * {@link PrimitiveType#TEXT}的数据类型);
*
* @return
*/
diff --git a/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/DataType.java b/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/DataType.java
index e4a55280..08c3728b 100644
--- a/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/DataType.java
+++ b/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/DataType.java
@@ -1,114 +1,11 @@
-package com.jd.blockchain.binaryproto;
-
-/**
- * 键值操作的数据类型;
- *
- * @author huanghaiquan
- *
- */
-public enum DataType {
-
- /**
- * 空;
- */
- NIL((byte) 0x00),
-
- /**
- * 布尔型;
- */
- BOOLEAN((byte) 0x10),
-
- /**
- * 数值型:
- */
- INT8((byte) 0x11),
-
- INT16((byte) 0x12),
-
- INT32((byte) 0x13),
-
- INT64((byte) 0x14),
-
- /**
- * 日期时间;
- */
- DATETIME((byte) 0x15),
-
- /**
- * 文本数据;
- */
- TEXT((byte) 0x20),
-
- /**
- * 文本数据;
- */
- JSON((byte) 0x21),
-
- /**
- * 文本数据;
- */
- XML((byte) 0x22),
-
- /**
- * 二进制数据;
- */
- BYTES((byte) 0x40),
-
- /**
- * 大整数;
- */
- BIG_INT((byte) 0x41),
-
- /**
- * 图片;
- */
- IMG((byte) 0x42),
-
- /**
- * 视频;
- */
- VIDEO((byte) 0x43),
-
- /**
- * 位置;
- */
- LOCATION((byte) 0x44);
-
-
-// /**
-// * 引用;
-// *
-// * 表示引用区块链系统中的某一个特定的对象,用以下形式的 URI 表示;
-// *
-// * state://ledger/account/key/version
-// * 或
-// * proof:state://account_merkle_path/key_merkle_path
-// *
-// * proof:tx://
-// *
-// */
-// REFERENCE((byte) 0x80);
-
-
- public static final byte NUMERIC_FLAG = (byte)0x10;
-
- public static final byte TEXT_FLAG = (byte)0x20;
-
- public static final byte BINARY_FLAG = (byte)0x40;
-
- public final byte CODE;
-
- private DataType(byte code) {
- this.CODE = code;
- }
-
- public static DataType valueOf(byte code) {
- for (DataType dataType : DataType.values()) {
- if (dataType.CODE == code) {
- return dataType;
- }
- }
- throw new IllegalArgumentException("Unsupported code[" + code + "] of DataType!");
- }
-
-}
+package com.jd.blockchain.binaryproto;
+
+public interface DataType {
+
+ public static final byte NUMERIC_FLAG = (byte)0x10;
+
+ public static final byte TEXT_FLAG = (byte)0x20;
+
+ public static final byte BINARY_FLAG = (byte)0x40;
+
+}
diff --git a/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/EnumField.java b/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/EnumField.java
index 2d55d4d5..f7c588f1 100644
--- a/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/EnumField.java
+++ b/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/EnumField.java
@@ -13,11 +13,11 @@ public @interface EnumField {
* 枚举值的类型;
*
*
- * 注:只支持 {@link DataType#INT8} ~ {@link DataType#INT32} 这几种类型;
+ * 注:只支持 {@link PrimitiveType#INT8} ~ {@link PrimitiveType#INT32} 这几种类型;
*
*
* @return
*/
- DataType type();
+ PrimitiveType type();
}
diff --git a/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/EnumSpecification.java b/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/EnumSpecification.java
index ffb39582..6c4e73ce 100644
--- a/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/EnumSpecification.java
+++ b/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/EnumSpecification.java
@@ -10,7 +10,7 @@ public interface EnumSpecification {
long getVersion();
- DataType getValueType();
+ PrimitiveType getValueType();
int[] getItemValues();
diff --git a/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/FieldSpec.java b/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/FieldSpec.java
index 8f88291c..315e6580 100644
--- a/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/FieldSpec.java
+++ b/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/FieldSpec.java
@@ -33,11 +33,11 @@ public interface FieldSpec {
* 字段的值的类型;
*
* 如果不是字段的值不是基本类型,则返回 null(即: {@link DataField#primitiveType()} 设置为
- * {@link DataType#NIL});
+ * {@link PrimitiveType#NIL});
*
* @return
*/
- DataType getPrimitiveType();
+ PrimitiveType getPrimitiveType();
/**
* 字段的值引用的枚举契约;
diff --git a/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/PrimitiveType.java b/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/PrimitiveType.java
new file mode 100644
index 00000000..6fd475cd
--- /dev/null
+++ b/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/PrimitiveType.java
@@ -0,0 +1,93 @@
+package com.jd.blockchain.binaryproto;
+
+/**
+ * 键值操作的数据类型;
+ *
+ * @author huanghaiquan
+ *
+ */
+public enum PrimitiveType {
+
+ /**
+ * 空;
+ */
+ NIL((byte) 0x00),
+
+ /**
+ * 布尔型;
+ */
+ BOOLEAN((byte) 0x10),
+
+ /**
+ * 数值型:
+ */
+ INT8((byte) 0x11),
+
+ INT16((byte) 0x12),
+
+ INT32((byte) 0x13),
+
+ INT64((byte) 0x14),
+
+ /**
+ * 日期时间;
+ */
+ DATETIME((byte) 0x15),
+
+ /**
+ * 文本数据;
+ */
+ TEXT((byte) 0x20),
+
+ /**
+ * 文本数据;
+ */
+ JSON((byte) 0x21),
+
+ /**
+ * 文本数据;
+ */
+ XML((byte) 0x22),
+
+ /**
+ * 二进制数据;
+ */
+ BYTES((byte) 0x40),
+
+ /**
+ * 大整数;
+ */
+ BIG_INT((byte) 0x41),
+
+ /**
+ * 图片;
+ */
+ IMG((byte) 0x42),
+
+ /**
+ * 视频;
+ */
+ VIDEO((byte) 0x43),
+
+ /**
+ * 位置;
+ */
+ LOCATION((byte) 0x44);
+
+
+ public final byte CODE;
+
+ private PrimitiveType(byte code) {
+ this.CODE = code;
+ }
+
+ public static PrimitiveType valueOf(byte code) {
+ for (PrimitiveType dataType : PrimitiveType.values()) {
+ if (dataType.CODE == code) {
+ return dataType;
+ }
+ }
+ throw new IllegalArgumentException("Code[" + code + "] not suppported by PrimitiveType!");
+ }
+
+}
diff --git a/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/AbstractDynamicValueConverter.java b/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/AbstractDynamicValueConverter.java
index b0536f76..53c8161e 100644
--- a/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/AbstractDynamicValueConverter.java
+++ b/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/AbstractDynamicValueConverter.java
@@ -2,7 +2,6 @@ package com.jd.blockchain.binaryproto.impl;
import com.jd.blockchain.utils.io.BytesInputStream;
import com.jd.blockchain.utils.io.BytesOutputBuffer;
-import com.jd.blockchain.utils.io.BytesSlice;
import com.jd.blockchain.utils.io.NumberMask;
public abstract class AbstractDynamicValueConverter implements DynamicValueConverter {
diff --git a/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/DataContractContext.java b/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/DataContractContext.java
index f78bb96d..ae923b4e 100644
--- a/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/DataContractContext.java
+++ b/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/DataContractContext.java
@@ -17,7 +17,7 @@ import com.jd.blockchain.binaryproto.DataContractEncoder;
import com.jd.blockchain.binaryproto.DataContractException;
import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.binaryproto.DataSpecification;
-import com.jd.blockchain.binaryproto.DataType;
+import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.binaryproto.EnumContract;
import com.jd.blockchain.binaryproto.EnumField;
import com.jd.blockchain.binaryproto.EnumSpecification;
@@ -65,23 +65,23 @@ public class DataContractContext {
private static Map, EnumSpecification> enumContractSpecMap = new ConcurrentHashMap<>();
- private static Map, ValueConverter>> primitiveTypeConverters = new HashMap<>();
+ private static Map, ValueConverter>> primitiveTypeConverters = new HashMap<>();
static {
- addConverterMapping(DataType.BOOLEAN, boolean.class, new BoolConverter());
- addConverterMapping(DataType.BOOLEAN, Boolean.class, new BoolWrapperConverter());
- addConverterMapping(DataType.INT8, byte.class, new Int8ByteConverter());
- addConverterMapping(DataType.INT8, Byte.class, new Int8ByteWrapperConverter());
- addConverterMapping(DataType.INT16, short.class, new Int16ShortConverter());
- addConverterMapping(DataType.INT16, Short.class, new Int16ShortWrapperConverter());
- addConverterMapping(DataType.INT16, char.class, new Int16CharConverter());
- addConverterMapping(DataType.INT16, Character.class, new Int16CharWrapperConverter());
- addConverterMapping(DataType.INT32, int.class, new Int32IntConverter());
- addConverterMapping(DataType.INT32, Integer.class, new Int32IntWrapperConverter());
- addConverterMapping(DataType.INT64, long.class, new Int64LongConverter());
- addConverterMapping(DataType.INT64, Long.class, new Int64LongWrapperConverter());
- addConverterMapping(DataType.TEXT, String.class, new StringValueConverter());
- addConverterMapping(DataType.BYTES, byte[].class, new BytesValueConverter());
+ addConverterMapping(PrimitiveType.BOOLEAN, boolean.class, new BoolConverter());
+ addConverterMapping(PrimitiveType.BOOLEAN, Boolean.class, new BoolWrapperConverter());
+ addConverterMapping(PrimitiveType.INT8, byte.class, new Int8ByteConverter());
+ addConverterMapping(PrimitiveType.INT8, Byte.class, new Int8ByteWrapperConverter());
+ addConverterMapping(PrimitiveType.INT16, short.class, new Int16ShortConverter());
+ addConverterMapping(PrimitiveType.INT16, Short.class, new Int16ShortWrapperConverter());
+ addConverterMapping(PrimitiveType.INT16, char.class, new Int16CharConverter());
+ addConverterMapping(PrimitiveType.INT16, Character.class, new Int16CharWrapperConverter());
+ addConverterMapping(PrimitiveType.INT32, int.class, new Int32IntConverter());
+ addConverterMapping(PrimitiveType.INT32, Integer.class, new Int32IntWrapperConverter());
+ addConverterMapping(PrimitiveType.INT64, long.class, new Int64LongConverter());
+ addConverterMapping(PrimitiveType.INT64, Long.class, new Int64LongWrapperConverter());
+ addConverterMapping(PrimitiveType.TEXT, String.class, new StringValueConverter());
+ addConverterMapping(PrimitiveType.BYTES, byte[].class, new BytesValueConverter());
ENCODER_LOOKUP = new DataContractEncoderLookup() {
@Override
@@ -101,7 +101,7 @@ public class DataContractContext {
};
}
- private static void addConverterMapping(DataType protocalType, Class> javaType, ValueConverter converter) {
+ private static void addConverterMapping(PrimitiveType protocalType, Class> javaType, ValueConverter converter) {
Map, ValueConverter> converterMap = primitiveTypeConverters.get(protocalType);
if (converterMap == null) {
converterMap = new HashMap<>();
@@ -110,14 +110,14 @@ public class DataContractContext {
converterMap.put(javaType, converter);
}
- private static ValueConverter getPrimitiveTypeConverter(DataType protocalType, Class> javaType) {
+ private static ValueConverter getPrimitiveTypeConverter(PrimitiveType protocalType, Class> javaType) {
Map, ValueConverter> converterMap = primitiveTypeConverters.get(protocalType);
if (converterMap != null) {
ValueConverter converter = converterMap.get(javaType);
if (converter != null) {
return converter;
}
- if (DataType.BYTES == protocalType && BytesSerializable.class.isAssignableFrom(javaType)) {
+ if (PrimitiveType.BYTES == protocalType && BytesSerializable.class.isAssignableFrom(javaType)) {
converter = new BytesSerializableValueConverter(javaType);
converterMap.put(javaType, converter);
return converter;
@@ -366,7 +366,7 @@ public class DataContractContext {
EnumSpecificationInfo enumSpec = (EnumSpecificationInfo) fieldInfo.fieldSpec.getRefEnum();
int[] values = enumSpec.getItemValues();
Object[] constants = enumSpec.getConstants();
- DataType codeType = enumSpec.getValueType();
+ PrimitiveType codeType = enumSpec.getValueType();
ValueConverter baseConverter = getPrimitiveTypeConverter(codeType, enumSpec.getDataType());
@@ -410,8 +410,8 @@ public class DataContractContext {
private static BinarySliceSpec buildSlice(FieldSpecInfo fieldSpec) {
boolean fixed = false;
int len = -1;
- DataType fixedValueType = null;
- if (fieldSpec.getPrimitiveType() != null && fieldSpec.getPrimitiveType() != DataType.NIL) {
+ PrimitiveType fixedValueType = null;
+ if (fieldSpec.getPrimitiveType() != null && fieldSpec.getPrimitiveType() != PrimitiveType.NIL) {
fixedValueType = fieldSpec.getPrimitiveType();
} else if (fieldSpec.getRefEnum() != null) {
fixedValueType = fieldSpec.getRefEnum().getValueType();
@@ -546,7 +546,7 @@ public class DataContractContext {
}
int maxSize = annoField.maxSize();
- DataType primitiveType = annoField.primitiveType();
+ PrimitiveType primitiveType = annoField.primitiveType();
if (primitiveType != null) {
primitiveType = verifyPrimitiveType(primitiveType, dataType, accessor);
}
@@ -650,7 +650,7 @@ public class DataContractContext {
* @param dataType
* @return
*/
- private static DataType verifyPrimitiveType(DataType primitiveType, Class> dataType, Method accessor) {
+ private static PrimitiveType verifyPrimitiveType(PrimitiveType primitiveType, Class> dataType, Method accessor) {
switch (primitiveType) {
case NIL:
return null;
@@ -762,6 +762,7 @@ public class DataContractContext {
public Method reader;
+ @SuppressWarnings("unused")
public DataField annoField;
public FieldDeclaredInfo(Method accessor, DataField annoField, FieldSpecInfo fieldSpec) {
diff --git a/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/DataContractSpecification.java b/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/DataContractSpecification.java
index 8a2d05b1..d13e3242 100644
--- a/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/DataContractSpecification.java
+++ b/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/DataContractSpecification.java
@@ -1,6 +1,5 @@
package com.jd.blockchain.binaryproto.impl;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
diff --git a/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/EnumSpecificationInfo.java b/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/EnumSpecificationInfo.java
index 244dfd61..3a67a022 100644
--- a/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/EnumSpecificationInfo.java
+++ b/source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/EnumSpecificationInfo.java
@@ -3,7 +3,7 @@ package com.jd.blockchain.binaryproto.impl;
import java.util.LinkedHashSet;
import java.util.Set;
-import com.jd.blockchain.binaryproto.DataType;
+import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.binaryproto.EnumSpecification;
/**
@@ -11,7 +11,7 @@ import com.jd.blockchain.binaryproto.EnumSpecification;
*/
public class EnumSpecificationInfo implements EnumSpecification {
- private DataType valueType;
+ private PrimitiveType valueType;
private Class> dataType;
@@ -24,7 +24,7 @@ public class EnumSpecificationInfo implements EnumSpecification {
// private Map