From 990ac8a00f7a83499af5a865579cfc3f5ef8c6bb Mon Sep 17 00:00:00 2001 From: John MacAuley Date: Thu, 24 Mar 2022 12:56:35 -0400 Subject: [PATCH] Backed out the jakarta package port and returned to javax for compatibility with springboot. --- pom.xml | 74 ++++------ src/main/java/net/es/nsi/common/Nml.java | 2 +- .../java/net/es/nsi/common/NmlEthernet.java | 2 +- .../net/es/nsi/common/jaxb/JaxbParser.java | 69 ++++++---- .../net/es/nsi/common/jaxb/NmlParser.java | 4 +- .../net/es/nsi/common/jaxb/NsaParser.java | 4 +- .../nsi/common/signing/KeyStoreHandler.java | 4 +- .../common/util/ContentTransferEncoding.java | 4 +- .../java/net/es/nsi/common/util/Decoder.java | 2 +- .../net/es/nsi/common/util/XmlUtilities.java | 17 ++- src/main/schema/nsa/xjb/nsa.xjb | 4 +- src/main/schema/signatures/xjb/signatures.xjb | 4 +- src/main/schema/topology/xjb/topology.xjb | 4 +- src/test/java/net/es/nsi/common/NmlTest.java | 4 +- .../es/nsi/common/jaxb/JaxbParserTest.java | 126 ++++++++++++++++++ .../net/es/nsi/common/jaxb/NmlParserTest.java | 2 +- .../net/es/nsi/common/jaxb/NsaParserTest.java | 8 +- .../net/es/nsi/common/util/DecoderTest.java | 49 +++++++ 18 files changed, 277 insertions(+), 106 deletions(-) create mode 100644 src/test/java/net/es/nsi/common/jaxb/JaxbParserTest.java create mode 100644 src/test/java/net/es/nsi/common/util/DecoderTest.java diff --git a/pom.xml b/pom.xml index afc1477..4089144 100644 --- a/pom.xml +++ b/pom.xml @@ -5,9 +5,15 @@ net.es.nsi common-lib - 1.0.0 + 1.0.1 jar + + org.springframework.boot + spring-boot-starter-parent + 2.6.4 + + github true @@ -16,54 +22,30 @@ - - - jakarta.xml.bind - jakarta.xml.bind-api - 3.0.0 - - - + - jakarta.ws.rs - jakarta.ws.rs-api - 3.0.0 + javax.xml.bind + jaxb-api + 2.3.1 - jakarta.mail - jakarta.mail-api - 2.0.0 - provided - - - - - jakarta.annotation - jakarta.annotation-api - 2.0.0 + javax.mail + javax.mail-api + 1.6.2 - - org.glassfish.jaxb - jaxb-runtime - 3.0.0 + com.sun.mail + javax.mail + 1.6.2 org.projectlombok lombok - [1.18.20,] - - - - - com.google.code.gson - gson - [2.8.7,] @@ -83,26 +65,25 @@ org.apache.logging.log4j log4j-api - [2.14.1,) + [2.17.0,) org.apache.logging.log4j log4j-core - [2.14.1,) + [2.17.0,) joda-time joda-time - [2.10.10,] + [2.10.13,] junit junit - [4.13.2,) test @@ -112,7 +93,6 @@ org.codehaus.mojo versions-maven-plugin - 2.5 false @@ -126,8 +106,9 @@ 1.8 1.8 - + -Xlint:deprecation + -Xlint:unchecked @@ -177,7 +158,6 @@ ${basedir}/src/main/schema/topology/xjb net.es.nsi.common.jaxb.nml - false @@ -222,21 +202,21 @@ org.glassfish.jaxb jaxb-xjc - 3.0.0 + 2.3.6 compile org.glassfish.jaxb jaxb-core - 3.0.0 + 2.3.0.1 compile org.glassfish.jaxb jaxb-runtime - 3.0.0 + 2.3.6 compile @@ -286,7 +266,7 @@ github - https://maven.pkg.github.com/OWNER/* + https://maven.pkg.github.com/BandwidthOnDemand/* true @@ -296,7 +276,7 @@ github - GitHub BanwidthOnDemand nsi-dds-lib Apache Maven Packages + GitHub BanwidthOnDemand nsi-common-lib Apache Maven Packages https://maven.pkg.github.com/BandwidthOnDemand/nsi-common-lib diff --git a/src/main/java/net/es/nsi/common/Nml.java b/src/main/java/net/es/nsi/common/Nml.java index 62d5db5..44efde0 100644 --- a/src/main/java/net/es/nsi/common/Nml.java +++ b/src/main/java/net/es/nsi/common/Nml.java @@ -19,7 +19,6 @@ */ package net.es.nsi.common; -import jakarta.xml.bind.JAXBException; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; @@ -27,6 +26,7 @@ import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; +import javax.xml.bind.JAXBException; import javax.xml.namespace.QName; import net.es.nsi.common.jaxb.NmlParser; import net.es.nsi.common.jaxb.nml.NmlBidirectionalPortType; diff --git a/src/main/java/net/es/nsi/common/NmlEthernet.java b/src/main/java/net/es/nsi/common/NmlEthernet.java index c92acc2..d4ef0eb 100644 --- a/src/main/java/net/es/nsi/common/NmlEthernet.java +++ b/src/main/java/net/es/nsi/common/NmlEthernet.java @@ -2,7 +2,7 @@ import java.util.List; import java.util.Optional; -import jakarta.xml.bind.JAXBElement; +import javax.xml.bind.JAXBElement; import javax.xml.namespace.QName; /** diff --git a/src/main/java/net/es/nsi/common/jaxb/JaxbParser.java b/src/main/java/net/es/nsi/common/jaxb/JaxbParser.java index 070dfb9..5fc04a3 100644 --- a/src/main/java/net/es/nsi/common/jaxb/JaxbParser.java +++ b/src/main/java/net/es/nsi/common/jaxb/JaxbParser.java @@ -10,20 +10,20 @@ import java.io.StringReader; import java.io.StringWriter; import java.util.Optional; -import jakarta.xml.bind.JAXBContext; -import jakarta.xml.bind.JAXBElement; -import jakarta.xml.bind.JAXBException; -import jakarta.xml.bind.Marshaller; -import jakarta.xml.bind.Unmarshaller; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBElement; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Marshaller; +import javax.xml.bind.Unmarshaller; import javax.xml.namespace.QName; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.apache.commons.io.FileUtils; -import org.w3c.dom.Document; -import org.w3c.dom.Node; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.w3c.dom.Document; +import org.w3c.dom.Node; /** * A singleton to load the very expensive JAXBContext once. @@ -191,18 +191,23 @@ public String jaxb2XmlFormatter(JAXBElement jaxbElement) throws JAXBException * @throws JAXBException Could not parse the specified XML document. */ public T xml2Jaxb(Class xmlClass, String xml) throws JAXBException, IllegalArgumentException { - Optional> element; + Optional element = Optional.empty(); try (StringReader reader = new StringReader(xml)) { - element = Optional.ofNullable((JAXBElement) unmarshaller().unmarshal(reader)); + Object unmarshalled = unmarshaller().unmarshal(reader); + if (unmarshalled instanceof JAXBElement) { + element = Optional.ofNullable((JAXBElement) unmarshalled); + } } if (!element.isPresent()) { - throw new IllegalArgumentException("Unable to convert string to JAXB, class=" + xmlClass.getName() + ", xml=\n" + xml); + throw new IllegalArgumentException("Unable to convert string to JAXB, class=" + + xmlClass.getName() + ", xml=\n" + xml); } else if (element.get().getDeclaredType() == xmlClass) { return xmlClass.cast(element.get().getValue()); } - throw new JAXBException("Expected XML for class " + xmlClass.getCanonicalName() + " but found " + element.get().getDeclaredType().getCanonicalName()); + throw new JAXBException("Expected XML for class " + xmlClass.getCanonicalName() + " but found " + + element.get().getDeclaredType().getCanonicalName()); } /** @@ -216,14 +221,20 @@ public T xml2Jaxb(Class xmlClass, String xml) throws JAXBE * @throws IOException InputStream could not be read. */ public T xml2Jaxb(Class xmlClass, InputStream is) throws JAXBException, IOException { - JAXBElement element = (JAXBElement) unmarshaller().unmarshal(is); - if (element == null) { + Optional element = Optional.empty(); + Object unmarshalled = unmarshaller().unmarshal(is); + if (unmarshalled instanceof JAXBElement) { + element = Optional.ofNullable((JAXBElement) unmarshalled); + } + + if (!element.isPresent()) { throw new IllegalArgumentException("Unable to convert stream to JAXB, class=" + xmlClass.getName()); - } else if (element.getDeclaredType() == xmlClass) { - return xmlClass.cast(element.getValue()); + } else if (element.get().getDeclaredType() == xmlClass) { + return xmlClass.cast(element.get().getValue()); } - throw new JAXBException("Expected XML for class " + xmlClass.getCanonicalName() + " but found " + element.getDeclaredType().getCanonicalName()); + throw new JAXBException("Expected XML for class " + xmlClass.getCanonicalName() + " but found " + + element.get().getDeclaredType().getCanonicalName()); } /** @@ -237,22 +248,31 @@ public T xml2Jaxb(Class xmlClass, InputStream is) throws J * @throws IOException BufferedInputStream could not be read. */ public T xml2Jaxb(Class xmlClass, BufferedInputStream is) throws JAXBException, IOException { - JAXBElement element = (JAXBElement) unmarshaller().unmarshal(is); - if (element.getDeclaredType() == xmlClass) { - return xmlClass.cast(element.getValue()); + Optional element = Optional.empty(); + Object unmarshalled = unmarshaller().unmarshal(is); + if (unmarshalled instanceof JAXBElement) { + element = Optional.ofNullable((JAXBElement) unmarshalled); } - throw new JAXBException("Expected XML for class " + xmlClass.getCanonicalName() + " but found " + element.getDeclaredType().getCanonicalName()); + if (!element.isPresent()) { + throw new IllegalArgumentException("Unable to convert stream to JAXB, class=" + xmlClass.getName()); + } else if (element.get().getDeclaredType() == xmlClass) { + return xmlClass.cast(element.get().getValue()); + } + + throw new JAXBException("Expected XML for class " + xmlClass.getCanonicalName() + " but found " + + element.get().getDeclaredType().getCanonicalName()); } /** * Utility method to marshal a JAXB annotated java object to an XML string. * + * @param * @param messageClass The class of the object to marshal. * @param message The object to marshal. * @return String containing the XML encoded object. */ - public static String jaxb2String(Class messageClass, Object message) { + public static String jaxb2String(Class messageClass, Object message) { // Make sure we are given the correct input. if (messageClass == null || message == null) { @@ -263,14 +283,12 @@ public static String jaxb2String(Class messageClass, Object message) { StringWriter writer = new StringWriter(); try { - // We will use JAXB to marshal the java objects. - final JAXBContext jaxbContext = JAXBContext.newInstance(messageClass); - // We do not have @XmlRootElement annotations on the classes so // we need to manually create the JAXBElement. - JAXBElement element = new JAXBElement(new QName("uri", "local"), messageClass, message); + JAXBElement element = new JAXBElement(new QName("uri", "local"), messageClass, messageClass.cast(message)); // Marshal the object. + final JAXBContext jaxbContext = JAXBContext.newInstance(messageClass); jaxbContext.createMarshaller().marshal(element, writer); } catch (JAXBException e) { // Something went wrong so get out of here. @@ -279,7 +297,6 @@ public static String jaxb2String(Class messageClass, Object message) { return null; } - // Return the XML string. return writer.toString(); } } diff --git a/src/main/java/net/es/nsi/common/jaxb/NmlParser.java b/src/main/java/net/es/nsi/common/jaxb/NmlParser.java index da93236..209e09f 100644 --- a/src/main/java/net/es/nsi/common/jaxb/NmlParser.java +++ b/src/main/java/net/es/nsi/common/jaxb/NmlParser.java @@ -1,9 +1,9 @@ package net.es.nsi.common.jaxb; -import jakarta.xml.bind.JAXBElement; -import jakarta.xml.bind.JAXBException; import java.io.IOException; import java.io.InputStream; +import javax.xml.bind.JAXBElement; +import javax.xml.bind.JAXBException; import net.es.nsi.common.jaxb.nml.NmlTopologyType; import net.es.nsi.common.jaxb.nml.ObjectFactory; diff --git a/src/main/java/net/es/nsi/common/jaxb/NsaParser.java b/src/main/java/net/es/nsi/common/jaxb/NsaParser.java index e8fdcbf..2d69891 100644 --- a/src/main/java/net/es/nsi/common/jaxb/NsaParser.java +++ b/src/main/java/net/es/nsi/common/jaxb/NsaParser.java @@ -2,8 +2,8 @@ import java.io.IOException; import java.io.InputStream; -import jakarta.xml.bind.JAXBElement; -import jakarta.xml.bind.JAXBException; +import javax.xml.bind.JAXBElement; +import javax.xml.bind.JAXBException; import net.es.nsi.common.jaxb.nsa.NsaType; import net.es.nsi.common.jaxb.nsa.ObjectFactory; diff --git a/src/main/java/net/es/nsi/common/signing/KeyStoreHandler.java b/src/main/java/net/es/nsi/common/signing/KeyStoreHandler.java index b571583..06edf7a 100644 --- a/src/main/java/net/es/nsi/common/signing/KeyStoreHandler.java +++ b/src/main/java/net/es/nsi/common/signing/KeyStoreHandler.java @@ -21,7 +21,7 @@ /** * A Java keystore handler. - * + * * @author hacksaw */ public class KeyStoreHandler { @@ -70,7 +70,7 @@ public KeyInfo getKeyInfo(String alias, XMLSignatureFactory fac) throws NoSuchAl // Create the KeyInfo containing the X509Data. KeyInfoFactory kif = fac.getKeyInfoFactory(); X509Certificate x509Certificate = getX509Certificate(alias); - List x509Content = new ArrayList(); + List x509Content = new ArrayList<>(); x509Content.add(x509Certificate.getSubjectX500Principal().getName()); x509Content.add(x509Certificate); X509Data xd = kif.newX509Data(x509Content); diff --git a/src/main/java/net/es/nsi/common/util/ContentTransferEncoding.java b/src/main/java/net/es/nsi/common/util/ContentTransferEncoding.java index 8ad00b1..381262b 100644 --- a/src/main/java/net/es/nsi/common/util/ContentTransferEncoding.java +++ b/src/main/java/net/es/nsi/common/util/ContentTransferEncoding.java @@ -1,12 +1,12 @@ package net.es.nsi.common.util; -import jakarta.mail.MessagingException; -import jakarta.mail.internet.MimeUtility; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingException; +import javax.mail.MessagingException; +import javax.mail.internet.MimeUtility; import org.apache.commons.io.IOUtils; /** diff --git a/src/main/java/net/es/nsi/common/util/Decoder.java b/src/main/java/net/es/nsi/common/util/Decoder.java index c3b38ea..3f4d602 100644 --- a/src/main/java/net/es/nsi/common/util/Decoder.java +++ b/src/main/java/net/es/nsi/common/util/Decoder.java @@ -1,11 +1,11 @@ package net.es.nsi.common.util; import com.google.common.base.Strings; -import jakarta.mail.MessagingException; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; +import javax.mail.MessagingException; import javax.xml.parsers.ParserConfigurationException; import net.es.nsi.common.jaxb.DomParser; import org.apache.commons.io.IOUtils; diff --git a/src/main/java/net/es/nsi/common/util/XmlUtilities.java b/src/main/java/net/es/nsi/common/util/XmlUtilities.java index 8e21966..d9ea4b4 100644 --- a/src/main/java/net/es/nsi/common/util/XmlUtilities.java +++ b/src/main/java/net/es/nsi/common/util/XmlUtilities.java @@ -5,17 +5,16 @@ import java.io.InputStream; import java.io.StringReader; import java.io.StringWriter; -import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.GregorianCalendar; import java.util.concurrent.CopyOnWriteArrayList; -import jakarta.xml.bind.JAXBContext; -import jakarta.xml.bind.JAXBElement; -import jakarta.xml.bind.JAXBException; -import jakarta.xml.bind.Marshaller; -import jakarta.xml.bind.Unmarshaller; -import jakarta.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBElement; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Marshaller; +import javax.xml.bind.Unmarshaller; +import javax.xml.bind.annotation.XmlRootElement; import javax.xml.datatype.DatatypeConfigurationException; import javax.xml.datatype.DatatypeFactory; import javax.xml.datatype.XMLGregorianCalendar; @@ -162,7 +161,7 @@ public static Date xmlGregorianCalendarToDate(XMLGregorianCalendar cal) throws D } public static Collection getXmlFilenames(String path) throws NullPointerException { - Collection results = new ArrayList<>(); + Collection results = new CopyOnWriteArrayList<>(); File folder = new File(path); // We will grab all XML files from the target directory. @@ -178,6 +177,6 @@ public static Collection getXmlFilenames(String path) throws NullPointer } } } - return new CopyOnWriteArrayList(results); + return results; } } diff --git a/src/main/schema/nsa/xjb/nsa.xjb b/src/main/schema/nsa/xjb/nsa.xjb index 78370db..d86cc72 100755 --- a/src/main/schema/nsa/xjb/nsa.xjb +++ b/src/main/schema/nsa/xjb/nsa.xjb @@ -1,5 +1,5 @@ - diff --git a/src/main/schema/signatures/xjb/signatures.xjb b/src/main/schema/signatures/xjb/signatures.xjb index f85b5f1..d6ce8eb 100644 --- a/src/main/schema/signatures/xjb/signatures.xjb +++ b/src/main/schema/signatures/xjb/signatures.xjb @@ -1,5 +1,5 @@ - diff --git a/src/main/schema/topology/xjb/topology.xjb b/src/main/schema/topology/xjb/topology.xjb index 533aee5..9cf330c 100755 --- a/src/main/schema/topology/xjb/topology.xjb +++ b/src/main/schema/topology/xjb/topology.xjb @@ -1,5 +1,5 @@ - diff --git a/src/test/java/net/es/nsi/common/NmlTest.java b/src/test/java/net/es/nsi/common/NmlTest.java index cd072d5..22c676e 100644 --- a/src/test/java/net/es/nsi/common/NmlTest.java +++ b/src/test/java/net/es/nsi/common/NmlTest.java @@ -2,8 +2,8 @@ import java.io.IOException; import java.util.List; -import jakarta.xml.bind.JAXBElement; -import jakarta.xml.bind.JAXBException; +import javax.xml.bind.JAXBElement; +import javax.xml.bind.JAXBException; import net.es.nsi.common.jaxb.NmlParser; import net.es.nsi.common.jaxb.nml.NmlBidirectionalPortType; import net.es.nsi.common.jaxb.nml.NmlNetworkObject; diff --git a/src/test/java/net/es/nsi/common/jaxb/JaxbParserTest.java b/src/test/java/net/es/nsi/common/jaxb/JaxbParserTest.java new file mode 100644 index 0000000..618d137 --- /dev/null +++ b/src/test/java/net/es/nsi/common/jaxb/JaxbParserTest.java @@ -0,0 +1,126 @@ +package net.es.nsi.common.jaxb; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import javax.xml.bind.JAXBException; +import net.es.nsi.common.jaxb.nsa.NsaType; +import org.junit.After; +import org.junit.AfterClass; +import static org.junit.Assert.assertEquals; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * + * @author hacksaw + */ +public class JaxbParserTest { + private static final String document = "\n" + +"NetherLight Safnari\n" + +"2.1.3-SNAPSHOT (502f04d)\n" + +"2022-03-20T13:23:42.288\n" + +"\n" + +"\n" + +"\n" + +"https://agg.netherlight.net/nsi-v2/ConnectionServiceProvider#adminContact\n" + +"\n" + +"\n" + +"safnari \n" + +"\n" + +"\n" + +"20220320T132342Z\n" + +"\n" + +"\n" + +"individual\n" + +"\n" + +"\n" + +"Hans Trompert\n" + +"\n" + +"\n" + +"Trompert\n" + +"Hans\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"4.954585\n" + +"52.3567\n" + +"\n" + +"\n" + +"application/vnd.ogf.nsi.dds.v1+xml\n" + +"https://dds.netherlight.net/dds\n" + +"\n" + +"\n" + +"application/vnd.ogf.nsi.cs.v2.requester+soap\n" + +"https://agg.netherlight.net/nsi-v2/ConnectionServiceRequester\n" + +"\n" + +"\n" + +"application/vnd.ogf.nsi.cs.v2.provider+soap\n" + +"https://agg.netherlight.net/nsi-v2/ConnectionServiceProvider\n" + +"\n" + +"\n" + +"urn:ogf:network:surf.nl:2020:nsa\n" + +"urn:ogf:network:dev.automation.surf.net:2017:nsa\n" + +"urn:ogf:network:surf.nl:2020:onsaclient\n" + +"urn:ogf:network:icair.org:2013:nsa\n" + +"urn:ogf:network:es.net:2013:nsa:nsi-aggr-west\n" + +"urn:ogf:network:sense-rm.es.net:2013:netherlight\n" + +"urn:ogf:network:ampath.net:2013:nsa\n" + +"urn:ogf:network:lsanca.pacificwave.net:2016:nsa\n" + +"urn:ogf:network:sttlwa.pacificwave.net:2016:nsa\n" + +"urn:ogf:network:snvaca.pacificwave.net:2016:nsa\n" + +"urn:ogf:network:tokyjp.pacificwave.net:2018:nsa\n" + +"urn:ogf:network:cipo.rnp.br:2014:nsa:safnari\n" + +"urn:ogf:network:canarie.ca:2017:nsa\n" + +"urn:ogf:network:calit2.optiputer.net:2020:nsa\n" + +""; + + public JaxbParserTest() { + } + + @BeforeClass + public static void setUpClass() { + } + + @AfterClass + public static void tearDownClass() { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + /** + * Test of xml2Jaxb method, of class JaxbParser. + * + * @throws javax.xml.bind.JAXBException + */ + @Test + public void testXml2Jaxb() throws JAXBException, IllegalArgumentException, IOException { + JaxbParser parser = new JaxbParser("net.es.nsi.common.jaxb.nsa"); + try { + NsaType nsa = parser.xml2Jaxb(NsaType.class, document); + assertEquals("urn:ogf:network:netherlight.net:2013:nsa:safnari", nsa.getId()); + } + catch (JAXBException | IllegalArgumentException ex) { + System.err.printf("Exception caught: %s", ex.getMessage()); + throw ex; + } + + InputStream targetStream = new ByteArrayInputStream(document.getBytes()); + try { + NsaType nsa = parser.xml2Jaxb(NsaType.class, targetStream); + assertEquals("urn:ogf:network:netherlight.net:2013:nsa:safnari", nsa.getId()); + } catch (JAXBException | IllegalArgumentException | IOException ex) { + System.err.printf("Exception caught: %s", ex.getMessage()); + throw ex; + } + + } +} diff --git a/src/test/java/net/es/nsi/common/jaxb/NmlParserTest.java b/src/test/java/net/es/nsi/common/jaxb/NmlParserTest.java index 4b35b03..e6375c9 100644 --- a/src/test/java/net/es/nsi/common/jaxb/NmlParserTest.java +++ b/src/test/java/net/es/nsi/common/jaxb/NmlParserTest.java @@ -1,6 +1,6 @@ package net.es.nsi.common.jaxb; -import jakarta.xml.bind.JAXBElement; +import javax.xml.bind.JAXBElement; import net.es.nsi.common.Nml; import net.es.nsi.common.jaxb.nml.NmlBidirectionalPortType; import net.es.nsi.common.jaxb.nml.NmlNetworkObject; diff --git a/src/test/java/net/es/nsi/common/jaxb/NsaParserTest.java b/src/test/java/net/es/nsi/common/jaxb/NsaParserTest.java index e5160da..f7a50c7 100644 --- a/src/test/java/net/es/nsi/common/jaxb/NsaParserTest.java +++ b/src/test/java/net/es/nsi/common/jaxb/NsaParserTest.java @@ -2,8 +2,8 @@ import java.io.IOException; import java.util.List; -import jakarta.xml.bind.JAXBElement; -import jakarta.xml.bind.JAXBException; +import javax.xml.bind.JAXBElement; +import javax.xml.bind.JAXBException; import net.es.nsi.common.jaxb.nsa.HolderType; import net.es.nsi.common.jaxb.nsa.NsaType; import net.es.nsi.common.jaxb.nsa.TopologyReachabilityType; @@ -45,7 +45,7 @@ public void tearDown() { /** * Test of readTopology method, of class NsaParser. - * @throws jakarta.xml.bind.JAXBException + * @throws javax.xml.bind.JAXBException * @throws java.io.IOException */ @Test @@ -56,7 +56,7 @@ public void testReadDocument() throws JAXBException, IOException { /** * Test of writeTopology method, of class NsaParser. - * @throws jakarta.xml.bind.JAXBException + * @throws javax.xml.bind.JAXBException * @throws java.io.IOException */ @Test diff --git a/src/test/java/net/es/nsi/common/util/DecoderTest.java b/src/test/java/net/es/nsi/common/util/DecoderTest.java new file mode 100644 index 0000000..dd49073 --- /dev/null +++ b/src/test/java/net/es/nsi/common/util/DecoderTest.java @@ -0,0 +1,49 @@ +package net.es.nsi.common.util; + +import java.io.IOException; +import org.junit.After; +import org.junit.AfterClass; +import static org.junit.Assert.assertEquals; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * + * @author hacksaw + */ +public class DecoderTest { + private static final String NSA_ID = "urn:ogf:network:jgn-x.jp:2013:nsa"; + private static final String BASE64 = "base64"; + private static final String GZIP = "application/x-gzip"; + private static final String DATA = "H4sIAAAAAAAAAJVUbWvbMBD+K8H7WCz5LW0qHJcxGHQfxmApg34pqqU4au2TkGQv/fc7v9YjY2wmxnfS89w9Ot0lvzs39aaT1ikN+yAmUbCRUGqhoNoHD4fP4S64K3JwGQPHNwgGh1a2D07eG0apK0+y4Y7o6ki0rSg4RZMozmiUUKFcqTH2G67yYCEn+6C1wJT0R2a45Y1juIUbrCu5FWHWi5jB6ZIJtBUtAekp8EY6w0vp+lQpjRNagXvWArWfjbLS7YMkSpIwjsM4PURbtr1lUUbiKAqjHYswvBKjCJTNMORPbV/ZSwXhmbwY1gdlg+SlMLh0E8ZIjw9RxIbfY4B1QSXFzMsHYUXORaPgkwbPS9+XLhnPNZqtmg2riv5kDo9W1bx5FpyIEsiiYpdlKS01gCw9ajBWd0pI+2EdHlNOoSZrjo5oMdtenv0ocgQN/miuYVZ2E15heT1vTIGn3mIdt4cojfF5nPjL/ugvxFcF65ToKZTc8voi7zvyCCvGFwWbAwf+yi8YM276OLy8vthr9Lw2ACrVSegDjnujO9rzd7oV+vt91brkfb17CyrlWyGLOL0hN9fbnL4v5TWiBivdkutb3Jr9HjWHmFrrXhR/bzavja519YbCFkauwEt7xDYvcv9mZMGNqdUYmXYghpHDcSMzmXTJFY5NTgd0frLyWMyz44hxS2vRr9/v6eA8vZinXsATNDUZuAMrp6vc/yqjdCiAzG165TQ3F1L+t9n/pOcouW+t3PSh98GlAqtrSdpvHwNa5EbiAP9Q/nRRf66cJ5Vejzu+KuRVhVnfeX2rDP99xS+E6FAuKwUAAA=="; + private static final String DOCUMENT = "jgn-x.jphttps://glambda.dcn.jgn-x.jp:8443/connectionprovider#adminContactjgn-x20150225T031111ZindividualJin TanakaTanakaJin137.76535.69urn:ogf:network:jgn-x.jp:2013:topologyapplication/vnd.ogf.nsi.topology.v2+xmlhttp://ns.ps.jgn-x.jp/NSI/jgn-x_jp_2013_nml.xmlapplication/vnd.ogf.nsi.cs.v2.provider+soaphttps://glambda.dcn.jgn-x.jp:8443/connectionproviderurn:ogf:network:aist.go.jp:2013:nsa:nsi-aggr"; + + public DecoderTest() { + } + + @BeforeClass + public static void setUpClass() { + } + + @AfterClass + public static void tearDownClass() { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + @Test + public void testDecode() throws IOException { + String output = Decoder.decode2string(BASE64, GZIP, DATA); + assertEquals(DOCUMENT, output); + + String decode = Decoder.decode(DATA); + assertEquals(DOCUMENT, decode); + } +} \ No newline at end of file