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 214b8b5..b0b02a1 100644 --- a/src/main/java/org/gcube/data/analysis/dminvocation/DataMinerInvocationManager.java +++ b/src/main/java/org/gcube/data/analysis/dminvocation/DataMinerInvocationManager.java @@ -115,13 +115,13 @@ public class DataMinerInvocationManager { /** * Unmarshaling. * - * @param dmInvocationXMLStream the dm invocation xml 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} * @return the data miner invocation * @throws JAXBException the JAXB exception */ - public DataMinerInvocation unmarshaling(InputStream dmInvocationXMLStream, MediaType mediaType, boolean validateModel) throws JAXBException + public DataMinerInvocation unmarshaling(InputStream dmInvocationIS, MediaType mediaType, boolean validateModel) throws JAXBException { Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); @@ -141,7 +141,7 @@ public class DataMinerInvocationManager { } jaxbUnmarshaller.setProperty(JAXBContextProperties.MEDIA_TYPE, mediaType.getMimeType()); - return (DataMinerInvocation) jaxbUnmarshaller.unmarshal(dmInvocationXMLStream); + return (DataMinerInvocation) jaxbUnmarshaller.unmarshal(dmInvocationIS); } diff --git a/src/main/java/org/gcube/data/analysis/dminvocation/DataMinerParamListAdaptor.java b/src/main/java/org/gcube/data/analysis/dminvocation/DataMinerParamListAdaptor.java new file mode 100644 index 0000000..63da96f --- /dev/null +++ b/src/main/java/org/gcube/data/analysis/dminvocation/DataMinerParamListAdaptor.java @@ -0,0 +1,54 @@ +/** + * + */ +package org.gcube.data.analysis.dminvocation; + +import java.util.ArrayList; +import java.util.List; + +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 DataMinerParamListAdaptor. + * + * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it) + * Dec 18, 2018 + */ +public class DataMinerParamListAdaptor extends XmlAdapter> +{ + + /* (non-Javadoc) + * @see javax.xml.bind.annotation.adapters.XmlAdapter#unmarshal(java.lang.Object) + */ + @Override + public List unmarshal(DataMinerParamList list) throws Exception{ + System.out.println("Unmarshal called: "); + List retVal = new ArrayList(); + for (DataMinerParam dmp : list.getValues()){ + System.out.println("key: "+dmp.getKey()+" value: "+ dmp.getValue()); + retVal.add(new DataMinerParam(dmp.getKey(), dmp.getValue())); + } + return retVal; + } + + /* (non-Javadoc) + * @see javax.xml.bind.annotation.adapters.XmlAdapter#marshal(java.lang.Object) + */ + @Override + public DataMinerParamList marshal(List list) throws Exception{ + System.out.println("Marshal called: "); + DataMinerParamList retVal = new DataMinerParamList(); + System.out.println(list); +// List values = new ArrayList(); +// for (DataMinerParam dmp : list){ +// System.out.println("key: "+dmp.getKey()+" value: "+ dmp.getValue()); +// values.add(new DataMinerParam(dmp.getKey(), dmp.getValue())); +// } + retVal.setValues(list); + return retVal; + } +} \ No newline at end of file diff --git a/src/main/java/org/gcube/data/analysis/dminvocation/MapAdaptor.java b/src/main/java/org/gcube/data/analysis/dminvocation/MapAdaptor.java new file mode 100644 index 0000000..a52537b --- /dev/null +++ b/src/main/java/org/gcube/data/analysis/dminvocation/MapAdaptor.java @@ -0,0 +1,51 @@ +///** +// * +// */ +//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> +//{ +// +// /* (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/model/DataMinerInputParams.java b/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerInputParams.java index f792a19..842680a 100644 --- a/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerInputParams.java +++ b/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerInputParams.java @@ -1,51 +1,51 @@ -/** - * - */ -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; - - - - -} +///** +// * +// */ +//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/DataMinerOutputParams.java b/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerOutputParams.java index 4bfdf44..55b959e 100644 --- a/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerOutputParams.java +++ b/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerOutputParams.java @@ -1,48 +1,48 @@ -/** - * - */ -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; - -} +///** +// * +// */ +//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/DataMinerParam.java b/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerParam.java index b5ee233..ba63a7f 100644 --- a/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerParam.java +++ b/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerParam.java @@ -13,6 +13,8 @@ import lombok.NoArgsConstructor; import lombok.Setter; import lombok.ToString; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + /** * The Class DataMinerParam. @@ -20,8 +22,9 @@ import lombok.ToString; * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it) * Dec 4, 2018 */ -@XmlRootElement(name = "param") +@XmlRootElement(name = "dataminer-param") @XmlAccessorType (XmlAccessType.FIELD) +@JsonIgnoreProperties(ignoreUnknown=true) @NoArgsConstructor @AllArgsConstructor @Getter 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 new file mode 100644 index 0000000..338c05d --- /dev/null +++ b/src/main/java/org/gcube/data/analysis/dminvocation/model/DataMinerParamList.java @@ -0,0 +1,48 @@ +/** + * + */ +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.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + + +/** + * The Class DataMinerParamList. + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Dec 18, 2018 + */ +@XmlAccessorType (XmlAccessType.FIELD) +@XmlRootElement(name = "dataminer-param-list") +@JsonIgnoreProperties(ignoreUnknown=true) +@NoArgsConstructor +@AllArgsConstructor +@Getter +@Setter +@ToString +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; +} 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 9eca21d..fb40cf4 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 @@ -37,15 +37,14 @@ import com.fasterxml.jackson.annotation.JsonProperty; @ToString public class DataMinerParameters implements Serializable{ - /** - * - */ private static final long serialVersionUID = 8298755690515099551L; @XmlElement(name = "input", required=true, nillable=false) @JsonProperty(required=true) - private DataMinerInputParams input; + //@XmlJavaTypeAdapter(value = DataMinerParamListAdaptor.class) + private DataMinerParamList input; + @XmlElement(name = "output", required=false, nillable=false) @JsonProperty(required=false) - private DataMinerOutputParams output; + private DataMinerParamList output; } diff --git a/src/test/java/DataMinerInvocationTest.java b/src/test/java/DataMinerInvocationTest.java index f1ca067..099229d 100644 --- a/src/test/java/DataMinerInvocationTest.java +++ b/src/test/java/DataMinerInvocationTest.java @@ -7,7 +7,9 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import javax.xml.bind.JAXBException; @@ -15,7 +17,11 @@ import javax.xml.bind.JAXBException; 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; +import org.gcube.data.analysis.dminvocation.model.DataMinerParameters; import org.junit.Before; +import org.junit.Test; import org.xml.sax.SAXException; @@ -35,28 +41,31 @@ public class DataMinerInvocationTest { @Before public void init() throws JAXBException, IOException, SAXException{ - parameters.put("[key1]", "[value1]"); + parameters.put("fileId", "http://publicLinkToFile"); parameters.put("[key2]", "[value2]"); dmMng = DataMinerInvocationManager.getInstance(); } - //@Test + @Test public void marshallingTest() throws JAXBException, IOException, SAXException { System.out.println(DataMinerInvocationTest.class.getMethods()[0].getName()+" called"); //LOADING PARAMETERS -// List inParams = new ArrayList(); -// for (String pm : parameters.keySet()) { -// inParams.add(new DataMinerParam(pm, parameters.get(pm))); -// } -// + List inParams = new ArrayList(); + for (String pm : parameters.keySet()) { + inParams.add(new DataMinerParam(pm, parameters.get(pm))); + } // DataMinerInputParams inputParams = new DataMinerInputParams(inParams); // DataMinerOutputParams outputParams = new DataMinerOutputParams(null); -// DataMinerParameters params = new DataMinerParameters(inputParams, outputParams); + +// Map inputList = new HashMap(); +// inputList.putAll(parameters); + //new DataMinerParamList(parameters) + DataMinerParameters parameters = new DataMinerParameters(new DataMinerParamList(inParams), null); DataMinerInvocation dmInvocation = new DataMinerInvocation(); dmInvocation.setOperatorId(operatorID); - //dmInvocation.setParameters(params); + dmInvocation.setParameters(parameters); System.out.println(dmInvocation); // ByteArrayOutputStream outStreamJSON = DataMinerInvocationManager.marshaling(dmInvocation, MediaType.ApplicationJSON); @@ -64,9 +73,13 @@ public class DataMinerInvocationTest { ByteArrayOutputStream outStreamXML = dmMng.marshaling(dmInvocation, MediaType.ApplicationXML, true); System.out.println(new String(outStreamXML.toByteArray())); + + + ByteArrayOutputStream outStreamJSON = dmMng.marshaling(dmInvocation, MediaType.ApplicationJSON, true); + System.out.println(new String(outStreamJSON.toByteArray())); } - //@Test + @Test public void unmarshallingXMLTest() throws JAXBException, IOException, SAXException{ System.out.println(DataMinerInvocationTest.class.getMethods()[1].getName()+" called"); FileInputStream dmInvocationXMLFile = new FileInputStream(new File("./src/test/resources/DataMinerInvocation.xml")); @@ -76,13 +89,14 @@ public class DataMinerInvocationTest { ByteArrayOutputStream outStreamJSON = dmMng.marshaling(dmInvocation, MediaType.ApplicationXML, true); System.out.println(new String(outStreamJSON.toByteArray())); - +// outStreamJSON = dmMng.marshaling(dmInvocation, MediaType.ApplicationJSON, true); System.out.println(new String(outStreamJSON.toByteArray())); } - //@Test + + @Test public void unmarshallingJSONTest() throws JAXBException, IOException, SAXException{ System.out.println(DataMinerInvocationTest.class.getMethods()[2].getName()+" called"); FileInputStream dmInvocationJSONFile = new FileInputStream(new File("./src/test/resources/DataMinerInvocation.json")); @@ -94,6 +108,7 @@ public class DataMinerInvocationTest { } + // public static void main(String[] args) throws JAXBException, IOException, SAXException { // parameters.put("[key1]", "[value1]"); // parameters.put("[key2]", "[value2]"); diff --git a/src/test/resources/DataMinerInvocation.json b/src/test/resources/DataMinerInvocation.json index 28fa007..cec45b7 100644 --- a/src/test/resources/DataMinerInvocation.json +++ b/src/test/resources/DataMinerInvocation.json @@ -1,16 +1,16 @@ { "dataminer-invocation" : { - "operator-id" : "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.MPA_INTERSECT", + "operator-id" : "[THE_OPERATOR_ID]", "action" : "RUN", "parameters" : { "input" : { "param" : { - "key" : "fileId", - "value" : "http://publicLinkToFile" + "key" : "[key2]", + "value" : "[value2]" }, "param" : { - "key" : "param2", - "value" : "value2" + "key" : "fileId", + "value" : "http://publicLinkToFile22222" } } } diff --git a/src/test/resources/DataMinerInvocation.xml b/src/test/resources/DataMinerInvocation.xml index a61ecae..0e92526 100644 --- a/src/test/resources/DataMinerInvocation.xml +++ b/src/test/resources/DataMinerInvocation.xml @@ -1,12 +1,16 @@ - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.MPA_INTERSECT + [THE_OPERATOR_ID] RUN - param2 - value2 + [key2] + [value2] + + + fileId + http://publicLinkToFile