I'm using Gson provided by google
git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/data-analysis/dataminer-invocation-model@176008 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
e28d0a4c94
commit
d95591219e
14
pom.xml
14
pom.xml
|
@ -80,9 +80,10 @@
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.glassfish</groupId>
|
<groupId>com.google.code.gson</groupId>
|
||||||
<artifactId>javax.json</artifactId>
|
<artifactId>gson</artifactId>
|
||||||
<version>1.1.2</version>
|
<version>2.8.5</version>
|
||||||
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@ -127,6 +128,13 @@
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-io</groupId>
|
||||||
|
<artifactId>commons-io</artifactId>
|
||||||
|
<version>2.6</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.gcube.data.analysis.dminvocation;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
|
import org.gcube.data.analysis.dminvocation.model.DataMinerInvocation;
|
||||||
|
|
||||||
|
import com.google.gson.annotations.SerializedName;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class DataMinerInvocationJSONWrapper.
|
||||||
|
* Used only to add the root name "dataminer-invocation" in the JSON
|
||||||
|
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
|
||||||
|
* Dec 19, 2018
|
||||||
|
*/
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@ToString
|
||||||
|
|
||||||
|
public class DataMinerInvocationJSONWrapper {
|
||||||
|
|
||||||
|
@SerializedName("dataminer-invocation")
|
||||||
|
private DataMinerInvocation dataminerInvocation;
|
||||||
|
}
|
|
@ -3,10 +3,15 @@
|
||||||
*/
|
*/
|
||||||
package org.gcube.data.analysis.dminvocation;
|
package org.gcube.data.analysis.dminvocation;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.Reader;
|
||||||
|
import java.nio.charset.Charset;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
import javax.xml.XMLConstants;
|
import javax.xml.XMLConstants;
|
||||||
import javax.xml.bind.JAXBContext;
|
import javax.xml.bind.JAXBContext;
|
||||||
|
@ -24,6 +29,10 @@ import org.eclipse.persistence.jaxb.JAXBContextProperties;
|
||||||
import org.gcube.data.analysis.dminvocation.model.DataMinerInvocation;
|
import org.gcube.data.analysis.dminvocation.model.DataMinerInvocation;
|
||||||
import org.xml.sax.SAXException;
|
import org.xml.sax.SAXException;
|
||||||
|
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.GsonBuilder;
|
||||||
|
import com.google.gson.JsonSyntaxException;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -78,70 +87,74 @@ public class DataMinerInvocationManager {
|
||||||
* Marshaling.
|
* Marshaling.
|
||||||
*
|
*
|
||||||
* @param dmInvocation the dm invocation
|
* @param dmInvocation the dm invocation
|
||||||
* @param mediaType the media type see at {@link MediaType}
|
|
||||||
* @param validateModel the validate model. If true performs model validation against the xml schema generated for {@link DataMinerInvocation}
|
* @param validateModel the validate model. If true performs model validation against the xml schema generated for {@link DataMinerInvocation}
|
||||||
* @return the byte array output stream
|
* @return the marshal XML
|
||||||
* @throws JAXBException the JAXB exception
|
* @throws JAXBException the JAXB exception
|
||||||
*/
|
*/
|
||||||
public ByteArrayOutputStream marshaling(DataMinerInvocation dmInvocation, MediaType mediaType, boolean validateModel) throws JAXBException
|
public String marshalingXML(DataMinerInvocation dmInvocation, boolean validateModel) throws JAXBException
|
||||||
{
|
{
|
||||||
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
|
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
|
||||||
|
|
||||||
|
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
|
||||||
if(validateModel)
|
if(validateModel)
|
||||||
jaxbMarshaller.setSchema(schema);
|
jaxbMarshaller.setSchema(schema);
|
||||||
|
|
||||||
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
|
jaxbMarshaller.setProperty(JAXBContextProperties.MEDIA_TYPE, MediaType.ApplicationXML.getMimeType());
|
||||||
|
|
||||||
if(mediaType==null)
|
|
||||||
mediaType = MediaType.ApplicationXML;
|
|
||||||
|
|
||||||
switch (mediaType) {
|
|
||||||
case ApplicationJSON:
|
|
||||||
jaxbMarshaller.setProperty(JAXBContextProperties.JSON_INCLUDE_ROOT, true);
|
|
||||||
jaxbMarshaller.setProperty(JAXBContextProperties.JSON_ATTRIBUTE_PREFIX, "@");
|
|
||||||
break;
|
|
||||||
case ApplicationXML:
|
|
||||||
default:
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
jaxbMarshaller.setProperty(JAXBContextProperties.MEDIA_TYPE, mediaType.getMimeType());
|
|
||||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
jaxbMarshaller.marshal(dmInvocation, baos);
|
jaxbMarshaller.marshal(dmInvocation, baos);
|
||||||
return baos;
|
return new String(baos.toByteArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unmarshaling.
|
* Marshaling json.
|
||||||
|
*
|
||||||
|
* @param dmInvocation the dm invocation
|
||||||
|
* @return the marshal JSON
|
||||||
|
* @throws JAXBException the JAXB exception
|
||||||
|
*/
|
||||||
|
public String marshalingJSON(DataMinerInvocation dmInvocation) throws JAXBException
|
||||||
|
{
|
||||||
|
Gson gson = new GsonBuilder().setPrettyPrinting().create();
|
||||||
|
DataMinerInvocationJSONWrapper wrapper = new DataMinerInvocationJSONWrapper(dmInvocation);
|
||||||
|
return gson.toJson(wrapper);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unmarshaling xml.
|
||||||
*
|
*
|
||||||
* @param dmInvocationIS the dm invocation input stream
|
* @param dmInvocationIS the dm invocation input stream
|
||||||
* @param mediaType the media type see at {@link MediaType}
|
|
||||||
* @param validateModel the validate model. If true performs model validation against the xml schema generated for {@link DataMinerInvocation}
|
* @param validateModel the validate model. If true performs model validation against the xml schema generated for {@link DataMinerInvocation}
|
||||||
* @return the data miner invocation
|
* @return the data miner invocation
|
||||||
* @throws JAXBException the JAXB exception
|
* @throws JAXBException the JAXB exception
|
||||||
|
* @throws IOException Signals that an I/O exception has occurred.
|
||||||
*/
|
*/
|
||||||
public DataMinerInvocation unmarshaling(InputStream dmInvocationIS, MediaType mediaType, boolean validateModel) throws JAXBException
|
public DataMinerInvocation unmarshalingXML(InputStream dmInvocationIS, boolean validateModel) throws JAXBException, IOException {
|
||||||
{
|
|
||||||
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
|
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
|
||||||
|
|
||||||
if(validateModel)
|
if(validateModel)
|
||||||
jaxbUnmarshaller.setSchema(schema);
|
jaxbUnmarshaller.setSchema(schema);
|
||||||
|
|
||||||
if(mediaType==null)
|
jaxbUnmarshaller.setProperty(JAXBContextProperties.MEDIA_TYPE, MediaType.ApplicationXML.getMimeType());
|
||||||
mediaType = MediaType.ApplicationXML;
|
|
||||||
|
|
||||||
switch (mediaType) {
|
|
||||||
case ApplicationJSON:
|
|
||||||
jaxbUnmarshaller.setProperty(JAXBContextProperties.JSON_INCLUDE_ROOT, true);
|
|
||||||
jaxbUnmarshaller.setProperty(JAXBContextProperties.JSON_ATTRIBUTE_PREFIX, "@");
|
|
||||||
break;
|
|
||||||
case ApplicationXML:
|
|
||||||
default:
|
|
||||||
|
|
||||||
}
|
|
||||||
jaxbUnmarshaller.setProperty(JAXBContextProperties.MEDIA_TYPE, mediaType.getMimeType());
|
|
||||||
return (DataMinerInvocation) jaxbUnmarshaller.unmarshal(dmInvocationIS);
|
return (DataMinerInvocation) jaxbUnmarshaller.unmarshal(dmInvocationIS);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unmarshaling json.
|
||||||
|
*
|
||||||
|
* @param dmInvocationIS the dm invocation is
|
||||||
|
* @return the data miner invocation
|
||||||
|
* @throws JsonSyntaxException the json syntax exception
|
||||||
|
* @throws IOException Signals that an I/O exception has occurred.
|
||||||
|
*/
|
||||||
|
public DataMinerInvocation unmarshalingJSON(InputStream dmInvocationIS) throws JsonSyntaxException, IOException {
|
||||||
|
String json = convertToString(dmInvocationIS);
|
||||||
|
Gson gson = new Gson();
|
||||||
|
DataMinerInvocationJSONWrapper wrapper = gson.fromJson(json, DataMinerInvocationJSONWrapper.class);
|
||||||
|
return wrapper.getDataminerInvocation();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -202,4 +215,24 @@ public class DataMinerInvocationManager {
|
||||||
return schemaOutputStream.toByteArray();
|
return schemaOutputStream.toByteArray();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert to string.
|
||||||
|
*
|
||||||
|
* @param inputStream the input stream
|
||||||
|
* @return the string
|
||||||
|
* @throws IOException Signals that an I/O exception has occurred.
|
||||||
|
*/
|
||||||
|
public String convertToString(InputStream inputStream)throws IOException {
|
||||||
|
|
||||||
|
StringBuilder textBuilder = new StringBuilder();
|
||||||
|
try (Reader reader = new BufferedReader(new InputStreamReader(inputStream, Charset.forName(StandardCharsets.UTF_8.name())))) {
|
||||||
|
int c = 0;
|
||||||
|
while ((c = reader.read()) != -1) {
|
||||||
|
textBuilder.append((char) c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return textBuilder.toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ public class DataMinerParamListAdaptor extends XmlAdapter<DataMinerParamList, Li
|
||||||
public List<DataMinerParam> unmarshal(DataMinerParamList list) throws Exception{
|
public List<DataMinerParam> unmarshal(DataMinerParamList list) throws Exception{
|
||||||
System.out.println("Unmarshal called: ");
|
System.out.println("Unmarshal called: ");
|
||||||
List<DataMinerParam> retVal = new ArrayList<DataMinerParam>();
|
List<DataMinerParam> retVal = new ArrayList<DataMinerParam>();
|
||||||
for (DataMinerParam dmp : list.getValues()){
|
for (DataMinerParam dmp : list.getListParam()){
|
||||||
System.out.println("key: "+dmp.getKey()+" value: "+ dmp.getValue());
|
System.out.println("key: "+dmp.getKey()+" value: "+ dmp.getValue());
|
||||||
retVal.add(new DataMinerParam(dmp.getKey(), dmp.getValue()));
|
retVal.add(new DataMinerParam(dmp.getKey(), dmp.getValue()));
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ public class DataMinerParamListAdaptor extends XmlAdapter<DataMinerParamList, Li
|
||||||
// System.out.println("key: "+dmp.getKey()+" value: "+ dmp.getValue());
|
// System.out.println("key: "+dmp.getKey()+" value: "+ dmp.getValue());
|
||||||
// values.add(new DataMinerParam(dmp.getKey(), dmp.getValue()));
|
// values.add(new DataMinerParam(dmp.getKey(), dmp.getValue()));
|
||||||
// }
|
// }
|
||||||
retVal.setValues(list);
|
retVal.setListParam(list);
|
||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,51 +0,0 @@
|
||||||
///**
|
|
||||||
// *
|
|
||||||
// */
|
|
||||||
//package org.gcube.data.analysis.dminvocation;
|
|
||||||
//
|
|
||||||
//import java.util.HashMap;
|
|
||||||
//import java.util.Map;
|
|
||||||
//
|
|
||||||
//import javax.xml.bind.annotation.adapters.XmlAdapter;
|
|
||||||
//
|
|
||||||
//import org.gcube.data.analysis.dminvocation.model.DataMinerParam;
|
|
||||||
//import org.gcube.data.analysis.dminvocation.model.DataMinerParamList;
|
|
||||||
//
|
|
||||||
//
|
|
||||||
///**
|
|
||||||
// * The Class MapAdaptor.
|
|
||||||
// *
|
|
||||||
// * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
|
|
||||||
// * Dec 18, 2018
|
|
||||||
// */
|
|
||||||
//public class MapAdaptor extends XmlAdapter<DataMinerParamList, Map<String, String>>
|
|
||||||
//{
|
|
||||||
//
|
|
||||||
// /* (non-Javadoc)
|
|
||||||
// * @see javax.xml.bind.annotation.adapters.XmlAdapter#unmarshal(java.lang.Object)
|
|
||||||
// */
|
|
||||||
// @Override
|
|
||||||
// public Map<String, String> unmarshal(DataMinerParamList list) throws Exception{
|
|
||||||
// System.out.println("Unmarshal called: ");
|
|
||||||
// Map<String, String> retVal = new HashMap<String, String>();
|
|
||||||
// for (DataMinerParam keyValue : list.getValues()){
|
|
||||||
// System.out.println("key: "+keyValue.getKey()+" value: "+ keyValue.getValue());
|
|
||||||
// retVal.put(keyValue.getKey(), keyValue.getValue());
|
|
||||||
// }
|
|
||||||
// return retVal;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// /* (non-Javadoc)
|
|
||||||
// * @see javax.xml.bind.annotation.adapters.XmlAdapter#marshal(java.lang.Object)
|
|
||||||
// */
|
|
||||||
// @Override
|
|
||||||
// public DataMinerParamList marshal(Map<String, String> map) throws Exception{
|
|
||||||
// System.out.println("Marshal called: ");
|
|
||||||
// DataMinerParamList retVal = new DataMinerParamList();
|
|
||||||
// for (String key : map.keySet()){
|
|
||||||
// System.out.println("key: "+key+" value: "+ map.get(key));
|
|
||||||
// retVal.getValues().add(new DataMinerParam(key, map.get(key)));
|
|
||||||
// }
|
|
||||||
// return retVal;
|
|
||||||
// }
|
|
||||||
//}
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,51 +0,0 @@
|
||||||
///**
|
|
||||||
// *
|
|
||||||
// */
|
|
||||||
//package org.gcube.data.analysis.dminvocation.model;
|
|
||||||
//
|
|
||||||
//import java.io.Serializable;
|
|
||||||
//import java.util.List;
|
|
||||||
//
|
|
||||||
//import javax.xml.bind.annotation.XmlAccessType;
|
|
||||||
//import javax.xml.bind.annotation.XmlAccessorType;
|
|
||||||
//import javax.xml.bind.annotation.XmlElement;
|
|
||||||
//import javax.xml.bind.annotation.XmlRootElement;
|
|
||||||
//
|
|
||||||
//import lombok.AllArgsConstructor;
|
|
||||||
//import lombok.Getter;
|
|
||||||
//import lombok.NoArgsConstructor;
|
|
||||||
//import lombok.Setter;
|
|
||||||
//import lombok.ToString;
|
|
||||||
//
|
|
||||||
//import com.fasterxml.jackson.annotation.JsonProperty;
|
|
||||||
//
|
|
||||||
//
|
|
||||||
///**
|
|
||||||
// * The Class DataMinerInputParams.
|
|
||||||
// *
|
|
||||||
// * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
|
|
||||||
// * Dec 4, 2018
|
|
||||||
// */
|
|
||||||
//@XmlRootElement(name = "dataminer-inputparams")
|
|
||||||
//@XmlAccessorType (XmlAccessType.FIELD)
|
|
||||||
////@JsonIgnoreProperties(ignoreUnknown=true)
|
|
||||||
//@NoArgsConstructor
|
|
||||||
//@AllArgsConstructor
|
|
||||||
//@Getter
|
|
||||||
//@Setter
|
|
||||||
//@ToString
|
|
||||||
//public class DataMinerInputParams implements Serializable{
|
|
||||||
//
|
|
||||||
// /**
|
|
||||||
// *
|
|
||||||
// */
|
|
||||||
// private static final long serialVersionUID = -7241629940190729604L;
|
|
||||||
//
|
|
||||||
// @XmlElement(name = "param", required=true, nillable=false)
|
|
||||||
// @JsonProperty(value="param", required=true)
|
|
||||||
// private List<DataMinerParam> listParam;
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//}
|
|
|
@ -18,9 +18,8 @@ import lombok.ToString;
|
||||||
|
|
||||||
import org.gcube.data.analysis.dminvocation.ActionType;
|
import org.gcube.data.analysis.dminvocation.ActionType;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import com.fasterxml.jackson.annotation.JsonRootName;
|
import com.google.gson.annotations.SerializedName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Class DataMinerInvocation.
|
* The Class DataMinerInvocation.
|
||||||
|
@ -29,9 +28,7 @@ import com.fasterxml.jackson.annotation.JsonRootName;
|
||||||
* Dec 4, 2018
|
* Dec 4, 2018
|
||||||
*/
|
*/
|
||||||
@XmlRootElement(name = "dataminer-invocation")
|
@XmlRootElement(name = "dataminer-invocation")
|
||||||
@JsonRootName(value = "dataminer-invocation")
|
|
||||||
@XmlAccessorType (XmlAccessType.FIELD)
|
@XmlAccessorType (XmlAccessType.FIELD)
|
||||||
@JsonIgnoreProperties(ignoreUnknown=true)
|
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Getter
|
@Getter
|
||||||
|
@ -46,15 +43,17 @@ public class DataMinerInvocation implements Serializable{
|
||||||
|
|
||||||
|
|
||||||
@XmlElement(name = "operator-id", required=true, nillable=false)
|
@XmlElement(name = "operator-id", required=true, nillable=false)
|
||||||
@JsonProperty(value="operator-id", required=true)
|
@JsonProperty(required = true)
|
||||||
|
@SerializedName(value="operator-id")
|
||||||
private String operatorId;
|
private String operatorId;
|
||||||
|
|
||||||
@XmlElement(name = "action", required=true, nillable=false)
|
@XmlElement(name = "action", required=true, nillable=false)
|
||||||
@JsonProperty(value="action", required=true)
|
@JsonProperty(required = true)
|
||||||
|
@SerializedName(value="action")
|
||||||
private ActionType actionType = ActionType.RUN;
|
private ActionType actionType = ActionType.RUN;
|
||||||
|
|
||||||
@XmlElement(name = "parameters", required=false, nillable=false)
|
@XmlElement(name = "parameters", required=false, nillable=false)
|
||||||
@JsonProperty(required=false)
|
@JsonProperty(required = false)
|
||||||
|
@SerializedName(value="parameters")
|
||||||
private DataMinerParameters parameters;
|
private DataMinerParameters parameters;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,48 +0,0 @@
|
||||||
///**
|
|
||||||
// *
|
|
||||||
// */
|
|
||||||
//package org.gcube.data.analysis.dminvocation.model;
|
|
||||||
//
|
|
||||||
//import java.io.Serializable;
|
|
||||||
//import java.util.List;
|
|
||||||
//
|
|
||||||
//import javax.xml.bind.annotation.XmlAccessType;
|
|
||||||
//import javax.xml.bind.annotation.XmlAccessorType;
|
|
||||||
//import javax.xml.bind.annotation.XmlElement;
|
|
||||||
//import javax.xml.bind.annotation.XmlRootElement;
|
|
||||||
//
|
|
||||||
//import lombok.AllArgsConstructor;
|
|
||||||
//import lombok.Getter;
|
|
||||||
//import lombok.NoArgsConstructor;
|
|
||||||
//import lombok.Setter;
|
|
||||||
//import lombok.ToString;
|
|
||||||
//
|
|
||||||
//import com.fasterxml.jackson.annotation.JsonProperty;
|
|
||||||
//
|
|
||||||
//
|
|
||||||
///**
|
|
||||||
// * The Class DataMinerOutputParams.
|
|
||||||
// *
|
|
||||||
// * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
|
|
||||||
// * Dec 4, 2018
|
|
||||||
// */
|
|
||||||
//@XmlRootElement(name = "dataminer-outputparams")
|
|
||||||
//@XmlAccessorType (XmlAccessType.FIELD)
|
|
||||||
////@JsonIgnoreProperties(ignoreUnknown=true)
|
|
||||||
//@NoArgsConstructor
|
|
||||||
//@AllArgsConstructor
|
|
||||||
//@Getter
|
|
||||||
//@Setter
|
|
||||||
//@ToString
|
|
||||||
//public class DataMinerOutputParams implements Serializable{
|
|
||||||
//
|
|
||||||
// /**
|
|
||||||
// *
|
|
||||||
// */
|
|
||||||
// private static final long serialVersionUID = -683773454747370184L;
|
|
||||||
//
|
|
||||||
// @XmlElement(name = "param", required=false, nillable=false)
|
|
||||||
// @JsonProperty(value="param", required=true)
|
|
||||||
// private List<DataMinerParam> params;
|
|
||||||
//
|
|
||||||
//}
|
|
|
@ -4,6 +4,7 @@
|
||||||
package org.gcube.data.analysis.dminvocation.model;
|
package org.gcube.data.analysis.dminvocation.model;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlAccessType;
|
import javax.xml.bind.annotation.XmlAccessType;
|
||||||
|
@ -17,8 +18,8 @@ import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import com.google.gson.annotations.SerializedName;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -29,7 +30,6 @@ import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
*/
|
*/
|
||||||
@XmlAccessorType (XmlAccessType.FIELD)
|
@XmlAccessorType (XmlAccessType.FIELD)
|
||||||
@XmlRootElement(name = "dataminer-param-list")
|
@XmlRootElement(name = "dataminer-param-list")
|
||||||
@JsonIgnoreProperties(ignoreUnknown=true)
|
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Getter
|
@Getter
|
||||||
|
@ -43,6 +43,7 @@ public class DataMinerParamList implements Serializable{
|
||||||
private static final long serialVersionUID = 623106816934429133L;
|
private static final long serialVersionUID = 623106816934429133L;
|
||||||
|
|
||||||
@XmlElement(name = "param", required=true, nillable=false)
|
@XmlElement(name = "param", required=true, nillable=false)
|
||||||
@JsonProperty(value="param", required=true)
|
@JsonProperty(required = true)
|
||||||
private List<DataMinerParam> values;
|
@SerializedName(value="param")
|
||||||
|
private List<DataMinerParam> listParam = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.gcube.data.analysis.dminvocation.model;
|
package org.gcube.data.analysis.dminvocation.model;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
@ -18,8 +19,7 @@ import lombok.ToString;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import com.google.gson.annotations.SerializedName;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Class DataMinerParameters.
|
* The Class DataMinerParameters.
|
||||||
|
@ -28,23 +28,23 @@ import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
* Dec 4, 2018
|
* Dec 4, 2018
|
||||||
*/
|
*/
|
||||||
@XmlRootElement(name = "dataminer-parameters")
|
@XmlRootElement(name = "dataminer-parameters")
|
||||||
@XmlAccessorType (XmlAccessType.FIELD)
|
@XmlAccessorType(XmlAccessType.FIELD)
|
||||||
@JsonIgnoreProperties(ignoreUnknown=true)
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
@ToString
|
@ToString
|
||||||
public class DataMinerParameters implements Serializable{
|
public class DataMinerParameters implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 8298755690515099551L;
|
private static final long serialVersionUID = 8298755690515099551L;
|
||||||
@XmlElement(name = "input", required=true, nillable=false)
|
@XmlElement(name = "input", required = true, nillable = false)
|
||||||
@JsonProperty(required=true)
|
@JsonProperty(required = true)
|
||||||
//@XmlJavaTypeAdapter(value = DataMinerParamListAdaptor.class)
|
@SerializedName(value = "input")
|
||||||
private DataMinerParamList input;
|
private DataMinerParamList input;
|
||||||
|
|
||||||
@XmlElement(name = "output", required=false, nillable=false)
|
@XmlElement(name = "output", required = false, nillable = false)
|
||||||
@JsonProperty(required=false)
|
@JsonProperty(required = false)
|
||||||
|
@SerializedName(value = "output")
|
||||||
private DataMinerParamList output;
|
private DataMinerParamList output;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@ -14,8 +13,10 @@ import java.util.Map;
|
||||||
|
|
||||||
import javax.xml.bind.JAXBException;
|
import javax.xml.bind.JAXBException;
|
||||||
|
|
||||||
|
import org.apache.commons.io.IOUtils;
|
||||||
|
import org.eclipse.persistence.jaxb.JAXBContext;
|
||||||
|
import org.gcube.data.analysis.dminvocation.DataMinerInvocationJSONWrapper;
|
||||||
import org.gcube.data.analysis.dminvocation.DataMinerInvocationManager;
|
import org.gcube.data.analysis.dminvocation.DataMinerInvocationManager;
|
||||||
import org.gcube.data.analysis.dminvocation.MediaType;
|
|
||||||
import org.gcube.data.analysis.dminvocation.model.DataMinerInvocation;
|
import org.gcube.data.analysis.dminvocation.model.DataMinerInvocation;
|
||||||
import org.gcube.data.analysis.dminvocation.model.DataMinerParam;
|
import org.gcube.data.analysis.dminvocation.model.DataMinerParam;
|
||||||
import org.gcube.data.analysis.dminvocation.model.DataMinerParamList;
|
import org.gcube.data.analysis.dminvocation.model.DataMinerParamList;
|
||||||
|
@ -24,6 +25,9 @@ import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.xml.sax.SAXException;
|
import org.xml.sax.SAXException;
|
||||||
|
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.GsonBuilder;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -47,9 +51,9 @@ public class DataMinerInvocationTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
//@Test
|
||||||
public void marshallingTest() throws JAXBException, IOException, SAXException {
|
public void marshallingTest() throws JAXBException, IOException, SAXException {
|
||||||
System.out.println(DataMinerInvocationTest.class.getMethods()[0].getName()+" called");
|
System.out.println("marshallingTest called");
|
||||||
//LOADING PARAMETERS
|
//LOADING PARAMETERS
|
||||||
List<DataMinerParam> inParams = new ArrayList<DataMinerParam>();
|
List<DataMinerParam> inParams = new ArrayList<DataMinerParam>();
|
||||||
for (String pm : parameters.keySet()) {
|
for (String pm : parameters.keySet()) {
|
||||||
|
@ -71,40 +75,44 @@ public class DataMinerInvocationTest {
|
||||||
// ByteArrayOutputStream outStreamJSON = DataMinerInvocationManager.marshaling(dmInvocation, MediaType.ApplicationJSON);
|
// ByteArrayOutputStream outStreamJSON = DataMinerInvocationManager.marshaling(dmInvocation, MediaType.ApplicationJSON);
|
||||||
// System.out.println(new String(outStreamJSON.toByteArray()));
|
// System.out.println(new String(outStreamJSON.toByteArray()));
|
||||||
|
|
||||||
ByteArrayOutputStream outStreamXML = dmMng.marshaling(dmInvocation, MediaType.ApplicationXML, true);
|
String marshXML = dmMng.marshalingXML(dmInvocation, true);
|
||||||
System.out.println(new String(outStreamXML.toByteArray()));
|
System.out.println(marshXML);
|
||||||
|
|
||||||
|
|
||||||
ByteArrayOutputStream outStreamJSON = dmMng.marshaling(dmInvocation, MediaType.ApplicationJSON, true);
|
String marshJSON = dmMng.marshalingJSON(dmInvocation);
|
||||||
System.out.println(new String(outStreamJSON.toByteArray()));
|
System.out.println(marshJSON);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void unmarshallingXMLTest() throws JAXBException, IOException, SAXException{
|
public void unmarshallingXMLTest() throws JAXBException, IOException, SAXException{
|
||||||
System.out.println(DataMinerInvocationTest.class.getMethods()[1].getName()+" called");
|
System.out.println("unmarshallingXMLTest called");
|
||||||
FileInputStream dmInvocationXMLFile = new FileInputStream(new File("./src/test/resources/DataMinerInvocation.xml"));
|
FileInputStream dmInvocationXMLFile = new FileInputStream(new File("./src/test/resources/DataMinerInvocation.xml"));
|
||||||
|
|
||||||
DataMinerInvocation dmInvocation = dmMng.unmarshaling(dmInvocationXMLFile, MediaType.ApplicationXML, true);
|
DataMinerInvocation dmInvocation = dmMng.unmarshalingXML(dmInvocationXMLFile, true);
|
||||||
System.out.println(dmInvocation);
|
System.out.println(dmInvocation);
|
||||||
|
|
||||||
ByteArrayOutputStream outStreamJSON = dmMng.marshaling(dmInvocation, MediaType.ApplicationXML, true);
|
String marshXML = dmMng.marshalingXML(dmInvocation, true);
|
||||||
System.out.println(new String(outStreamJSON.toByteArray()));
|
System.out.println(marshXML);
|
||||||
//
|
//
|
||||||
outStreamJSON = dmMng.marshaling(dmInvocation, MediaType.ApplicationJSON, true);
|
String marshJSON = dmMng.marshalingJSON(dmInvocation);
|
||||||
System.out.println(new String(outStreamJSON.toByteArray()));
|
System.out.println(marshJSON);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
//@Test
|
||||||
public void unmarshallingJSONTest() throws JAXBException, IOException, SAXException{
|
public void unmarshallingJSONTest() throws JAXBException, IOException, SAXException{
|
||||||
System.out.println(DataMinerInvocationTest.class.getMethods()[2].getName()+" called");
|
System.out.println("unmarshallingJSONTest called");
|
||||||
FileInputStream dmInvocationJSONFile = new FileInputStream(new File("./src/test/resources/DataMinerInvocation.json"));
|
FileInputStream dmInvocationJSONFile = new FileInputStream(new File("./src/test/resources/DataMinerInvocation.json"));
|
||||||
DataMinerInvocation dmInvocation = dmMng.unmarshaling(dmInvocationJSONFile, MediaType.ApplicationJSON, true);
|
|
||||||
System.out.println(dmInvocation);
|
|
||||||
|
|
||||||
ByteArrayOutputStream outStreamXML = dmMng.marshaling(dmInvocation, MediaType.ApplicationXML, true);
|
System.out.println("To String is: \n"+IOUtils.toString(dmInvocationJSONFile));
|
||||||
System.out.println(new String(outStreamXML.toByteArray()));
|
|
||||||
|
// dmInvocationJSONFile = new FileInputStream(new File("./src/test/resources/DataMinerInvocation.json"));
|
||||||
|
// DataMinerInvocation dmInvocation = dmMng.unmarshaling(dmInvocationJSONFile, MediaType.ApplicationJSON, false);
|
||||||
|
// System.out.println(dmInvocation);
|
||||||
|
//
|
||||||
|
// ByteArrayOutputStream outStreamXML = dmMng.marshaling(dmInvocation, MediaType.ApplicationXML, true);
|
||||||
|
// System.out.println(new String(outStreamXML.toByteArray()));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,4 +129,46 @@ public class DataMinerInvocationTest {
|
||||||
// ByteArrayOutputStream outStreamXML = dmMng.marshaling(dmInvocation, MediaType.ApplicationXML, true);
|
// ByteArrayOutputStream outStreamXML = dmMng.marshaling(dmInvocation, MediaType.ApplicationXML, true);
|
||||||
// System.out.println(new String(outStreamXML.toByteArray()));
|
// System.out.println(new String(outStreamXML.toByteArray()));
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
try{
|
||||||
|
System.out.println(JAXBContext.newInstance(DataMinerInvocation.class).getClass());
|
||||||
|
|
||||||
|
parameters.put("fileId", "http://publicLinkToFile");
|
||||||
|
parameters.put("[key2]", "[value2]");
|
||||||
|
dmMng = DataMinerInvocationManager.getInstance();
|
||||||
|
|
||||||
|
System.out.println("unmarshallingJSONTest called");
|
||||||
|
FileInputStream dmInvocationJSONFile = new FileInputStream(new File("./src/test/resources/DataMinerInvocation.json"));
|
||||||
|
|
||||||
|
DataMinerInvocation datatminerInvocation = dmMng.unmarshalingJSON(dmInvocationJSONFile);
|
||||||
|
System.out.println("To String is: \n"+datatminerInvocation.toString());
|
||||||
|
|
||||||
|
// String builder = new GsonBuilder().create().t
|
||||||
|
|
||||||
|
//System.out.println(gson.fromJson(json, DataMinerInvocationWrapper.class));
|
||||||
|
Gson gson = new GsonBuilder().setPrettyPrinting().create();
|
||||||
|
DataMinerInvocationJSONWrapper wrapper = new DataMinerInvocationJSONWrapper(datatminerInvocation);
|
||||||
|
System.out.println(gson.toJson(wrapper));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Gson gson = new Gson();
|
||||||
|
// JsonElement je = gson.toJsonTree(new DataMinerInvocation());
|
||||||
|
// JsonObject jo = new JsonObject();
|
||||||
|
// jo.add("dataminer-invocation", je);
|
||||||
|
// System.out.println(jo.toString());
|
||||||
|
|
||||||
|
|
||||||
|
// ByteArrayOutputStream outStreamXML = dmMng.marshaling(dmInvocation, MediaType.ApplicationXML, true);
|
||||||
|
// System.out.println(new String(outStreamXML.toByteArray()));
|
||||||
|
}catch(Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,17 +1,19 @@
|
||||||
{
|
{
|
||||||
"dataminer-invocation" : {
|
"dataminer-invocation": {
|
||||||
"operator-id" : "[THE_OPERATOR_ID]",
|
"operator-id": "[THE_OPERATOR_ID]",
|
||||||
"action" : "RUN",
|
"action": "RUN",
|
||||||
"parameters" : {
|
"parameters": {
|
||||||
"input" : {
|
"input": {
|
||||||
"param" : {
|
"param": [
|
||||||
"key" : "[key2]",
|
{
|
||||||
"value" : "[value2]"
|
"key": "[key2]",
|
||||||
|
"value": "[value2]"
|
||||||
},
|
},
|
||||||
"param" : {
|
{
|
||||||
"key" : "fileId",
|
"key": "fileId",
|
||||||
"value" : "http://publicLinkToFile22222"
|
"value": "http://publicLinkToFile"
|
||||||
}
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue