@@ -1,7 +1,7 @@ | |||||
package com.jd.blockchain.binaryproto; | package com.jd.blockchain.binaryproto; | ||||
/** | /** | ||||
* 基础类型; | |||||
* 基础类型标志; | |||||
* | * | ||||
* @author huanghaiquan | * @author huanghaiquan | ||||
* | * | ||||
@@ -19,9 +19,29 @@ public interface BaseType { | |||||
public static final byte BOOLEAN = (byte) 0x01; | public static final byte BOOLEAN = (byte) 0x01; | ||||
/** | /** | ||||
* 数值; | |||||
* 整数; | |||||
*/ | */ | ||||
public static final byte NUMERIC = (byte) 0x10; | |||||
public static final byte INTEGER = (byte) 0x10; | |||||
/** | |||||
* 8位整数; | |||||
*/ | |||||
public static final byte INT8 = (byte) (INTEGER | 0x01); | |||||
/** | |||||
* 16位整数; | |||||
*/ | |||||
public static final byte INT16 = (byte) (INTEGER | 0x02); | |||||
/** | |||||
* 32位整数; | |||||
*/ | |||||
public static final byte INT32 = (byte) (INTEGER | 0x03); | |||||
/** | |||||
* 64位整数; | |||||
*/ | |||||
public static final byte INT64 = (byte) (INTEGER | 0x04); | |||||
/** | /** | ||||
* 文本 | * 文本 | ||||
@@ -19,80 +19,34 @@ public enum PrimitiveType { | |||||
BOOLEAN(BaseType.BOOLEAN), | BOOLEAN(BaseType.BOOLEAN), | ||||
/** | /** | ||||
* 数值型: | |||||
* 8位的整数: | |||||
*/ | */ | ||||
INT8((byte) (BaseType.NUMERIC | 0x01)), | |||||
INT16((byte) (BaseType.NUMERIC | 0x02)), | |||||
INT32((byte) (BaseType.NUMERIC | 0x03)), | |||||
INT64((byte) (BaseType.NUMERIC | 0x04)), | |||||
INT8(BaseType.INT8), | |||||
/** | /** | ||||
* 时间戳; | |||||
* 16位整数; | |||||
*/ | */ | ||||
TIMESTAMP((byte) (BaseType.NUMERIC | 0x08)), | |||||
INT16(BaseType.INT16), | |||||
/** | /** | ||||
* 文本数据; | |||||
* 32位整数; | |||||
*/ | */ | ||||
TEXT(BaseType.TEXT), | |||||
INT32(BaseType.INT32), | |||||
/** | /** | ||||
* 文本数据; | |||||
* 64位整数; | |||||
*/ | */ | ||||
JSON((byte) (BaseType.TEXT | 0x01)), | |||||
INT64(BaseType.INT64), | |||||
/** | /** | ||||
* 文本数据; | |||||
* 文本; | |||||
*/ | */ | ||||
XML((byte) (BaseType.TEXT | 0x02)), | |||||
TEXT(BaseType.TEXT), | |||||
/** | /** | ||||
* 二进制数据; | * 二进制数据; | ||||
*/ | */ | ||||
BYTES(BaseType.BYTES), | |||||
/** | |||||
* 大整数; | |||||
*/ | |||||
BIG_INT((byte) (BaseType.BYTES | 0x01)), | |||||
/** | |||||
* 图片; | |||||
*/ | |||||
IMG((byte) (BaseType.BYTES | 0x02)), | |||||
/** | |||||
* 视频; | |||||
*/ | |||||
VIDEO((byte) (BaseType.BYTES | 0x03)), | |||||
/** | |||||
* 位置坐标; | |||||
*/ | |||||
LOCATION((byte) (BaseType.BYTES | 0x04)), | |||||
/** | |||||
* 公钥; | |||||
*/ | |||||
PUB_KEY((byte) (BaseType.BYTES | 0x05)), | |||||
/** | |||||
* 签名摘要; | |||||
*/ | |||||
SIGNATURE_DIGEST((byte) (BaseType.BYTES | 0x06)), | |||||
/** | |||||
* 哈希摘要; | |||||
*/ | |||||
HASH_DIGEST((byte) (BaseType.BYTES | 0x07)), | |||||
/** | |||||
* 加密数据; | |||||
*/ | |||||
ENCRYPTED_DATA((byte) (BaseType.BYTES | 0x08)); | |||||
BYTES(BaseType.BYTES); | |||||
public final byte CODE; | public final byte CODE; | ||||
@@ -18,7 +18,7 @@ import com.jd.blockchain.crypto.service.classic.ClassicCryptoService; | |||||
import com.jd.blockchain.crypto.service.sm.SMCryptoService; | import com.jd.blockchain.crypto.service.sm.SMCryptoService; | ||||
import com.jd.blockchain.ledger.BlockchainKeypair; | import com.jd.blockchain.ledger.BlockchainKeypair; | ||||
import com.jd.blockchain.ledger.BytesValue; | import com.jd.blockchain.ledger.BytesValue; | ||||
import com.jd.blockchain.ledger.BytesValueType; | |||||
import com.jd.blockchain.ledger.DataType; | |||||
import com.jd.blockchain.ledger.LedgerBlock; | import com.jd.blockchain.ledger.LedgerBlock; | ||||
import com.jd.blockchain.ledger.LedgerInitSetting; | import com.jd.blockchain.ledger.LedgerInitSetting; | ||||
import com.jd.blockchain.ledger.LedgerTransaction; | import com.jd.blockchain.ledger.LedgerTransaction; | ||||
@@ -109,7 +109,7 @@ public class LedgerEditerTest { | |||||
// 验证数据读写的一致性; | // 验证数据读写的一致性; | ||||
BytesValue bytes = dataAccount.getBytes("A"); | BytesValue bytes = dataAccount.getBytes("A"); | ||||
assertEquals(BytesValueType.TEXT, bytes.getType()); | |||||
assertEquals(DataType.TEXT, bytes.getType()); | |||||
String textValue = bytes.getValue().toUTF8String(); | String textValue = bytes.getValue().toUTF8String(); | ||||
assertEquals("abc", textValue); | assertEquals("abc", textValue); | ||||
} | } | ||||
@@ -21,7 +21,7 @@ public interface BytesValue { | |||||
* @return | * @return | ||||
*/ | */ | ||||
@DataField(order = 0, refEnum = true) | @DataField(order = 0, refEnum = true) | ||||
BytesValueType getType(); | |||||
DataType getType(); | |||||
/** | /** | ||||
* 数据值的二进制序列; | * 数据值的二进制序列; | ||||
@@ -9,37 +9,37 @@ import com.jd.blockchain.utils.io.BytesUtils; | |||||
* | * | ||||
*/ | */ | ||||
public class BytesValueEntry implements BytesValue { | public class BytesValueEntry implements BytesValue { | ||||
BytesValueType type; | |||||
DataType type; | |||||
Bytes value; | Bytes value; | ||||
private BytesValueEntry(BytesValueType type, byte[] bytes) { | |||||
private BytesValueEntry(DataType type, byte[] bytes) { | |||||
this.type = type; | this.type = type; | ||||
this.value = new Bytes(bytes); | this.value = new Bytes(bytes); | ||||
} | } | ||||
private BytesValueEntry(BytesValueType type, Bytes bytes) { | |||||
private BytesValueEntry(DataType type, Bytes bytes) { | |||||
this.type = type; | this.type = type; | ||||
this.value = bytes; | this.value = bytes; | ||||
} | } | ||||
public static BytesValue fromType(BytesValueType type, byte[] value) { | |||||
public static BytesValue fromType(DataType type, byte[] value) { | |||||
return new BytesValueEntry(type, value); | return new BytesValueEntry(type, value); | ||||
} | } | ||||
public static BytesValue fromBytes(byte[] value) { | public static BytesValue fromBytes(byte[] value) { | ||||
return new BytesValueEntry(BytesValueType.BYTES, value); | |||||
return new BytesValueEntry(DataType.BYTES, value); | |||||
} | } | ||||
public static BytesValue fromBytes(Bytes value) { | public static BytesValue fromBytes(Bytes value) { | ||||
return new BytesValueEntry(BytesValueType.BYTES, value); | |||||
return new BytesValueEntry(DataType.BYTES, value); | |||||
} | } | ||||
public static BytesValue fromImage(byte[] value) { | public static BytesValue fromImage(byte[] value) { | ||||
return new BytesValueEntry(BytesValueType.IMG, value); | |||||
return new BytesValueEntry(DataType.IMG, value); | |||||
} | } | ||||
public static BytesValue fromImage(Bytes value) { | public static BytesValue fromImage(Bytes value) { | ||||
return new BytesValueEntry(BytesValueType.IMG, value); | |||||
return new BytesValueEntry(DataType.IMG, value); | |||||
} | } | ||||
/** | /** | ||||
@@ -49,7 +49,7 @@ public class BytesValueEntry implements BytesValue { | |||||
* @return | * @return | ||||
*/ | */ | ||||
public static BytesValue fromText(String value) { | public static BytesValue fromText(String value) { | ||||
return new BytesValueEntry(BytesValueType.TEXT, BytesUtils.toBytes(value)); | |||||
return new BytesValueEntry(DataType.TEXT, BytesUtils.toBytes(value)); | |||||
} | } | ||||
/** | /** | ||||
@@ -62,51 +62,51 @@ public class BytesValueEntry implements BytesValue { | |||||
if (bytesValue == null) { | if (bytesValue == null) { | ||||
return null; | return null; | ||||
} | } | ||||
if (bytesValue.getType() != BytesValueType.TEXT) { | |||||
throw new ValueTypeCastException("The expected value type is " + BytesValueType.TEXT.toString() | |||||
if (bytesValue.getType() != DataType.TEXT) { | |||||
throw new ValueTypeCastException("The expected value type is " + DataType.TEXT.toString() | |||||
+ ", but it is actually " + bytesValue.getType().toString() + "!"); | + ", but it is actually " + bytesValue.getType().toString() + "!"); | ||||
} | } | ||||
return bytesValue.getValue().toUTF8String(); | return bytesValue.getValue().toUTF8String(); | ||||
} | } | ||||
public static BytesValue fromJSON(String value) { | public static BytesValue fromJSON(String value) { | ||||
return new BytesValueEntry(BytesValueType.JSON, BytesUtils.toBytes(value)); | |||||
return new BytesValueEntry(DataType.JSON, BytesUtils.toBytes(value)); | |||||
} | } | ||||
public static BytesValue fromXML(String value) { | public static BytesValue fromXML(String value) { | ||||
return new BytesValueEntry(BytesValueType.XML, BytesUtils.toBytes(value)); | |||||
return new BytesValueEntry(DataType.XML, BytesUtils.toBytes(value)); | |||||
} | } | ||||
public static BytesValue fromInt32(int value) { | public static BytesValue fromInt32(int value) { | ||||
return new BytesValueEntry(BytesValueType.INT32, BytesUtils.toBytes(value)); | |||||
return new BytesValueEntry(DataType.INT32, BytesUtils.toBytes(value)); | |||||
} | } | ||||
public static BytesValue fromInt64(long value) { | public static BytesValue fromInt64(long value) { | ||||
return new BytesValueEntry(BytesValueType.INT64, BytesUtils.toBytes(value)); | |||||
return new BytesValueEntry(DataType.INT64, BytesUtils.toBytes(value)); | |||||
} | } | ||||
public static BytesValue fromInt16(short value) { | public static BytesValue fromInt16(short value) { | ||||
return new BytesValueEntry(BytesValueType.INT16, BytesUtils.toBytes(value)); | |||||
return new BytesValueEntry(DataType.INT16, BytesUtils.toBytes(value)); | |||||
} | } | ||||
public static BytesValue fromInt8(byte value) { | public static BytesValue fromInt8(byte value) { | ||||
return new BytesValueEntry(BytesValueType.INT8, BytesUtils.toBytes(value)); | |||||
return new BytesValueEntry(DataType.INT8, BytesUtils.toBytes(value)); | |||||
} | } | ||||
public static BytesValue fromTimestamp(long value) { | public static BytesValue fromTimestamp(long value) { | ||||
return new BytesValueEntry(BytesValueType.TIMESTAMP, BytesUtils.toBytes(value)); | |||||
return new BytesValueEntry(DataType.TIMESTAMP, BytesUtils.toBytes(value)); | |||||
} | } | ||||
public static BytesValue fromBoolean(boolean value) { | public static BytesValue fromBoolean(boolean value) { | ||||
return new BytesValueEntry(BytesValueType.BOOLEAN, BytesUtils.toBytes(value)); | |||||
return new BytesValueEntry(DataType.BOOLEAN, BytesUtils.toBytes(value)); | |||||
} | } | ||||
@Override | @Override | ||||
public BytesValueType getType() { | |||||
public DataType getType() { | |||||
return this.type; | return this.type; | ||||
} | } | ||||
public void setType(BytesValueType type) { | |||||
public void setType(DataType type) { | |||||
this.type = type; | this.type = type; | ||||
} | } | ||||
@@ -1,8 +1,9 @@ | |||||
package com.jd.blockchain.ledger; | package com.jd.blockchain.ledger; | ||||
import com.jd.blockchain.binaryproto.PrimitiveType; | |||||
import com.jd.blockchain.binaryproto.BaseType; | |||||
import com.jd.blockchain.binaryproto.EnumContract; | import com.jd.blockchain.binaryproto.EnumContract; | ||||
import com.jd.blockchain.binaryproto.EnumField; | import com.jd.blockchain.binaryproto.EnumField; | ||||
import com.jd.blockchain.binaryproto.PrimitiveType; | |||||
import com.jd.blockchain.consts.DataCodes; | import com.jd.blockchain.consts.DataCodes; | ||||
/** | /** | ||||
@@ -11,8 +12,8 @@ import com.jd.blockchain.consts.DataCodes; | |||||
* @author huanghaiquan | * @author huanghaiquan | ||||
* | * | ||||
*/ | */ | ||||
@EnumContract(code = DataCodes.ENUM_TYPE_BYTES_VALUE_TYPE, name = "BytesValueType", decription = "") | |||||
public enum BytesValueType { | |||||
@EnumContract(code = DataCodes.ENUM_TYPE_BYTES_VALUE_TYPE) | |||||
public enum DataType { | |||||
/** | /** | ||||
* 空; | * 空; | ||||
@@ -35,61 +36,88 @@ public enum BytesValueType { | |||||
INT32(PrimitiveType.INT32.CODE), | INT32(PrimitiveType.INT32.CODE), | ||||
INT64(PrimitiveType.INT64.CODE), | INT64(PrimitiveType.INT64.CODE), | ||||
/** | |||||
* 时间戳; | |||||
*/ | |||||
TIMESTAMP(PrimitiveType.TIMESTAMP.CODE), | |||||
/** | /** | ||||
* 文本数据; | * 文本数据; | ||||
*/ | */ | ||||
TEXT(PrimitiveType.TEXT.CODE), | TEXT(PrimitiveType.TEXT.CODE), | ||||
/** | /** | ||||
* 文本数据; | |||||
* 二进制数据; | |||||
*/ | */ | ||||
JSON(PrimitiveType.JSON.CODE), | |||||
BYTES(PrimitiveType.BYTES.CODE), | |||||
/** | |||||
* 时间戳; | |||||
*/ | |||||
TIMESTAMP((byte) (BaseType.INTEGER | 0x08)), | |||||
/** | /** | ||||
* 文本数据; | * 文本数据; | ||||
*/ | */ | ||||
XML(PrimitiveType.XML.CODE), | |||||
JSON((byte) (BaseType.TEXT | 0x01)), | |||||
/** | /** | ||||
* 二进制数据; | |||||
* 文本数据; | |||||
*/ | */ | ||||
BYTES(PrimitiveType.BYTES.CODE), | |||||
XML((byte) (BaseType.TEXT | 0x02)), | |||||
/** | /** | ||||
* 大整数; | * 大整数; | ||||
*/ | */ | ||||
BIG_INT(PrimitiveType.BIG_INT.CODE), | |||||
BIG_INT((byte) (BaseType.BYTES | 0x01)), | |||||
/** | /** | ||||
* 图片; | * 图片; | ||||
*/ | */ | ||||
IMG(PrimitiveType.IMG.CODE), | |||||
IMG((byte) (BaseType.BYTES | 0x02)), | |||||
/** | /** | ||||
* 视频; | * 视频; | ||||
*/ | */ | ||||
VIDEO(PrimitiveType.VIDEO.CODE), | |||||
VIDEO((byte) (BaseType.BYTES | 0x03)), | |||||
/** | /** | ||||
* 位置; | |||||
* 位置坐标; | |||||
*/ | */ | ||||
LOCATION(PrimitiveType.LOCATION.CODE); | |||||
LOCATION((byte) (BaseType.BYTES | 0x04)), | |||||
/** | |||||
* 公钥; | |||||
*/ | |||||
PUB_KEY((byte) (BaseType.BYTES | 0x05)), | |||||
/** | |||||
* 签名摘要; | |||||
*/ | |||||
SIGNATURE_DIGEST((byte) (BaseType.BYTES | 0x06)), | |||||
/** | |||||
* 哈希摘要; | |||||
*/ | |||||
HASH_DIGEST((byte) (BaseType.BYTES | 0x07)), | |||||
/** | |||||
* 加密数据; | |||||
*/ | |||||
ENCRYPTED_DATA((byte) (BaseType.BYTES | 0x08)); | |||||
@EnumField(type = PrimitiveType.INT8) | @EnumField(type = PrimitiveType.INT8) | ||||
public final byte CODE; | public final byte CODE; | ||||
private BytesValueType(byte code) { | |||||
private DataType(byte code) { | |||||
this.CODE = code; | this.CODE = code; | ||||
} | } | ||||
public static BytesValueType valueOf(byte code) { | |||||
for (BytesValueType dataType : BytesValueType.values()) { | |||||
public static DataType valueOf(byte code) { | |||||
for (DataType dataType : DataType.values()) { | |||||
if (dataType.CODE == code) { | if (dataType.CODE == code) { | ||||
return dataType; | return dataType; | ||||
} | } |
@@ -25,7 +25,7 @@ public interface KVDataEntry { | |||||
* | * | ||||
* @return | * @return | ||||
*/ | */ | ||||
BytesValueType getType(); | |||||
DataType getType(); | |||||
/** | /** | ||||
* 值; | * 值; | ||||
@@ -58,8 +58,8 @@ public class KVDataObject implements KVDataEntry { | |||||
* @see com.jd.blockchain.ledger.KVDataEntry#getType() | * @see com.jd.blockchain.ledger.KVDataEntry#getType() | ||||
*/ | */ | ||||
@Override | @Override | ||||
public BytesValueType getType() { | |||||
return bytesValue == null ? BytesValueType.NIL : bytesValue.getType(); | |||||
public DataType getType() { | |||||
return bytesValue == null ? DataType.NIL : bytesValue.getType(); | |||||
} | } | ||||
@Override | @Override | ||||
@@ -95,7 +95,7 @@ public class KVDataObject implements KVDataEntry { | |||||
* @return | * @return | ||||
*/ | */ | ||||
public boolean isNil() { | public boolean isNil() { | ||||
return bytesValue == null || BytesValueType.NIL == bytesValue.getType(); | |||||
return bytesValue == null || DataType.NIL == bytesValue.getType(); | |||||
} | } | ||||
/** | /** | ||||
@@ -119,10 +119,10 @@ public class KVDataObject implements KVDataEntry { | |||||
* @return | * @return | ||||
*/ | */ | ||||
public byte tinyValue() { | public byte tinyValue() { | ||||
if (BytesValueType.INT8 == getType()) { | |||||
if (DataType.INT8 == getType()) { | |||||
return bytesValue.getValue().toBytes()[0]; | return bytesValue.getValue().toBytes()[0]; | ||||
} | } | ||||
throw new IllegalStateException(String.format("Expected type [%s], but [%s]", BytesValueType.INT8, getType())); | |||||
throw new IllegalStateException(String.format("Expected type [%s], but [%s]", DataType.INT8, getType())); | |||||
} | } | ||||
/** | /** | ||||
@@ -137,10 +137,10 @@ public class KVDataObject implements KVDataEntry { | |||||
* @return | * @return | ||||
*/ | */ | ||||
public short shortValue() { | public short shortValue() { | ||||
if (BytesValueType.INT16 == getType()) { | |||||
if (DataType.INT16 == getType()) { | |||||
return BytesUtils.toShort(bytesValue.getValue().toBytes(), 0); | return BytesUtils.toShort(bytesValue.getValue().toBytes(), 0); | ||||
} | } | ||||
throw new IllegalStateException(String.format("Expected type [%s], but [%s]", BytesValueType.INT16, getType())); | |||||
throw new IllegalStateException(String.format("Expected type [%s], but [%s]", DataType.INT16, getType())); | |||||
} | } | ||||
/** | /** | ||||
@@ -155,10 +155,10 @@ public class KVDataObject implements KVDataEntry { | |||||
* @return | * @return | ||||
*/ | */ | ||||
public int intValue() { | public int intValue() { | ||||
if (BytesValueType.INT32 == getType()) { | |||||
if (DataType.INT32 == getType()) { | |||||
return BytesUtils.toInt(bytesValue.getValue().toBytes(), 0); | return BytesUtils.toInt(bytesValue.getValue().toBytes(), 0); | ||||
} | } | ||||
throw new IllegalStateException(String.format("Expected type [%s], but [%s]", BytesValueType.INT32, getType())); | |||||
throw new IllegalStateException(String.format("Expected type [%s], but [%s]", DataType.INT32, getType())); | |||||
} | } | ||||
/** | /** | ||||
@@ -173,10 +173,10 @@ public class KVDataObject implements KVDataEntry { | |||||
* @return | * @return | ||||
*/ | */ | ||||
public long longValue() { | public long longValue() { | ||||
if (BytesValueType.INT64 == getType()) { | |||||
if (DataType.INT64 == getType()) { | |||||
return BytesUtils.toLong(bytesValue.getValue().toBytes(), 0); | return BytesUtils.toLong(bytesValue.getValue().toBytes(), 0); | ||||
} | } | ||||
throw new IllegalStateException(String.format("Expected type [%s], but [%s]", BytesValueType.INT64, getType())); | |||||
throw new IllegalStateException(String.format("Expected type [%s], but [%s]", DataType.INT64, getType())); | |||||
} | } | ||||
@@ -192,11 +192,11 @@ public class KVDataObject implements KVDataEntry { | |||||
* @return | * @return | ||||
*/ | */ | ||||
public BigInteger bigIntValue() { | public BigInteger bigIntValue() { | ||||
if (BytesValueType.BIG_INT == getType()) { | |||||
if (DataType.BIG_INT == getType()) { | |||||
return new BigInteger(bytesValue.getValue().toBytes()); | return new BigInteger(bytesValue.getValue().toBytes()); | ||||
} | } | ||||
throw new IllegalStateException( | throw new IllegalStateException( | ||||
String.format("Expected type [%s], but [%s]", BytesValueType.BIG_INT, getType())); | |||||
String.format("Expected type [%s], but [%s]", DataType.BIG_INT, getType())); | |||||
} | } | ||||
/** | /** | ||||
@@ -211,11 +211,11 @@ public class KVDataObject implements KVDataEntry { | |||||
* @return | * @return | ||||
*/ | */ | ||||
public boolean boolValue() { | public boolean boolValue() { | ||||
if (BytesValueType.BOOLEAN == getType()) { | |||||
if (DataType.BOOLEAN == getType()) { | |||||
return BytesUtils.toBoolean(bytesValue.getValue().toBytes()[0]); | return BytesUtils.toBoolean(bytesValue.getValue().toBytes()[0]); | ||||
} | } | ||||
throw new IllegalStateException( | throw new IllegalStateException( | ||||
String.format("Expected type [%s], but [%s]", BytesValueType.BOOLEAN, getType())); | |||||
String.format("Expected type [%s], but [%s]", DataType.BOOLEAN, getType())); | |||||
} | } | ||||
/** | /** | ||||
@@ -230,12 +230,12 @@ public class KVDataObject implements KVDataEntry { | |||||
* @return | * @return | ||||
*/ | */ | ||||
public Date datetimeValue() { | public Date datetimeValue() { | ||||
if (BytesValueType.TIMESTAMP == getType()) { | |||||
if (DataType.TIMESTAMP == getType()) { | |||||
long ts = BytesUtils.toLong(bytesValue.getValue().toBytes()); | long ts = BytesUtils.toLong(bytesValue.getValue().toBytes()); | ||||
return new Date(ts); | return new Date(ts); | ||||
} | } | ||||
throw new IllegalStateException( | throw new IllegalStateException( | ||||
String.format("Expected type [%s], but [%s]", BytesValueType.TIMESTAMP, getType())); | |||||
String.format("Expected type [%s], but [%s]", DataType.TIMESTAMP, getType())); | |||||
} | } | ||||
/** | /** | ||||
@@ -251,12 +251,12 @@ public class KVDataObject implements KVDataEntry { | |||||
* @return | * @return | ||||
*/ | */ | ||||
public String stringValue() { | public String stringValue() { | ||||
BytesValueType type = getType(); | |||||
if (BytesValueType.TEXT == type || BytesValueType.JSON == type || BytesValueType.XML == type) { | |||||
DataType type = getType(); | |||||
if (DataType.TEXT == type || DataType.JSON == type || DataType.XML == type) { | |||||
return bytesValue.getValue().toUTF8String(); | return bytesValue.getValue().toUTF8String(); | ||||
} | } | ||||
throw new IllegalStateException(String.format("Expected type [%s] or [%s] or [%s] , but [%s]", | throw new IllegalStateException(String.format("Expected type [%s] or [%s] or [%s] , but [%s]", | ||||
PrimitiveType.TEXT, BytesValueType.JSON, BytesValueType.XML, type)); | |||||
PrimitiveType.TEXT, DataType.JSON, DataType.XML, type)); | |||||
} | } | ||||
// // ---------------- | // // ---------------- | ||||