generalized for marshaling/unmarshaling as XML or JSON
git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/data-analysis/dataminer-invocation-model@174555 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
f2cbfd0290
commit
06e1259287
|
@ -20,6 +20,7 @@
|
||||||
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
<attribute name="org.eclipse.jst.component.nondependency" value=""/>
|
||||||
</attributes>
|
</attributes>
|
||||||
</classpathentry>
|
</classpathentry>
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
|
||||||
|
|
13
.project
13
.project
|
@ -5,6 +5,11 @@
|
||||||
<projects>
|
<projects>
|
||||||
</projects>
|
</projects>
|
||||||
<buildSpec>
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.wst.common.project.facet.core.builder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
<buildCommand>
|
<buildCommand>
|
||||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||||
<arguments>
|
<arguments>
|
||||||
|
@ -15,9 +20,17 @@
|
||||||
<arguments>
|
<arguments>
|
||||||
</arguments>
|
</arguments>
|
||||||
</buildCommand>
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.wst.validation.validationbuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
</buildSpec>
|
</buildSpec>
|
||||||
<natures>
|
<natures>
|
||||||
|
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
|
||||||
|
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
|
||||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||||
|
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
|
||||||
</natures>
|
</natures>
|
||||||
</projectDescription>
|
</projectDescription>
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
eclipse.preferences.version=1
|
eclipse.preferences.version=1
|
||||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
|
||||||
org.eclipse.jdt.core.compiler.compliance=1.7
|
org.eclipse.jdt.core.compiler.compliance=1.7
|
||||||
|
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||||
|
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||||
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
||||||
org.eclipse.jdt.core.compiler.source=1.7
|
org.eclipse.jdt.core.compiler.source=1.7
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
|
||||||
|
<wb-module deploy-name="dataminer-invocation-model">
|
||||||
|
<wb-resource deploy-path="/" source-path="/src/main/java"/>
|
||||||
|
</wb-module>
|
||||||
|
</project-modules>
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<faceted-project>
|
||||||
|
<installed facet="java" version="1.7"/>
|
||||||
|
<installed facet="jst.utility" version="1.0"/>
|
||||||
|
</faceted-project>
|
5
pom.xml
5
pom.xml
|
@ -72,6 +72,11 @@
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.eclipse.persistence</groupId>
|
||||||
|
<artifactId>org.eclipse.persistence.moxy</artifactId>
|
||||||
|
<version>2.5.2</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- LOGGER -->
|
<!-- LOGGER -->
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|
|
@ -11,6 +11,7 @@ import javax.xml.bind.JAXBException;
|
||||||
import javax.xml.bind.Marshaller;
|
import javax.xml.bind.Marshaller;
|
||||||
import javax.xml.bind.Unmarshaller;
|
import javax.xml.bind.Unmarshaller;
|
||||||
|
|
||||||
|
import org.eclipse.persistence.jaxb.MarshallerProperties;
|
||||||
import org.gcube.data.analysis.dminvocation.model.DataMinerInvocation;
|
import org.gcube.data.analysis.dminvocation.model.DataMinerInvocation;
|
||||||
|
|
||||||
|
|
||||||
|
@ -22,19 +23,28 @@ import org.gcube.data.analysis.dminvocation.model.DataMinerInvocation;
|
||||||
*/
|
*/
|
||||||
public class DataMinerInvocationManager {
|
public class DataMinerInvocationManager {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Marshaling.
|
* Marshaling.
|
||||||
*
|
*
|
||||||
* @param dmInvocation the dm invocation
|
* @param dmInvocation the dm invocation
|
||||||
|
* @param mediaType the media type
|
||||||
* @return the byte array output stream
|
* @return the byte array output stream
|
||||||
* @throws JAXBException the JAXB exception
|
* @throws JAXBException the JAXB exception
|
||||||
*/
|
*/
|
||||||
public static ByteArrayOutputStream marshaling(DataMinerInvocation dmInvocation) throws JAXBException
|
public static ByteArrayOutputStream marshaling(DataMinerInvocation dmInvocation, MediaType mediaType) throws JAXBException
|
||||||
{
|
{
|
||||||
JAXBContext jaxbContext = JAXBContext.newInstance(DataMinerInvocation.class);
|
JAXBContext jaxbContext = JAXBContext.newInstance(DataMinerInvocation.class);
|
||||||
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
|
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
|
||||||
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
|
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
|
||||||
|
|
||||||
|
switch (mediaType) {
|
||||||
|
case ApplicationJSON:
|
||||||
|
jaxbMarshaller.setProperty(MarshallerProperties.JSON_INCLUDE_ROOT, Boolean.TRUE);
|
||||||
|
case ApplicationXML:
|
||||||
|
default:
|
||||||
|
jaxbMarshaller.setProperty(MarshallerProperties.MEDIA_TYPE, mediaType.getMimeType());
|
||||||
|
}
|
||||||
|
|
||||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
jaxbMarshaller.marshal(dmInvocation, baos);
|
jaxbMarshaller.marshal(dmInvocation, baos);
|
||||||
return baos;
|
return baos;
|
||||||
|
@ -45,15 +55,25 @@ public class DataMinerInvocationManager {
|
||||||
* Unmarshaling.
|
* Unmarshaling.
|
||||||
*
|
*
|
||||||
* @param dmInvocationXMLStream the dm invocation xml file
|
* @param dmInvocationXMLStream the dm invocation xml file
|
||||||
|
* @param mediaType the media type
|
||||||
* @return the data miner invocation
|
* @return the data miner invocation
|
||||||
* @throws JAXBException the JAXB exception
|
* @throws JAXBException the JAXB exception
|
||||||
*/
|
*/
|
||||||
public static DataMinerInvocation unmarshaling(InputStream dmInvocationXMLStream) throws JAXBException
|
public static DataMinerInvocation unmarshaling(InputStream dmInvocationXMLStream, MediaType mediaType) throws JAXBException
|
||||||
{
|
{
|
||||||
//unMarshalingCategories();
|
//unMarshalingCategories();
|
||||||
JAXBContext jaxbContext = JAXBContext.newInstance(DataMinerInvocation.class);
|
JAXBContext jaxbContext = JAXBContext.newInstance(DataMinerInvocation.class);
|
||||||
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
|
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
|
||||||
|
|
||||||
|
|
||||||
|
switch (mediaType) {
|
||||||
|
case ApplicationJSON:
|
||||||
|
jaxbUnmarshaller.setProperty(MarshallerProperties.JSON_INCLUDE_ROOT, Boolean.TRUE);
|
||||||
|
case ApplicationXML:
|
||||||
|
default:
|
||||||
|
jaxbUnmarshaller.setProperty(MarshallerProperties.MEDIA_TYPE, mediaType.getMimeType());
|
||||||
|
}
|
||||||
|
|
||||||
//We had written this file in marshalling example
|
//We had written this file in marshalling example
|
||||||
return (DataMinerInvocation) jaxbUnmarshaller.unmarshal(dmInvocationXMLStream);
|
return (DataMinerInvocation) jaxbUnmarshaller.unmarshal(dmInvocationXMLStream);
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.data.analysis.dminvocation;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Enum MediaType.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
|
||||||
|
* Dec 4, 2018
|
||||||
|
*/
|
||||||
|
public enum MediaType {
|
||||||
|
|
||||||
|
ApplicationJSON("application/json"),
|
||||||
|
ApplicationXML("application/xml");
|
||||||
|
|
||||||
|
private String mimeType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new media type.
|
||||||
|
*
|
||||||
|
* @param mimeType the mime type
|
||||||
|
*/
|
||||||
|
MediaType(String mimeType){
|
||||||
|
this.mimeType = mimeType;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the mime type.
|
||||||
|
*
|
||||||
|
* @return the mimeType
|
||||||
|
*/
|
||||||
|
public String getMimeType() {
|
||||||
|
|
||||||
|
return mimeType;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
#Here we injecting the JAXBContextFactory from MOXy library.
|
||||||
|
|
||||||
|
javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
|
|
@ -15,6 +15,7 @@ import java.util.Map;
|
||||||
import javax.xml.bind.JAXBException;
|
import javax.xml.bind.JAXBException;
|
||||||
|
|
||||||
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.DataMinerInputParams;
|
import org.gcube.data.analysis.dminvocation.model.DataMinerInputParams;
|
||||||
import org.gcube.data.analysis.dminvocation.model.DataMinerInvocation;
|
import org.gcube.data.analysis.dminvocation.model.DataMinerInvocation;
|
||||||
import org.gcube.data.analysis.dminvocation.model.DataMinerOutputParams;
|
import org.gcube.data.analysis.dminvocation.model.DataMinerOutputParams;
|
||||||
|
@ -61,16 +62,17 @@ public class DataMinerInvocationTest {
|
||||||
dmInvocation.setParameters(params);
|
dmInvocation.setParameters(params);
|
||||||
System.out.println(dmInvocation);
|
System.out.println(dmInvocation);
|
||||||
|
|
||||||
ByteArrayOutputStream outStream = DataMinerInvocationManager.marshaling(dmInvocation);
|
ByteArrayOutputStream outStreamJSON = DataMinerInvocationManager.marshaling(dmInvocation, MediaType.ApplicationJSON);
|
||||||
|
System.out.println(new String(outStreamJSON.toByteArray()));
|
||||||
System.out.println(new String(outStream.toByteArray()));
|
|
||||||
|
|
||||||
|
ByteArrayOutputStream outStreamXML = DataMinerInvocationManager.marshaling(dmInvocation, MediaType.ApplicationXML);
|
||||||
|
System.out.println(new String(outStreamXML.toByteArray()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void unmarshallingTest() throws JAXBException, FileNotFoundException{
|
public void unmarshallingXMLTest() throws JAXBException, FileNotFoundException{
|
||||||
FileInputStream dmInvocationXMLFile = new FileInputStream(new File("./src/test/resources/DataMinerInvocation.xml"));
|
FileInputStream dmInvocationXMLFile = new FileInputStream(new File("./src/test/resources/DataMinerInvocation.xml"));
|
||||||
DataMinerInvocation dmInvocation = DataMinerInvocationManager.unmarshaling(dmInvocationXMLFile);
|
DataMinerInvocation dmInvocation = DataMinerInvocationManager.unmarshaling(dmInvocationXMLFile, MediaType.ApplicationXML);
|
||||||
System.out.println(dmInvocation);
|
System.out.println(dmInvocation);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<dataminer-invocation>
|
<dataminer-invocation>
|
||||||
<operator-id>THE_OPERATOR_ID</operator-id>
|
<operator-id>THE_OPERATOR_ID</operator-id>
|
||||||
<parameters>
|
<parameters>
|
||||||
|
|
Loading…
Reference in New Issue