diff --git a/src/main/java/net/ivoa/xml/vospace/v2/Transfer.java b/src/main/java/net/ivoa/xml/vospace/v2/Transfer.java index 1e91484bbaab1b9140dc60775d335e25f1eedf95..b156cb4ee416a382b987779c58124f631528780e 100644 --- a/src/main/java/net/ivoa/xml/vospace/v2/Transfer.java +++ b/src/main/java/net/ivoa/xml/vospace/v2/Transfer.java @@ -68,7 +68,7 @@ import javax.xml.bind.annotation.XmlType; "target", "direction", "view", - "protocol", + "protocols", "keepBytes" }) // <edit> @@ -81,7 +81,8 @@ public class Transfer { protected String target; protected String direction; protected View view; - protected List<Protocol> protocol; + @XmlElement(name = "protocol") + protected List<Protocol> protocols; protected Boolean keepBytes; // <edit> Fix: version is missing in VOSpace XSD @XmlAttribute @@ -182,11 +183,11 @@ public class Transfer { * * */ - public List<Protocol> getProtocol() { - if (protocol == null) { - protocol = new ArrayList<Protocol>(); + public List<Protocol> getProtocols() { + if (protocols == null) { + protocols = new ArrayList<>(); } - return this.protocol; + return this.protocols; } /** diff --git a/src/test/java/net/ivoa/xml/uws/v1/JobSummaryTest.java b/src/test/java/net/ivoa/xml/uws/v1/JobSummaryTest.java index 35513b68ba990c1c49cc407c2efee25c64f19634..56f351aea1844159d156b3a9d960f55320c23fd9 100644 --- a/src/test/java/net/ivoa/xml/uws/v1/JobSummaryTest.java +++ b/src/test/java/net/ivoa/xml/uws/v1/JobSummaryTest.java @@ -65,9 +65,12 @@ public class JobSummaryTest { transfer.setVersion("2.1"); transfer.setTarget("vos://example.com!vospace/mydata1"); transfer.setDirection("pullFromVoSpace"); - Protocol protocol = new Protocol(); - protocol.setUri("ivo://ivoa.net/vospace/core#httpget"); - transfer.getProtocol().add(protocol); + Protocol protocol1 = new Protocol(); + protocol1.setUri("ivo://ivoa.net/vospace/core#httpget"); + Protocol protocol2= new Protocol(); + protocol2.setUri("ivo://ivoa.net/vospace/core#httpsget"); + transfer.getProtocols().add(protocol1); + transfer.getProtocols().add(protocol2); jobInfo.getAny().add(transfer); @@ -94,7 +97,7 @@ public class JobSummaryTest { assertEquals("pullFromVoSpace", transfer.getDirection()); assertEquals("vos://example.com!vospace/mydata1", transfer.getTarget()); - Protocol protocol = transfer.getProtocol().get(0); + Protocol protocol = transfer.getProtocols().get(0); assertEquals("ivo://ivoa.net/vospace/core#httpget", protocol.getUri()); } } diff --git a/src/test/java/net/ivoa/xml/vospace/v2/TransferTest.java b/src/test/java/net/ivoa/xml/vospace/v2/TransferTest.java new file mode 100644 index 0000000000000000000000000000000000000000..740f6b0538a2c35b612d58c7866641f3896932eb --- /dev/null +++ b/src/test/java/net/ivoa/xml/vospace/v2/TransferTest.java @@ -0,0 +1,58 @@ +package net.ivoa.xml.vospace.v2; + +import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.StringReader; +import java.io.StringWriter; +import javax.xml.bind.JAXB; +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; + +public class TransferTest { + + private static final ObjectMapper MAPPER = new ObjectMapper(); + + private static final String URI_PREFIX = "vos://example.com!vospace"; + + @Test + public void testXmlSerialization() throws Exception { + + Transfer transfer = getTransfer(); + + String xml; + try ( StringWriter sw = new StringWriter()) { + JAXB.marshal(transfer, sw); + xml = sw.toString(); + System.out.println(xml); + } + + Transfer deserialized; + try ( StringReader sr = new StringReader(xml)) { + deserialized = JAXB.unmarshal(sr, Transfer.class); + } + + verifyTransfersAreEquals(transfer, deserialized); + } + + private Transfer getTransfer() { + Transfer transfer = new Transfer(); + + transfer.setTarget(URI_PREFIX + "/mynode"); + transfer.setDirection("pullFromVoSpace"); + + Protocol protocol = new Protocol(); + protocol.setUri("ivo://ivoa.net/vospace/core#httpget"); + protocol.setEndpoint("http://ia2.inaf.it/data?param1=value1¶m2=value2"); + + transfer.getProtocols().add(protocol); + + return transfer; + } + + private void verifyTransfersAreEquals(Transfer serialized, Transfer deserialized) { + + assertEquals(serialized.getTarget(), deserialized.getTarget()); + assertEquals(serialized.getDirection(), deserialized.getDirection()); + assertEquals(serialized.getProtocols().size(), deserialized.getProtocols().size()); + assertEquals(serialized.getProtocols().get(0).getEndpoint(), deserialized.getProtocols().get(0).getEndpoint()); + } +}