diff --git a/pom.xml b/pom.xml
index a9566ce..cead38a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -80,9 +80,10 @@
- org.glassfish
- javax.json
- 1.1.2
+ com.google.code.gson
+ gson
+ 2.8.5
+ compile
@@ -127,6 +128,13 @@
test
+
+ commons-io
+ commons-io
+ 2.6
+ test
+
+
diff --git a/src/main/java/org/gcube/data/analysis/dminvocation/DataMinerInvocationJSONWrapper.java b/src/main/java/org/gcube/data/analysis/dminvocation/DataMinerInvocationJSONWrapper.java
new file mode 100644
index 0000000..93048d7
--- /dev/null
+++ b/src/main/java/org/gcube/data/analysis/dminvocation/DataMinerInvocationJSONWrapper.java
@@ -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;
+}
diff --git a/src/main/java/org/gcube/data/analysis/dminvocation/DataMinerInvocationManager.java b/src/main/java/org/gcube/data/analysis/dminvocation/DataMinerInvocationManager.java
index b0b02a1..72063ca 100644
--- a/src/main/java/org/gcube/data/analysis/dminvocation/DataMinerInvocationManager.java
+++ b/src/main/java/org/gcube/data/analysis/dminvocation/DataMinerInvocationManager.java
@@ -3,10 +3,15 @@
*/
package org.gcube.data.analysis.dminvocation;
+import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
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.bind.JAXBContext;
@@ -24,6 +29,10 @@ import org.eclipse.persistence.jaxb.JAXBContextProperties;
import org.gcube.data.analysis.dminvocation.model.DataMinerInvocation;
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.
*
* @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}
- * @return the byte array output stream
+ * @return the marshal XML
* @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();
+ jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
if(validateModel)
jaxbMarshaller.setSchema(schema);
- jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
-
- 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());
+ jaxbMarshaller.setProperty(JAXBContextProperties.MEDIA_TYPE, MediaType.ApplicationXML.getMimeType());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
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 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}
* @return the data miner invocation
* @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();
if(validateModel)
jaxbUnmarshaller.setSchema(schema);
- if(mediaType==null)
- 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());
+ jaxbUnmarshaller.setProperty(JAXBContextProperties.MEDIA_TYPE, MediaType.ApplicationXML.getMimeType());
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();
}
}
+
+
+ /**
+ * 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();
+ }
}
diff --git a/src/main/java/org/gcube/data/analysis/dminvocation/DataMinerParamListAdaptor.java b/src/main/java/org/gcube/data/analysis/dminvocation/DataMinerParamListAdaptor.java
index 63da96f..633752c 100644
--- a/src/main/java/org/gcube/data/analysis/dminvocation/DataMinerParamListAdaptor.java
+++ b/src/main/java/org/gcube/data/analysis/dminvocation/DataMinerParamListAdaptor.java
@@ -28,7 +28,7 @@ public class DataMinerParamListAdaptor extends XmlAdapter unmarshal(DataMinerParamList list) throws Exception{
System.out.println("Unmarshal called: ");
List retVal = new ArrayList();
- for (DataMinerParam dmp : list.getValues()){
+ for (DataMinerParam dmp : list.getListParam()){
System.out.println("key: "+dmp.getKey()+" value: "+ dmp.getValue());
retVal.add(new DataMinerParam(dmp.getKey(), dmp.getValue()));
}
@@ -48,7 +48,7 @@ public class DataMinerParamListAdaptor extends XmlAdapter>
-//{
-//
-// /* (non-Javadoc)
-// * @see javax.xml.bind.annotation.adapters.XmlAdapter#unmarshal(java.lang.Object)
-// */
-// @Override
-// public Map unmarshal(DataMinerParamList list) throws Exception{
-// System.out.println("Unmarshal called: ");
-// Map retVal = new HashMap();
-// 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 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;
-// }
-//}
\ No newline at end of file
diff --git a/src/main/java/org/gcube/data/analysis/dminvocation/MyDeserializer.java b/src/main/java/org/gcube/data/analysis/dminvocation/MyDeserializer.java
new file mode 100644
index 0000000..d803e72
--- /dev/null
+++ b/src/main/java/org/gcube/data/analysis/dminvocation/MyDeserializer.java
@@ -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 {
+
+ List requiredFields = new ArrayList();
+
+ 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);
+ }
+}
diff --git a/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerInputParams.java b/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerInputParams.java
deleted file mode 100644
index 842680a..0000000
--- a/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerInputParams.java
+++ /dev/null
@@ -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 listParam;
-//
-//
-//
-//
-//}
diff --git a/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerInvocation.java b/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerInvocation.java
index 56f5048..30d3a51 100644
--- a/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerInvocation.java
+++ b/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerInvocation.java
@@ -18,9 +18,8 @@ import lombok.ToString;
import org.gcube.data.analysis.dminvocation.ActionType;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonRootName;
+import com.google.gson.annotations.SerializedName;
/**
* The Class DataMinerInvocation.
@@ -29,9 +28,7 @@ import com.fasterxml.jackson.annotation.JsonRootName;
* Dec 4, 2018
*/
@XmlRootElement(name = "dataminer-invocation")
-@JsonRootName(value = "dataminer-invocation")
@XmlAccessorType (XmlAccessType.FIELD)
-@JsonIgnoreProperties(ignoreUnknown=true)
@NoArgsConstructor
@AllArgsConstructor
@Getter
@@ -46,15 +43,17 @@ public class DataMinerInvocation implements Serializable{
@XmlElement(name = "operator-id", required=true, nillable=false)
- @JsonProperty(value="operator-id", required=true)
+ @JsonProperty(required = true)
+ @SerializedName(value="operator-id")
private String operatorId;
@XmlElement(name = "action", required=true, nillable=false)
- @JsonProperty(value="action", required=true)
+ @JsonProperty(required = true)
+ @SerializedName(value="action")
private ActionType actionType = ActionType.RUN;
@XmlElement(name = "parameters", required=false, nillable=false)
- @JsonProperty(required=false)
+ @JsonProperty(required = false)
+ @SerializedName(value="parameters")
private DataMinerParameters parameters;
-
}
diff --git a/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerOutputParams.java b/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerOutputParams.java
deleted file mode 100644
index 55b959e..0000000
--- a/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerOutputParams.java
+++ /dev/null
@@ -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 params;
-//
-//}
diff --git a/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerParamList.java b/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerParamList.java
index 338c05d..02ae697 100644
--- a/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerParamList.java
+++ b/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerParamList.java
@@ -4,6 +4,7 @@
package org.gcube.data.analysis.dminvocation.model;
import java.io.Serializable;
+import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
@@ -17,8 +18,8 @@ import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
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)
@XmlRootElement(name = "dataminer-param-list")
-@JsonIgnoreProperties(ignoreUnknown=true)
@NoArgsConstructor
@AllArgsConstructor
@Getter
@@ -43,6 +43,7 @@ public class DataMinerParamList implements Serializable{
private static final long serialVersionUID = 623106816934429133L;
@XmlElement(name = "param", required=true, nillable=false)
- @JsonProperty(value="param", required=true)
- private List values;
+ @JsonProperty(required = true)
+ @SerializedName(value="param")
+ private List listParam = new ArrayList<>();
}
diff --git a/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerParameters.java b/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerParameters.java
index fb40cf4..0350b0b 100644
--- a/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerParameters.java
+++ b/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerParameters.java
@@ -1,6 +1,7 @@
/**
*
*/
+
package org.gcube.data.analysis.dminvocation.model;
import java.io.Serializable;
@@ -18,33 +19,32 @@ import lombok.ToString;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
-
-
+import com.google.gson.annotations.SerializedName;
/**
* The Class DataMinerParameters.
*
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
- * Dec 4, 2018
+ * Dec 4, 2018
*/
@XmlRootElement(name = "dataminer-parameters")
-@XmlAccessorType (XmlAccessType.FIELD)
-@JsonIgnoreProperties(ignoreUnknown=true)
+@XmlAccessorType(XmlAccessType.FIELD)
+@JsonIgnoreProperties(ignoreUnknown = true)
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@ToString
-public class DataMinerParameters implements Serializable{
+public class DataMinerParameters implements Serializable {
private static final long serialVersionUID = 8298755690515099551L;
- @XmlElement(name = "input", required=true, nillable=false)
- @JsonProperty(required=true)
- //@XmlJavaTypeAdapter(value = DataMinerParamListAdaptor.class)
+ @XmlElement(name = "input", required = true, nillable = false)
+ @JsonProperty(required = true)
+ @SerializedName(value = "input")
private DataMinerParamList input;
- @XmlElement(name = "output", required=false, nillable=false)
- @JsonProperty(required=false)
+ @XmlElement(name = "output", required = false, nillable = false)
+ @JsonProperty(required = false)
+ @SerializedName(value = "output")
private DataMinerParamList output;
-
}
diff --git a/src/test/java/DataMinerInvocationTest.java b/src/test/java/DataMinerInvocationTest.java
index 099229d..adc34c5 100644
--- a/src/test/java/DataMinerInvocationTest.java
+++ b/src/test/java/DataMinerInvocationTest.java
@@ -3,7 +3,6 @@
*/
-import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@@ -14,8 +13,10 @@ import java.util.Map;
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.MediaType;
import org.gcube.data.analysis.dminvocation.model.DataMinerInvocation;
import org.gcube.data.analysis.dminvocation.model.DataMinerParam;
import org.gcube.data.analysis.dminvocation.model.DataMinerParamList;
@@ -24,6 +25,9 @@ import org.junit.Before;
import org.junit.Test;
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 {
- System.out.println(DataMinerInvocationTest.class.getMethods()[0].getName()+" called");
+ System.out.println("marshallingTest called");
//LOADING PARAMETERS
List inParams = new ArrayList();
for (String pm : parameters.keySet()) {
@@ -71,40 +75,44 @@ public class DataMinerInvocationTest {
// ByteArrayOutputStream outStreamJSON = DataMinerInvocationManager.marshaling(dmInvocation, MediaType.ApplicationJSON);
// System.out.println(new String(outStreamJSON.toByteArray()));
- ByteArrayOutputStream outStreamXML = dmMng.marshaling(dmInvocation, MediaType.ApplicationXML, true);
- System.out.println(new String(outStreamXML.toByteArray()));
+ String marshXML = dmMng.marshalingXML(dmInvocation, true);
+ System.out.println(marshXML);
- ByteArrayOutputStream outStreamJSON = dmMng.marshaling(dmInvocation, MediaType.ApplicationJSON, true);
- System.out.println(new String(outStreamJSON.toByteArray()));
+ String marshJSON = dmMng.marshalingJSON(dmInvocation);
+ System.out.println(marshJSON);
}
@Test
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"));
- DataMinerInvocation dmInvocation = dmMng.unmarshaling(dmInvocationXMLFile, MediaType.ApplicationXML, true);
+ DataMinerInvocation dmInvocation = dmMng.unmarshalingXML(dmInvocationXMLFile, true);
System.out.println(dmInvocation);
- ByteArrayOutputStream outStreamJSON = dmMng.marshaling(dmInvocation, MediaType.ApplicationXML, true);
- System.out.println(new String(outStreamJSON.toByteArray()));
+ String marshXML = dmMng.marshalingXML(dmInvocation, true);
+ System.out.println(marshXML);
//
- outStreamJSON = dmMng.marshaling(dmInvocation, MediaType.ApplicationJSON, true);
- System.out.println(new String(outStreamJSON.toByteArray()));
+ String marshJSON = dmMng.marshalingJSON(dmInvocation);
+ System.out.println(marshJSON);
}
- @Test
+ //@Test
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"));
- DataMinerInvocation dmInvocation = dmMng.unmarshaling(dmInvocationJSONFile, MediaType.ApplicationJSON, true);
- System.out.println(dmInvocation);
- ByteArrayOutputStream outStreamXML = dmMng.marshaling(dmInvocation, MediaType.ApplicationXML, true);
- System.out.println(new String(outStreamXML.toByteArray()));
+ System.out.println("To String is: \n"+IOUtils.toString(dmInvocationJSONFile));
+
+// 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);
// 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();
+ }
+
+
+ }
}
diff --git a/src/test/resources/DataMinerInvocation.json b/src/test/resources/DataMinerInvocation.json
index cec45b7..f89d6db 100644
--- a/src/test/resources/DataMinerInvocation.json
+++ b/src/test/resources/DataMinerInvocation.json
@@ -1,18 +1,20 @@
{
- "dataminer-invocation" : {
- "operator-id" : "[THE_OPERATOR_ID]",
- "action" : "RUN",
- "parameters" : {
- "input" : {
- "param" : {
- "key" : "[key2]",
- "value" : "[value2]"
- },
- "param" : {
- "key" : "fileId",
- "value" : "http://publicLinkToFile22222"
- }
- }
+ "dataminer-invocation": {
+ "operator-id": "[THE_OPERATOR_ID]",
+ "action": "RUN",
+ "parameters": {
+ "input": {
+ "param": [
+ {
+ "key": "[key2]",
+ "value": "[value2]"
+ },
+ {
+ "key": "fileId",
+ "value": "http://publicLinkToFile"
+ }
+ ]
}
- }
+ }
+ }
}
\ No newline at end of file