DBZ-2345 Make changes according to comments.

This commit is contained in:
Bingqin Zhou 2020-07-24 17:17:36 -07:00 committed by Gunnar Morling
parent 9ce1d29297
commit 75cbbaa3df
5 changed files with 17 additions and 10 deletions

View File

@ -100,7 +100,7 @@ private CassandraTypeDeserializer() {
* Deserialize from snapshot/datastax-sourced cassandra data.
*
* @param dataType the {@link DataType} of the object
* @param bb the bytes to deserialize
* @param bb the bytes of the column to deserialize
* @return the deserialized object.
*/
public static Object deserialize(DataType dataType, ByteBuffer bb) {
@ -111,8 +111,8 @@ public static Object deserialize(DataType dataType, ByteBuffer bb) {
/**
* Deserialize from cdc-log-sourced cassandra data.
*
* @param abstractType the {@link AbstractType}
* @param bb the bytes to deserialize
* @param abstractType the {@link AbstractType} of the non-collection column
* @param bb the bytes of the non-collection column to deserialize
* @return the deserialized object.
*/
public static Object deserialize(AbstractType<?> abstractType, ByteBuffer bb) {
@ -129,6 +129,13 @@ public static Object deserialize(AbstractType<?> abstractType, ByteBuffer bb) {
return typeDeserializer.deserialize(abstractType, bb);
}
/**
* Deserialize from cdc-log-sourced cassandra data.
*
* @param abstractType the {@link AbstractType} of the collection column
* @param ccd the ComplexColumnData of the collection column to deserialize
* @return the deserialized object.
*/
public static Object deserialize(AbstractType<?> abstractType, ComplexColumnData ccd) {
// Check if abstract type is reversed, if yes, use the base type for deserialization.
if (abstractType.isReversed()) {

View File

@ -40,8 +40,7 @@ public Object deserialize(AbstractType<?> abstractType, ComplexColumnData ccd) {
List<ByteBuffer> bbList = ((ListType) abstractType).serializedValues(ccd.iterator());
AbstractType innerType = ((ListType) abstractType).getElementsType();
List<Object> deserializedList = new ArrayList<>();
for (int i = 0; i < bbList.size(); i++) {
ByteBuffer bb = bbList.get(i);
for (ByteBuffer bb : bbList) {
deserializedList.add(super.deserialize(innerType, bb));
}
return Values.convertToList(getSchemaBuilder(abstractType).build(), deserializedList);

View File

@ -45,9 +45,8 @@ public Object deserialize(AbstractType<?> abstractType, ComplexColumnData ccd) {
Map<Object, Object> deserializedMap = new HashMap<>();
int i = 0;
while (i < bbList.size()) {
ByteBuffer kbb = bbList.get(i);
ByteBuffer vbb = bbList.get(i + 1);
i += 2;
ByteBuffer kbb = bbList.get(i++);
ByteBuffer vbb = bbList.get(i++);
deserializedMap.put(super.deserialize(keyType, kbb), super.deserialize(valueType, vbb));
}
return Values.convertToMap(getSchemaBuilder(abstractType).build(), deserializedMap);

View File

@ -43,8 +43,7 @@ public Object deserialize(AbstractType<?> abstractType, ComplexColumnData ccd) {
List<ByteBuffer> bbList = ((SetType) abstractType).serializedValues(ccd.iterator());
AbstractType innerType = ((SetType) abstractType).getElementsType();
Set<Object> deserializedSet = new HashSet<>();
for (int i = 0; i < bbList.size(); i++) {
ByteBuffer bb = bbList.get(i);
for (ByteBuffer bb : bbList) {
deserializedSet.add(super.deserialize(innerType, bb));
}
List<Object> deserializedList = new ArrayList<>(deserializedSet);

View File

@ -17,6 +17,9 @@ public Object deserialize(AbstractType<?> abstractType, ByteBuffer bb) {
return abstractType.getSerializer().deserialize(bb);
}
// This method will be overwritten in all complex-type deserializers
// including MapTypeDeserializer, SetTypeDeserializer and ListTypeDeserializer,
// and is not supposed to be called for deserialization of any non-complex type column.
public Object deserialize(AbstractType<?> abstractType, ComplexColumnData ccd) {
return null;
}