Skip to content

Commit f712e80

Browse files
committed
RLPNC-7512: Info block added to RecordSimilarityResponse
1 parent 48e4464 commit f712e80

3 files changed

Lines changed: 23 additions & 1 deletion

File tree

json/src/main/java/com/basistech/rosette/apimodel/jackson/recordsimilaritydeserializers/RecordSimilarityDeserializerUtilities.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,11 @@
1919
import java.io.IOException;
2020
import java.util.HashMap;
2121
import java.util.Iterator;
22+
import java.util.List;
2223
import java.util.Map;
2324
import java.util.Optional;
25+
import java.util.stream.Collectors;
26+
import java.util.stream.StreamSupport;
2427

2528
import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityExplainInfo;
2629
import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityResult;
@@ -59,12 +62,18 @@ public static RecordSimilarityResult parseResult(
5962
? parseRecord(node.get("right"), jsonParser, fields)
6063
: null;
6164
final String error = Optional.ofNullable(node.get("error")).map(JsonNode::asText).orElse(null);
65+
List<String> info = Optional.ofNullable(node.get("info"))
66+
.map(jsonNode -> StreamSupport.stream(jsonNode.spliterator(), false)
67+
.map(JsonNode::asText)
68+
.collect(Collectors.toList()))
69+
.orElse(null);
6270
return RecordSimilarityResult.builder()
6371
.score(score)
6472
.left(left)
6573
.right(right)
6674
.explainInfo(explainInfo)
6775
.error(error)
76+
.info(info)
6877
.build();
6978
}
7079

json/src/main/java/com/basistech/rosette/apimodel/jackson/recordsimilaritydeserializers/RecordSimilarityResponseDeserializer.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
import java.util.List;
3131
import java.util.Map;
3232
import java.util.Optional;
33+
import java.util.stream.Collectors;
34+
import java.util.stream.StreamSupport;
3335

3436
public class RecordSimilarityResponseDeserializer extends StdDeserializer<RecordSimilarityResponse> {
3537

@@ -47,6 +49,11 @@ public RecordSimilarityResponse deserialize(JsonParser jsonParser, Deserializati
4749
JsonNode fieldsNode = node.get("fields");
4850

4951
Map<String, RecordSimilarityFieldInfo> fields = fieldsNode != null ? node.get("fields").traverse(jsonParser.getCodec()).readValueAs(FIELDS_TYPE_REFERENCE) : null;
52+
List<String> info = Optional.ofNullable(node.get("info"))
53+
.map(jsonNode -> StreamSupport.stream(jsonNode.spliterator(), false)
54+
.map(JsonNode::asText)
55+
.collect(Collectors.toList()))
56+
.orElse(null);
5057
String errorMessage = Optional.ofNullable(node.get("errorMessage")).map(JsonNode::asText).orElse(null);
5158

5259
JsonNode resultsNode = node.get("results");
@@ -60,6 +67,7 @@ public RecordSimilarityResponse deserialize(JsonParser jsonParser, Deserializati
6067
return RecordSimilarityResponse.builder()
6168
.fields(fields)
6269
.results(results)
70+
.info(info)
6371
.errorMessage(errorMessage)
6472
.build();
6573
}

json/src/test/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityResponseTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public class RecordSimilarityResponseTest {
3939

4040
private static final ObjectMapper MAPPER = ApiModelMixinModule.setupObjectMapper(new ObjectMapper());
4141

42-
private static final String EXPECTED_JSON = "{\"fields\":{\"addr\":{\"type\":\"rni_address\",\"weight\":0.3},\"dob\":{\"type\":\"rni_date\",\"weight\":0.2},\"primaryName\":{\"type\":\"rni_name\",\"weight\":0.5}},\"results\":[{\"explainInfo\":{\"leftOnlyFields\":[\"addr\"],\"scoredFields\":{\"dob\":{\"calculatedWeight\":0.2857142857142857,\"finalScore\":0.74,\"rawScore\":0.8,\"weight\":0.5},\"primaryName\":{\"calculatedWeight\":0.7142857142857143,\"details\":\"any details\",\"finalScore\":0.85,\"rawScore\":0.99,\"weight\":0.5}}},\"left\":{\"addr\":{\"address\":\"123 Roadlane Ave\"},\"dob\":{\"date\":\"1993-04-16\"},\"primaryName\":{\"entityType\":\"PERSON\",\"language\":\"eng\",\"languageOfOrigin\":\"eng\",\"script\":\"Latn\",\"text\":\"Ethan R\"}},\"right\":{\"dob\":\"1993-04-16\",\"primaryName\":{\"text\":\"Seth R\"}},\"score\":0.87},{\"error\":\"Field foo not found in field mapping\",\"left\":{\"addr\":{\"address\":\"123 Roadlane Ave\"},\"dob\":{\"date\":\"1993-04-16\"},\"primaryName\":{\"entityType\":\"PERSON\",\"language\":\"eng\",\"languageOfOrigin\":\"eng\",\"script\":\"Latn\",\"text\":\"Ethan R\"}},\"right\":{\"dob\":\"1993-04-16\",\"primaryName\":{\"text\":\"Seth R\"}}}]}";
42+
private static final String EXPECTED_JSON = "{\"fields\":{\"addr\":{\"type\":\"rni_address\",\"weight\":0.3},\"dob\":{\"type\":\"rni_date\",\"weight\":0.2},\"primaryName\":{\"type\":\"rni_name\",\"weight\":0.5}},\"info\":[\"Field threshold not found in properties! Defaulting to 0.0\",\"Field weight not found in fields! Defaulting to 1.0 for all entries\"],\"results\":[{\"explainInfo\":{\"leftOnlyFields\":[\"addr\"],\"scoredFields\":{\"dob\":{\"calculatedWeight\":0.2857142857142857,\"finalScore\":0.74,\"rawScore\":0.8,\"weight\":0.5},\"primaryName\":{\"calculatedWeight\":0.7142857142857143,\"details\":\"any details\",\"finalScore\":0.85,\"rawScore\":0.99,\"weight\":0.5}}},\"left\":{\"addr\":{\"address\":\"123 Roadlane Ave\"},\"dob\":{\"date\":\"1993-04-16\"},\"primaryName\":{\"entityType\":\"PERSON\",\"language\":\"eng\",\"languageOfOrigin\":\"eng\",\"script\":\"Latn\",\"text\":\"Ethan R\"}},\"right\":{\"dob\":\"1993-04-16\",\"primaryName\":{\"text\":\"Seth R\"}},\"score\":0.87},{\"error\":\"Field foo not found in field mapping\",\"info\":[\"Some info message\",\"Some other info message\"],\"left\":{\"addr\":{\"address\":\"123 Roadlane Ave\"},\"dob\":{\"date\":\"1993-04-16\"},\"primaryName\":{\"entityType\":\"PERSON\",\"language\":\"eng\",\"languageOfOrigin\":\"eng\",\"script\":\"Latn\",\"text\":\"Ethan R\"}},\"right\":{\"dob\":\"1993-04-16\",\"primaryName\":{\"text\":\"Seth R\"}}}]}";
4343

4444
private static final RecordSimilarityResponse EXPECTED_RESPONSE;
4545

@@ -120,7 +120,12 @@ public class RecordSimilarityResponseTest {
120120
.date("1993-04-16")
121121
.build()))
122122
.error("Field foo not found in field mapping")
123+
.info(List.of("Some info message", "Some other info message"))
123124
.build()))
125+
.info(List.of(
126+
"Field threshold not found in properties! Defaulting to 0.0",
127+
"Field weight not found in fields! Defaulting to 1.0 for all entries")
128+
)
124129
.build();
125130
} catch (JsonProcessingException e) {
126131
temp = RecordSimilarityResponse.builder().build();

0 commit comments

Comments
 (0)