diff --git a/ch.psi.fda.core/pom.xml b/ch.psi.fda.core/pom.xml
index a1229ab..bf1c71b 100644
--- a/ch.psi.fda.core/pom.xml
+++ b/ch.psi.fda.core/pom.xml
@@ -11,6 +11,13 @@
guava
15.0
+
+
+ junit
+ junit
+ 4.8.2
+ test
+
diff --git a/ch.psi.fda.core/src/main/java/ch/psi/fda/vdescriptor/LinePlot.java b/ch.psi.fda.core/src/main/java/ch/psi/fda/vdescriptor/LinePlot.java
new file mode 100644
index 0000000..05ae0c9
--- /dev/null
+++ b/ch.psi.fda.core/src/main/java/ch/psi/fda/vdescriptor/LinePlot.java
@@ -0,0 +1,19 @@
+package ch.psi.fda.vdescriptor;
+
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement(name="lineplot")
+public class LinePlot extends Plot {
+ private List data;
+
+ @XmlElement
+ public List getData() {
+ return data;
+ }
+ public void setData(List data) {
+ this.data = data;
+ }
+}
diff --git a/ch.psi.fda.core/src/main/java/ch/psi/fda/vdescriptor/MatrixPlot.java b/ch.psi.fda.core/src/main/java/ch/psi/fda/vdescriptor/MatrixPlot.java
new file mode 100644
index 0000000..3f64b25
--- /dev/null
+++ b/ch.psi.fda.core/src/main/java/ch/psi/fda/vdescriptor/MatrixPlot.java
@@ -0,0 +1,18 @@
+package ch.psi.fda.vdescriptor;
+
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement(name="matrixplot")
+public class MatrixPlot extends Plot {
+
+ private List data;
+
+ public List getData() {
+ return data;
+ }
+ public void setData(List data) {
+ this.data = data;
+ }
+}
diff --git a/ch.psi.fda.core/src/main/java/ch/psi/fda/vdescriptor/Plot.java b/ch.psi.fda.core/src/main/java/ch/psi/fda/vdescriptor/Plot.java
new file mode 100644
index 0000000..fdaa270
--- /dev/null
+++ b/ch.psi.fda.core/src/main/java/ch/psi/fda/vdescriptor/Plot.java
@@ -0,0 +1,10 @@
+package ch.psi.fda.vdescriptor;
+
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlTransient;
+
+
+@XmlSeeAlso({LinePlot.class, MatrixPlot.class})
+@XmlTransient
+public abstract class Plot {
+}
diff --git a/ch.psi.fda.core/src/main/java/ch/psi/fda/vdescriptor/Series.java b/ch.psi.fda.core/src/main/java/ch/psi/fda/vdescriptor/Series.java
new file mode 100644
index 0000000..8ac9a25
--- /dev/null
+++ b/ch.psi.fda.core/src/main/java/ch/psi/fda/vdescriptor/Series.java
@@ -0,0 +1,32 @@
+package ch.psi.fda.vdescriptor;
+
+import javax.xml.bind.annotation.XmlAttribute;
+
+public class Series {
+
+ private String x = null;
+ private String y = null;
+ private String z = null;
+
+ @XmlAttribute
+ public String getX() {
+ return x;
+ }
+ public void setX(String x) {
+ this.x = x;
+ }
+ @XmlAttribute
+ public String getY() {
+ return y;
+ }
+ public void setY(String y) {
+ this.y = y;
+ }
+ @XmlAttribute
+ public String getZ() {
+ return z;
+ }
+ public void setZ(String z) {
+ this.z = z;
+ }
+}
diff --git a/ch.psi.fda.core/src/main/java/ch/psi/fda/vdescriptor/VDescriptor.java b/ch.psi.fda.core/src/main/java/ch/psi/fda/vdescriptor/VDescriptor.java
new file mode 100644
index 0000000..7637703
--- /dev/null
+++ b/ch.psi.fda.core/src/main/java/ch/psi/fda/vdescriptor/VDescriptor.java
@@ -0,0 +1,27 @@
+package ch.psi.fda.vdescriptor;
+
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementWrapper;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement(name="vdescriptor")
+public class VDescriptor {
+
+ private List plots;
+
+ @XmlElementWrapper
+ @XmlElements({
+ @XmlElement(name="lineplot",type=LinePlot.class),
+ @XmlElement(name="matrixplot",type=MatrixPlot.class),
+ })
+ public List getPlots() {
+ return plots;
+ }
+
+ public void setPlots(List plots) {
+ this.plots = plots;
+ }
+}
diff --git a/ch.psi.fda.core/src/test/java/ch/psi/fda/vdescriptor/VDescriptorTest.java b/ch.psi.fda.core/src/test/java/ch/psi/fda/vdescriptor/VDescriptorTest.java
new file mode 100644
index 0000000..88e34a8
--- /dev/null
+++ b/ch.psi.fda.core/src/test/java/ch/psi/fda/vdescriptor/VDescriptorTest.java
@@ -0,0 +1,40 @@
+package ch.psi.fda.vdescriptor;
+
+import static org.junit.Assert.*;
+
+import java.io.File;
+import java.util.logging.Logger;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class VDescriptorTest {
+
+ private static final Logger logger = Logger.getLogger(VDescriptorTest.class.getName());
+
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ @Test
+ public void test() throws JAXBException {
+ JAXBContext context = JAXBContext.newInstance(VDescriptor.class);
+ Unmarshaller u = context.createUnmarshaller();
+
+ VDescriptor descriptor = (VDescriptor) u.unmarshal(new File("src/test/resources/vdescriptor.xml"));
+ for(Plot p: descriptor.getPlots()){
+ logger.info(p.getClass().getName());
+ }
+
+ }
+
+}
diff --git a/ch.psi.fda.core/src/test/resources/vdescriptor.xml b/ch.psi.fda.core/src/test/resources/vdescriptor.xml
new file mode 100644
index 0000000..5f6ca31
--- /dev/null
+++ b/ch.psi.fda.core/src/test/resources/vdescriptor.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file