Skip to content

Commit 59931e1

Browse files
authored
Merge pull request #248 from oceanbase/fix_desc_maxVersions
Fix Jackson deserialization bug
2 parents e8c0b2e + 41795b1 commit 59931e1

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

src/main/java/com/alipay/oceanbase/hbase/util/OHTableDescriptorExecutor.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
package com.alipay.oceanbase.hbase.util;
1919

20-
import com.fasterxml.jackson.core.type.TypeReference;
2120
import com.fasterxml.jackson.databind.JsonNode;
2221
import com.fasterxml.jackson.databind.ObjectMapper;
2322
import com.alipay.oceanbase.hbase.execute.AbstractObTableMetaExecutor;
@@ -32,8 +31,10 @@
3231

3332
import java.io.IOException;
3433
import java.util.HashMap;
34+
import java.util.Iterator;
3535
import java.util.Map;
3636
import java.util.Optional;
37+
import java.util.stream.Stream;
3738

3839
public class OHTableDescriptorExecutor extends AbstractObTableMetaExecutor<HTableDescriptor> {
3940
private final String tableName;
@@ -56,9 +57,11 @@ public HTableDescriptor parse(ObTableMetaResponse response) throws IOException {
5657
"cfDescs": {
5758
"cf1": {
5859
"TTL":604800
60+
"maxVersions": 3
5961
},
6062
"cf2": {
6163
"TTL":259200
64+
"maxVersions": 2
6265
}
6366
},
6467
"tbDesc": {
@@ -70,14 +73,17 @@ public HTableDescriptor parse(ObTableMetaResponse response) throws IOException {
7073
HTableDescriptor tableDescriptor = new HTableDescriptor(TableName.valueOf(tableName));
7174
JsonNode cfDescsNode = Optional.<JsonNode>ofNullable(jsonMap.get("cfDescs"))
7275
.orElseThrow(() -> new IOException("cfDesc is null"));
73-
Map<String, Object> cfDescsMap = objectMapper.convertValue(cfDescsNode, new TypeReference<Map<String, Object>>(){});
74-
for (Map.Entry<String, Object> entry : cfDescsMap.entrySet()) {
76+
Stream<Map.Entry<String, JsonNode>> stream = cfDescsNode.propertyStream();
77+
stream.forEach(entry -> {
7578
String cfName = entry.getKey();
76-
JsonNode attributes = (JsonNode) entry.getValue();
79+
JsonNode value = entry.getValue();
80+
int ttl = value.path("TTL").asInt();
81+
int maxVersions = value.path("maxVersions").asInt();
7782
HColumnDescriptor cf = new HColumnDescriptor(cfName);
78-
cf.setTimeToLive(attributes.get("TTL").asInt());
83+
cf.setTimeToLive(ttl);
84+
cf.setMaxVersions(maxVersions);
7985
tableDescriptor.addFamily(cf);
80-
}
86+
});
8187
return tableDescriptor;
8288
} catch (IllegalArgumentException e) {
8389
throw new IOException("Failed to parse response", e);

0 commit comments

Comments
 (0)