Jackson deserialization for ReconCandidate

This commit is contained in:
Antonin Delpeuch 2018-10-21 16:37:51 +01:00
parent ccc8f6470e
commit 8758ed2cff
2 changed files with 15 additions and 27 deletions

View File

@ -37,12 +37,14 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Properties; import java.util.Properties;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken; import com.fasterxml.jackson.core.JsonToken;
import com.google.refine.expr.HasFields; import com.google.refine.expr.HasFields;
import com.google.refine.util.ParsingUtilities;
public class ReconCandidate implements HasFields { public class ReconCandidate implements HasFields {
@JsonProperty("id") @JsonProperty("id")
@ -54,10 +56,19 @@ public class ReconCandidate implements HasFields {
@JsonProperty("score") @JsonProperty("score")
final public double score; final public double score;
public ReconCandidate(String topicID, String topicName, String[] typeIDs, double score) { @JsonCreator
public ReconCandidate(
@JsonProperty("id")
String topicID,
@JsonProperty("name")
String topicName,
@JsonProperty("types")
String[] typeIDs,
@JsonProperty("score")
double score) {
this.id = topicID; this.id = topicID;
this.name = topicName; this.name = topicName;
this.types = typeIDs; this.types = typeIDs == null ? new String[0] : typeIDs;
this.score = score; this.score = score;
} }
@ -81,15 +92,10 @@ public class ReconCandidate implements HasFields {
} }
static public ReconCandidate loadStreaming(String s) throws Exception { static public ReconCandidate loadStreaming(String s) throws Exception {
JsonFactory jsonFactory = new JsonFactory(); return ParsingUtilities.mapper.readValue(s, ReconCandidate.class);
JsonParser jp = jsonFactory.createJsonParser(s);
if (jp.nextToken() != JsonToken.START_OBJECT) {
return null;
}
return loadStreaming(jp);
} }
@Deprecated
static public ReconCandidate loadStreaming(JsonParser jp) throws Exception { static public ReconCandidate loadStreaming(JsonParser jp) throws Exception {
JsonToken t = jp.getCurrentToken(); JsonToken t = jp.getCurrentToken();
if (t == JsonToken.VALUE_NULL || t != JsonToken.START_OBJECT) { if (t == JsonToken.VALUE_NULL || t != JsonToken.START_OBJECT) {

View File

@ -36,8 +36,6 @@ package com.google.refine.model.recon;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.json.JSONObject;
import com.google.refine.model.Cell; import com.google.refine.model.Cell;
import com.google.refine.model.Project; import com.google.refine.model.Project;
import com.google.refine.model.Recon; import com.google.refine.model.Recon;
@ -49,22 +47,6 @@ public class DataExtensionReconConfig extends StandardReconConfig {
private final static String WARN = "Not implemented"; private final static String WARN = "Not implemented";
static public ReconConfig reconstruct(JSONObject obj) throws Exception {
JSONObject type = obj.getJSONObject("type");
ReconType typ = null;
if(obj.has("id")) {
typ = new ReconType(obj.getString("id"),
obj.has("name") ? obj.getString("name") : obj.getString("id"));
}
return new DataExtensionReconConfig(
obj.getString("service"),
obj.has("identifierSpace") ? obj.getString("identifierSpace") : null,
obj.has("schemaSpace") ? obj.getString("schemaSpace") : null,
typ);
}
public DataExtensionReconConfig( public DataExtensionReconConfig(
String service, String service,
String identifierSpace, String identifierSpace,