From d95591219e92d06a0b38c4f13808971c3e75d0c3 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Wed, 19 Dec 2018 11:23:15 +0000 Subject: [PATCH] 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 --- pom.xml | 14 ++- .../DataMinerInvocationJSONWrapper.java | 35 ++++++ .../DataMinerInvocationManager.java | 107 ++++++++++++------ .../DataMinerParamListAdaptor.java | 4 +- .../analysis/dminvocation/MapAdaptor.java | 51 --------- .../analysis/dminvocation/MyDeserializer.java | 49 ++++++++ .../model/DataMinerInputParams.java | 51 --------- .../model/DataMinerInvocation.java | 15 ++- .../model/DataMinerOutputParams.java | 48 -------- .../model/DataMinerParamList.java | 9 +- .../model/DataMinerParameters.java | 24 ++-- src/test/java/DataMinerInvocationTest.java | 90 +++++++++++---- src/test/resources/DataMinerInvocation.json | 32 +++--- 13 files changed, 278 insertions(+), 251 deletions(-) create mode 100644 src/main/java/org/gcube/data/analysis/dminvocation/DataMinerInvocationJSONWrapper.java delete mode 100644 src/main/java/org/gcube/data/analysis/dminvocation/MapAdaptor.java create mode 100644 src/main/java/org/gcube/data/analysis/dminvocation/MyDeserializer.java delete mode 100644 src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerInputParams.java delete mode 100644 src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerOutputParams.java 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