50 lines
1.3 KiB
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);
|
|
}
|
|
}
|