dataminer-invocation-model/src/main/java/org/gcube/data/analysis/dminvocation/MyDeserializer.java

50 lines
1.3 KiB
Java

/**
*
*/
package org.gcube.data.analysis.dminvocation;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import org.gcube.data.analysis.dminvocation.model.DataMinerInvocation;
import com.google.gson.Gson;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
/**
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Dec 19, 2018
*/
public class MyDeserializer implements JsonDeserializer<DataMinerInvocation> {
List<String> requiredFields = new ArrayList<String>();
void registerRequiredField(String fieldName) {
requiredFields.add(fieldName);
}
/* (non-Javadoc)
* @see com.google.gson.JsonDeserializer#deserialize(com.google.gson.JsonElement, java.lang.reflect.Type, com.google.gson.JsonDeserializationContext)
*/
@Override
public DataMinerInvocation deserialize(
JsonElement json, Type arg1, JsonDeserializationContext arg2)
throws JsonParseException {
JsonObject jsonObject = (JsonObject) json;
for (String fieldName : requiredFields) {
if (jsonObject.get(fieldName) == null) {
throw new JsonParseException("Required Field Not Found: " +
fieldName);
}
}
return new Gson().fromJson(json, DataMinerInvocation.class);
}
}