From 341532906ac4df70851445e56e37ad42aebd825a Mon Sep 17 00:00:00 2001 From: Erlend Klakegg Bergheim Date: Fri, 15 Dec 2017 14:35:07 +0100 Subject: [PATCH] Support for schemeID in SBDH. Minor fixes related to data model. --- .../peppol/common/api/SimpleIdentifier.java | 2 - .../model/AbstractQualifiedIdentifier.java | 5 +- .../model/AbstractSimpleIdentifier.java | 7 +- .../common/model/ProcessIdentifier.java | 3 + .../model/DocumentTypeIdentifierTest.java | 2 +- .../model/ParticipantIdentifierTest.java | 2 +- .../common/model/ProcessIdentifierTest.java | 2 +- .../vefa/peppol/common/model/SchemeTest.java | 2 +- .../common/model/TransportProfileTest.java | 2 +- .../vefa/peppol/evidence/rem/RemHelper.java | 2 +- .../evidence/rem/TestResourcesTest.java | 10 +- .../java/no/difi/vefa/peppol/icd/Icds.java | 5 +- .../difi/vefa/peppol/icd/code/PeppolIcd.java | 10 +- .../vefa/peppol/icd/code/PeppolIcdTest.java | 4 +- .../lookup/reader/Bdxr201407Reader.java | 4 +- .../lookup/reader/Bdxr201605Reader.java | 4 +- .../peppol/lookup/reader/BusdoxReader.java | 4 +- .../lookup/util/DynamicHostnameGenerator.java | 2 +- .../vefa/peppol/lookup/util/XmlUtils.java | 16 +-- .../lookup/reader/Bdxr201407ReaderTest.java | 4 +- .../lookup/reader/Bdxr201605ReaderTest.java | 4 +- .../lookup/reader/BusdoxReaderTest.java | 6 +- .../peppol/lookup/reader/MultiReaderTest.java | 8 +- .../syntax/Bdxr201605PublisherSyntax.java | 8 +- .../syntax/BusdoxPublisherSyntax.java | 8 +- .../no/difi/vefa/peppol/sbdh/SbdhHelper.java | 6 +- .../no/difi/vefa/peppol/sbdh/SbdhReader.java | 11 +- .../difi/vefa/peppol/sbdh/PeppolSbdhTest.java | 117 ++++++++++++++++++ .../difi/vefa/peppol/sbdh/SbdhWriterTest.java | 25 +++- .../src/test/resources/peppol-sbdh-1.00.xml | 29 +++++ .../src/test/resources/peppol-sbdh-1.01.xml | 29 +++++ .../vefa/peppol/security/ModeDetector.java | 8 +- .../peppol/security/ModeDetectorTest.java | 2 +- .../util/DifiCertificateValidatorTest.java | 2 +- pom.xml | 8 +- 35 files changed, 285 insertions(+), 78 deletions(-) create mode 100644 peppol-sbdh/src/test/java/no/difi/vefa/peppol/sbdh/PeppolSbdhTest.java create mode 100644 peppol-sbdh/src/test/resources/peppol-sbdh-1.00.xml create mode 100644 peppol-sbdh/src/test/resources/peppol-sbdh-1.01.xml diff --git a/peppol-common/src/main/java/no/difi/vefa/peppol/common/api/SimpleIdentifier.java b/peppol-common/src/main/java/no/difi/vefa/peppol/common/api/SimpleIdentifier.java index a55c3bf1..4901c119 100644 --- a/peppol-common/src/main/java/no/difi/vefa/peppol/common/api/SimpleIdentifier.java +++ b/peppol-common/src/main/java/no/difi/vefa/peppol/common/api/SimpleIdentifier.java @@ -26,6 +26,4 @@ public interface SimpleIdentifier { String getIdentifier(); - @Deprecated - String getValue(); } diff --git a/peppol-common/src/main/java/no/difi/vefa/peppol/common/model/AbstractQualifiedIdentifier.java b/peppol-common/src/main/java/no/difi/vefa/peppol/common/model/AbstractQualifiedIdentifier.java index 5372f853..fc5f9bfe 100644 --- a/peppol-common/src/main/java/no/difi/vefa/peppol/common/model/AbstractQualifiedIdentifier.java +++ b/peppol-common/src/main/java/no/difi/vefa/peppol/common/model/AbstractQualifiedIdentifier.java @@ -33,7 +33,7 @@ public abstract class AbstractQualifiedIdentifier implements QualifiedIdentifier public AbstractQualifiedIdentifier(String identifier, Scheme scheme) { this.scheme = scheme; - this.identifier = identifier; + this.identifier = identifier == null ? null : identifier.trim(); } @Override @@ -48,7 +48,6 @@ public String getIdentifier() { @Override public String urlencoded() { - return ModelUtils.urlencode("%s::%s", scheme.getValue(), identifier); + return ModelUtils.urlencode("%s::%s", scheme.getIdentifier(), identifier); } - } diff --git a/peppol-common/src/main/java/no/difi/vefa/peppol/common/model/AbstractSimpleIdentifier.java b/peppol-common/src/main/java/no/difi/vefa/peppol/common/model/AbstractSimpleIdentifier.java index ee61c585..efca64ca 100644 --- a/peppol-common/src/main/java/no/difi/vefa/peppol/common/model/AbstractSimpleIdentifier.java +++ b/peppol-common/src/main/java/no/difi/vefa/peppol/common/model/AbstractSimpleIdentifier.java @@ -26,7 +26,7 @@ public abstract class AbstractSimpleIdentifier implements SimpleIdentifier { protected final String value; protected AbstractSimpleIdentifier(String value) { - this.value = value; + this.value = value == null ? null : value.trim(); } @Override @@ -34,11 +34,6 @@ public String getIdentifier() { return value; } - @Override - public String getValue() { - return value; - } - @Override public String toString() { return value; diff --git a/peppol-common/src/main/java/no/difi/vefa/peppol/common/model/ProcessIdentifier.java b/peppol-common/src/main/java/no/difi/vefa/peppol/common/model/ProcessIdentifier.java index 69086b88..ecd337b1 100644 --- a/peppol-common/src/main/java/no/difi/vefa/peppol/common/model/ProcessIdentifier.java +++ b/peppol-common/src/main/java/no/difi/vefa/peppol/common/model/ProcessIdentifier.java @@ -32,6 +32,9 @@ public class ProcessIdentifier extends AbstractQualifiedIdentifier implements Se public static final Scheme DEFAULT_SCHEME = Scheme.of("cenbii-procid-ubl"); + public static final ProcessIdentifier NO_PROCESS = + ProcessIdentifier.of("bdx:noprocess", Scheme.of("bdx-procid-transport")); + public static ProcessIdentifier of(String identifier) { return new ProcessIdentifier(identifier, DEFAULT_SCHEME); } diff --git a/peppol-common/src/test/java/no/difi/vefa/peppol/common/model/DocumentTypeIdentifierTest.java b/peppol-common/src/test/java/no/difi/vefa/peppol/common/model/DocumentTypeIdentifierTest.java index 30876560..415d6e5f 100644 --- a/peppol-common/src/test/java/no/difi/vefa/peppol/common/model/DocumentTypeIdentifierTest.java +++ b/peppol-common/src/test/java/no/difi/vefa/peppol/common/model/DocumentTypeIdentifierTest.java @@ -53,7 +53,7 @@ public void simpleParse() throws Exception { .parse("qualifier::identifier"); Assert.assertEquals(documentTypeIdentifier.getIdentifier(), "identifier"); - Assert.assertEquals(documentTypeIdentifier.getScheme().getValue(), "qualifier"); + Assert.assertEquals(documentTypeIdentifier.getScheme().getIdentifier(), "qualifier"); try { DocumentTypeIdentifier.parse("value"); diff --git a/peppol-common/src/test/java/no/difi/vefa/peppol/common/model/ParticipantIdentifierTest.java b/peppol-common/src/test/java/no/difi/vefa/peppol/common/model/ParticipantIdentifierTest.java index 41f1400a..6d741120 100644 --- a/peppol-common/src/test/java/no/difi/vefa/peppol/common/model/ParticipantIdentifierTest.java +++ b/peppol-common/src/test/java/no/difi/vefa/peppol/common/model/ParticipantIdentifierTest.java @@ -56,7 +56,7 @@ public void simpleParse() throws Exception { .parse("qualifier::identifier"); Assert.assertEquals(participantIdentifier.getIdentifier(), "identifier"); - Assert.assertEquals(participantIdentifier.getScheme().getValue(), "qualifier"); + Assert.assertEquals(participantIdentifier.getScheme().getIdentifier(), "qualifier"); try { ParticipantIdentifier.parse("value"); diff --git a/peppol-common/src/test/java/no/difi/vefa/peppol/common/model/ProcessIdentifierTest.java b/peppol-common/src/test/java/no/difi/vefa/peppol/common/model/ProcessIdentifierTest.java index b985f92e..60c4ad19 100644 --- a/peppol-common/src/test/java/no/difi/vefa/peppol/common/model/ProcessIdentifierTest.java +++ b/peppol-common/src/test/java/no/difi/vefa/peppol/common/model/ProcessIdentifierTest.java @@ -46,7 +46,7 @@ public void simpleParse() throws Exception { .parse("qualifier::identifier"); Assert.assertEquals(processIdentifier.getIdentifier(), "identifier"); - Assert.assertEquals(processIdentifier.getScheme().getValue(), "qualifier"); + Assert.assertEquals(processIdentifier.getScheme().getIdentifier(), "qualifier"); try { ProcessIdentifier.parse("value"); diff --git a/peppol-common/src/test/java/no/difi/vefa/peppol/common/model/SchemeTest.java b/peppol-common/src/test/java/no/difi/vefa/peppol/common/model/SchemeTest.java index 31962e93..791ec6de 100644 --- a/peppol-common/src/test/java/no/difi/vefa/peppol/common/model/SchemeTest.java +++ b/peppol-common/src/test/java/no/difi/vefa/peppol/common/model/SchemeTest.java @@ -28,7 +28,7 @@ public class SchemeTest { @Test public void simple() { Scheme schema = Scheme.of("SCHEME"); - Assert.assertEquals(schema.getValue(), "SCHEME"); + Assert.assertEquals(schema.getIdentifier(), "SCHEME"); Assert.assertEquals(schema.toString(), "SCHEME"); Assert.assertNotNull(schema.hashCode()); diff --git a/peppol-common/src/test/java/no/difi/vefa/peppol/common/model/TransportProfileTest.java b/peppol-common/src/test/java/no/difi/vefa/peppol/common/model/TransportProfileTest.java index 393dab05..3ea16ed2 100644 --- a/peppol-common/src/test/java/no/difi/vefa/peppol/common/model/TransportProfileTest.java +++ b/peppol-common/src/test/java/no/difi/vefa/peppol/common/model/TransportProfileTest.java @@ -27,7 +27,7 @@ public class TransportProfileTest { @Test public void simple() { Assert.assertTrue(TransportProfile.AS2_1_0.toString().contains("as2")); - Assert.assertTrue(TransportProfile.AS2_1_0.toString().contains(TransportProfile.AS2_1_0.getValue())); + Assert.assertTrue(TransportProfile.AS2_1_0.toString().contains(TransportProfile.AS2_1_0.getIdentifier())); Assert.assertTrue(TransportProfile.AS2_1_0.equals(TransportProfile.AS2_1_0)); Assert.assertFalse(TransportProfile.AS2_1_0.equals(TransportProfile.AS4)); diff --git a/peppol-evidence/src/main/java/no/difi/vefa/peppol/evidence/rem/RemHelper.java b/peppol-evidence/src/main/java/no/difi/vefa/peppol/evidence/rem/RemHelper.java index 7397f7f9..d5b8cba4 100644 --- a/peppol-evidence/src/main/java/no/difi/vefa/peppol/evidence/rem/RemHelper.java +++ b/peppol-evidence/src/main/java/no/difi/vefa/peppol/evidence/rem/RemHelper.java @@ -65,7 +65,7 @@ public void action() throws Exception { public static AttributedElectronicAddressType createElectronicAddressType(ParticipantIdentifier participant) { AttributedElectronicAddressType o = new AttributedElectronicAddressType(); o.setValue(participant.getIdentifier()); - o.setScheme(participant.getScheme().getValue()); + o.setScheme(participant.getScheme().getIdentifier()); return o; } diff --git a/peppol-evidence/src/test/java/no/difi/vefa/peppol/evidence/rem/TestResourcesTest.java b/peppol-evidence/src/test/java/no/difi/vefa/peppol/evidence/rem/TestResourcesTest.java index de85db0f..f7034ab5 100644 --- a/peppol-evidence/src/test/java/no/difi/vefa/peppol/evidence/rem/TestResourcesTest.java +++ b/peppol-evidence/src/test/java/no/difi/vefa/peppol/evidence/rem/TestResourcesTest.java @@ -40,7 +40,7 @@ public class TestResourcesTest { - public static Logger log = LoggerFactory.getLogger(TestResourcesTest.class); + public static final Logger LOGGER = LoggerFactory.getLogger(TestResourcesTest.class); /** Attempts to retrieve the private key held in our test keystore */ @Test @@ -59,15 +59,15 @@ public void loadMimeMessage() throws Exception { ByteArrayOutputStream baos = new ByteArrayOutputStream(); mimeMessage.writeTo(baos); - log.debug("Size of baos: " + baos.size()); - log.debug("Size of mime message:" + mimeMessage.getSize()); + LOGGER.debug("Size of baos: " + baos.size()); + LOGGER.debug("Size of mime message:" + mimeMessage.getSize()); InputStream rawInputStream = mimeMessage.getRawInputStream(); int counter = 0; while (rawInputStream.read() >= 0) { counter++; } - log.debug("Size of raw input stream " + counter); + LOGGER.debug("Size of raw input stream " + counter); // Headers are not part of the MIME message itself, the are however part of the MimeMessage object: // @@ -83,7 +83,7 @@ public void loadMimeMessage() throws Exception { Enumeration allHeaderLines = mimeMessage.getAllHeaderLines(); while (allHeaderLines.hasMoreElements()) { String s = (String) allHeaderLines.nextElement(); - log.debug(s); + LOGGER.debug(s); } } } diff --git a/peppol-icd/src/main/java/no/difi/vefa/peppol/icd/Icds.java b/peppol-icd/src/main/java/no/difi/vefa/peppol/icd/Icds.java index 501fe888..bd878a60 100644 --- a/peppol-icd/src/main/java/no/difi/vefa/peppol/icd/Icds.java +++ b/peppol-icd/src/main/java/no/difi/vefa/peppol/icd/Icds.java @@ -70,9 +70,8 @@ public IcdIdentifier parse(String icd, String identifier) throws PeppolParsingEx public Icd findBySchemeAndCode(Scheme scheme, String code) { for (Icd v : values) - if (v.getCode().equals(code)) - if (v.getScheme().equals(scheme)) - return v; + if (v.getCode().equals(code) && v.getScheme().equals(scheme)) + return v; throw new IllegalArgumentException(String.format("Value '%s::%s' is not valid ICD.", scheme, code)); } diff --git a/peppol-icd/src/main/java/no/difi/vefa/peppol/icd/code/PeppolIcd.java b/peppol-icd/src/main/java/no/difi/vefa/peppol/icd/code/PeppolIcd.java index 66879597..c5562513 100644 --- a/peppol-icd/src/main/java/no/difi/vefa/peppol/icd/code/PeppolIcd.java +++ b/peppol-icd/src/main/java/no/difi/vefa/peppol/icd/code/PeppolIcd.java @@ -120,11 +120,19 @@ public Scheme getScheme() { return SCHEME; } - public static Icd valueOfIcd(String icd) { + public static Icd findByCode(String icd) { for (PeppolIcd v : values()) if (v.code.equals(icd)) return v; throw new IllegalArgumentException(String.format("Value '%s' is not valid ICD.", icd)); } + + public static Icd findByIdentifier(String icd) { + for (PeppolIcd v : values()) + if (v.identifier.equals(icd)) + return v; + + throw new IllegalArgumentException(String.format("Identifier '%s' is not valid ICD.", icd)); + } } diff --git a/peppol-icd/src/test/java/no/difi/vefa/peppol/icd/code/PeppolIcdTest.java b/peppol-icd/src/test/java/no/difi/vefa/peppol/icd/code/PeppolIcdTest.java index bd949930..a75ee981 100644 --- a/peppol-icd/src/test/java/no/difi/vefa/peppol/icd/code/PeppolIcdTest.java +++ b/peppol-icd/src/test/java/no/difi/vefa/peppol/icd/code/PeppolIcdTest.java @@ -32,11 +32,11 @@ public void simple() { Assert.assertNotNull(PeppolIcd.valueOf("NO_ORGNR")); Assert.assertNotNull(PeppolIcd.valueOf("NO_ORGNR").getScheme()); - Assert.assertEquals(PeppolIcd.valueOfIcd("9908"), PeppolIcd.NO_ORGNR); + Assert.assertEquals(PeppolIcd.findByCode("9908"), PeppolIcd.NO_ORGNR); } @Test(expectedExceptions = IllegalArgumentException.class) public void exceptionOnUnknownCode() { - PeppolIcd.valueOfIcd("invalid"); + PeppolIcd.findByCode("invalid"); } } diff --git a/peppol-lookup/src/main/java/no/difi/vefa/peppol/lookup/reader/Bdxr201407Reader.java b/peppol-lookup/src/main/java/no/difi/vefa/peppol/lookup/reader/Bdxr201407Reader.java index b1040dd4..a1ef9a3e 100644 --- a/peppol-lookup/src/main/java/no/difi/vefa/peppol/lookup/reader/Bdxr201407Reader.java +++ b/peppol-lookup/src/main/java/no/difi/vefa/peppol/lookup/reader/Bdxr201407Reader.java @@ -57,7 +57,7 @@ public class Bdxr201407Reader implements MetadataReader { - private static Logger logger = LoggerFactory.getLogger(Bdxr201407Reader.class); + private static final Logger LOGGER = LoggerFactory.getLogger(Bdxr201407Reader.class); public static final String NAMESPACE = "http://docs.oasis-open.org/bdxr/ns/SMP/2014/07"; @@ -96,7 +96,7 @@ public List parseDocumentIdentifiers(FetcherResponse fet documentTypeIdentifiers.add(DocumentTypeIdentifierWithUri.of( parts[1], Scheme.of(parts[0]), URI.create(reference.getHref()))); } catch (ArrayIndexOutOfBoundsException e) { - logger.warn("Unable to parse '{}'.", hrefDocumentTypeIdentifier); + LOGGER.warn("Unable to parse '{}'.", hrefDocumentTypeIdentifier); } } diff --git a/peppol-lookup/src/main/java/no/difi/vefa/peppol/lookup/reader/Bdxr201605Reader.java b/peppol-lookup/src/main/java/no/difi/vefa/peppol/lookup/reader/Bdxr201605Reader.java index 358098bb..fdf49204 100644 --- a/peppol-lookup/src/main/java/no/difi/vefa/peppol/lookup/reader/Bdxr201605Reader.java +++ b/peppol-lookup/src/main/java/no/difi/vefa/peppol/lookup/reader/Bdxr201605Reader.java @@ -57,7 +57,7 @@ public class Bdxr201605Reader implements MetadataReader { - private static Logger logger = LoggerFactory.getLogger(Bdxr201605Reader.class); + private static final Logger LOGGER = LoggerFactory.getLogger(Bdxr201605Reader.class); public static final String NAMESPACE = "http://docs.oasis-open.org/bdxr/ns/SMP/2016/05"; @@ -96,7 +96,7 @@ public List parseDocumentIdentifiers(FetcherResponse fet documentTypeIdentifiers.add(DocumentTypeIdentifierWithUri.of( parts[1], Scheme.of(parts[0]), URI.create(reference.getHref()))); } catch (ArrayIndexOutOfBoundsException e) { - logger.warn("Unable to parse '{}'.", hrefDocumentTypeIdentifier); + LOGGER.warn("Unable to parse '{}'.", hrefDocumentTypeIdentifier); } } diff --git a/peppol-lookup/src/main/java/no/difi/vefa/peppol/lookup/reader/BusdoxReader.java b/peppol-lookup/src/main/java/no/difi/vefa/peppol/lookup/reader/BusdoxReader.java index 4a3a380f..4a455587 100644 --- a/peppol-lookup/src/main/java/no/difi/vefa/peppol/lookup/reader/BusdoxReader.java +++ b/peppol-lookup/src/main/java/no/difi/vefa/peppol/lookup/reader/BusdoxReader.java @@ -59,7 +59,7 @@ public class BusdoxReader implements MetadataReader { - private static Logger logger = LoggerFactory.getLogger(BusdoxReader.class); + private static final Logger LOGGER = LoggerFactory.getLogger(BusdoxReader.class); public static final String NAMESPACE = "http://busdox.org/serviceMetadata/publishing/1.0/"; @@ -98,7 +98,7 @@ public List parseDocumentIdentifiers(FetcherResponse fet documentTypeIdentifiers.add(DocumentTypeIdentifierWithUri.of( parts[1], Scheme.of(parts[0]), URI.create(reference.getHref()))); } catch (ArrayIndexOutOfBoundsException e) { - logger.warn("Unable to parse '{}'.", hrefDocumentTypeIdentifier); + LOGGER.warn("Unable to parse '{}'.", hrefDocumentTypeIdentifier); } } diff --git a/peppol-lookup/src/main/java/no/difi/vefa/peppol/lookup/util/DynamicHostnameGenerator.java b/peppol-lookup/src/main/java/no/difi/vefa/peppol/lookup/util/DynamicHostnameGenerator.java index 546b5e34..0990386b 100644 --- a/peppol-lookup/src/main/java/no/difi/vefa/peppol/lookup/util/DynamicHostnameGenerator.java +++ b/peppol-lookup/src/main/java/no/difi/vefa/peppol/lookup/util/DynamicHostnameGenerator.java @@ -79,6 +79,6 @@ public String generate(ParticipantIdentifier participantIdentifier) throws Looku } return String.format("%s%s.%s.%s", - prefix, receiverHash, participantIdentifier.getScheme().getValue(), hostname); + prefix, receiverHash, participantIdentifier.getScheme().getIdentifier(), hostname); } } diff --git a/peppol-lookup/src/main/java/no/difi/vefa/peppol/lookup/util/XmlUtils.java b/peppol-lookup/src/main/java/no/difi/vefa/peppol/lookup/util/XmlUtils.java index 48b2d123..65ed999f 100644 --- a/peppol-lookup/src/main/java/no/difi/vefa/peppol/lookup/util/XmlUtils.java +++ b/peppol-lookup/src/main/java/no/difi/vefa/peppol/lookup/util/XmlUtils.java @@ -27,26 +27,26 @@ public class XmlUtils { - private static Logger logger = LoggerFactory.getLogger(XmlUtils.class); + private static final Logger LOGGER = LoggerFactory.getLogger(XmlUtils.class); - private static final Pattern rootTagPattern = + private static final Pattern ROOT_TAG_PATTERN = Pattern.compile("<(\\w*:{0,1}[^", Pattern.MULTILINE); - private static final Pattern namespacePattern = + private static final Pattern NAMESPACE_PATTERN = Pattern.compile("xmlns:{0,1}([A-Za-z0-9]*)\\w*=\\w*\"(.+?)\"", Pattern.MULTILINE); public static String extractRootNamespace(String xmlContent) { - Matcher matcher = rootTagPattern.matcher(xmlContent); + Matcher matcher = ROOT_TAG_PATTERN.matcher(xmlContent); if (matcher.find()) { String rootElement = matcher.group(1).trim(); - logger.debug("Root element: {}", rootElement); + LOGGER.debug("Root element: {}", rootElement); String rootNs = rootElement.split(" ", 2)[0].contains(":") ? rootElement.substring(0, rootElement.indexOf(":")) : ""; - logger.debug("Namespace: {}", rootNs); + LOGGER.debug("Namespace: {}", rootNs); - Matcher nsMatcher = namespacePattern.matcher(rootElement); + Matcher nsMatcher = NAMESPACE_PATTERN.matcher(rootElement); while (nsMatcher.find()) { - logger.debug(nsMatcher.group(0)); + LOGGER.debug(nsMatcher.group(0)); if (nsMatcher.group(1).equals(rootNs)) { return nsMatcher.group(2); diff --git a/peppol-lookup/src/test/java/no/difi/vefa/peppol/lookup/reader/Bdxr201407ReaderTest.java b/peppol-lookup/src/test/java/no/difi/vefa/peppol/lookup/reader/Bdxr201407ReaderTest.java index 6148ecb4..c39bdde2 100644 --- a/peppol-lookup/src/test/java/no/difi/vefa/peppol/lookup/reader/Bdxr201407ReaderTest.java +++ b/peppol-lookup/src/test/java/no/difi/vefa/peppol/lookup/reader/Bdxr201407ReaderTest.java @@ -36,7 +36,7 @@ public class Bdxr201407ReaderTest { - private static Logger logger = LoggerFactory.getLogger(Bdxr201407ReaderTest.class); + private static final Logger LOGGER = LoggerFactory.getLogger(Bdxr201407ReaderTest.class); private MetadataReader reader = new Bdxr201407Reader(); @@ -48,7 +48,7 @@ public void documentIdentifers() throws Exception { assertEquals(result.size(), 7); for (DocumentTypeIdentifier documentTypeIdentifier : result) - logger.debug("{}", documentTypeIdentifier); + LOGGER.debug("{}", documentTypeIdentifier); } @Test diff --git a/peppol-lookup/src/test/java/no/difi/vefa/peppol/lookup/reader/Bdxr201605ReaderTest.java b/peppol-lookup/src/test/java/no/difi/vefa/peppol/lookup/reader/Bdxr201605ReaderTest.java index d9859b52..619c754b 100644 --- a/peppol-lookup/src/test/java/no/difi/vefa/peppol/lookup/reader/Bdxr201605ReaderTest.java +++ b/peppol-lookup/src/test/java/no/difi/vefa/peppol/lookup/reader/Bdxr201605ReaderTest.java @@ -36,7 +36,7 @@ public class Bdxr201605ReaderTest { - private static Logger logger = LoggerFactory.getLogger(Bdxr201605ReaderTest.class); + private static final Logger LOGGER = LoggerFactory.getLogger(Bdxr201605ReaderTest.class); private MetadataReader reader = new Bdxr201605Reader(); @@ -48,7 +48,7 @@ public void documentIdentifers() throws Exception { assertEquals(result.size(), 7); for (DocumentTypeIdentifier documentTypeIdentifier : result) - logger.debug("{}", documentTypeIdentifier); + LOGGER.debug("{}", documentTypeIdentifier); } @Test(enabled = false) diff --git a/peppol-lookup/src/test/java/no/difi/vefa/peppol/lookup/reader/BusdoxReaderTest.java b/peppol-lookup/src/test/java/no/difi/vefa/peppol/lookup/reader/BusdoxReaderTest.java index 63d25921..b938798f 100644 --- a/peppol-lookup/src/test/java/no/difi/vefa/peppol/lookup/reader/BusdoxReaderTest.java +++ b/peppol-lookup/src/test/java/no/difi/vefa/peppol/lookup/reader/BusdoxReaderTest.java @@ -36,7 +36,7 @@ public class BusdoxReaderTest { - private static Logger logger = LoggerFactory.getLogger(BusdoxReaderTest.class); + private static final Logger LOGGER = LoggerFactory.getLogger(BusdoxReaderTest.class); private MetadataReader reader = new BusdoxReader(); @@ -48,7 +48,7 @@ public void documentIdentifers() throws Exception { assertEquals(result.size(), 7); for (DocumentTypeIdentifier documentTypeIdentifier : result) - logger.debug("{}", documentTypeIdentifier); + LOGGER.debug("{}", documentTypeIdentifier); } @Test @@ -82,7 +82,7 @@ public void documentIdentifersDocsLogistics() throws Exception { assertEquals(result.size(), 25); for (DocumentTypeIdentifier documentTypeIdentifier : result) - logger.debug("{}", documentTypeIdentifier); + LOGGER.debug("{}", documentTypeIdentifier); } } diff --git a/peppol-lookup/src/test/java/no/difi/vefa/peppol/lookup/reader/MultiReaderTest.java b/peppol-lookup/src/test/java/no/difi/vefa/peppol/lookup/reader/MultiReaderTest.java index d3f51954..7d68cd10 100644 --- a/peppol-lookup/src/test/java/no/difi/vefa/peppol/lookup/reader/MultiReaderTest.java +++ b/peppol-lookup/src/test/java/no/difi/vefa/peppol/lookup/reader/MultiReaderTest.java @@ -37,7 +37,7 @@ public class MultiReaderTest { - private static Logger logger = LoggerFactory.getLogger(MultiReaderTest.class); + private static final Logger LOGGER = LoggerFactory.getLogger(MultiReaderTest.class); private MetadataReader reader = new MultiReader(); @@ -49,7 +49,7 @@ public void busdoxDocumentIdentifers() throws Exception { assertEquals(result.size(), 7); for (DocumentTypeIdentifier documentTypeIdentifier : result) - logger.debug("{}", documentTypeIdentifier); + LOGGER.debug("{}", documentTypeIdentifier); } @Test @@ -60,7 +60,7 @@ public void bdxr201407DocumentIdentifers() throws Exception { assertEquals(result.size(), 7); for (DocumentTypeIdentifier documentTypeIdentifier : result) - logger.debug("{}", documentTypeIdentifier); + LOGGER.debug("{}", documentTypeIdentifier); } @Test @@ -71,7 +71,7 @@ public void bdxr201605DocumentIdentifers() throws Exception { assertEquals(result.size(), 7); for (DocumentTypeIdentifier documentTypeIdentifier : result) - logger.debug("{}", documentTypeIdentifier); + LOGGER.debug("{}", documentTypeIdentifier); } @Test diff --git a/peppol-publisher/src/main/java/no/difi/vefa/peppol/publisher/syntax/Bdxr201605PublisherSyntax.java b/peppol-publisher/src/main/java/no/difi/vefa/peppol/publisher/syntax/Bdxr201605PublisherSyntax.java index 51b51995..48a05b1c 100644 --- a/peppol-publisher/src/main/java/no/difi/vefa/peppol/publisher/syntax/Bdxr201605PublisherSyntax.java +++ b/peppol-publisher/src/main/java/no/difi/vefa/peppol/publisher/syntax/Bdxr201605PublisherSyntax.java @@ -113,21 +113,21 @@ public Marshaller getMarshaller() throws JAXBException { private ParticipantIdentifierType convert(ParticipantIdentifier participantIdentifier) { ParticipantIdentifierType participantIdentifierType = new ParticipantIdentifierType(); - participantIdentifierType.setScheme(participantIdentifier.getScheme().getValue()); + participantIdentifierType.setScheme(participantIdentifier.getScheme().getIdentifier()); participantIdentifierType.setValue(participantIdentifier.getIdentifier()); return participantIdentifierType; } private ProcessIdentifierType convert(ProcessIdentifier processIdentifier) { ProcessIdentifierType processIdentifierType = new ProcessIdentifierType(); - processIdentifierType.setScheme(processIdentifier.getScheme().getValue()); + processIdentifierType.setScheme(processIdentifier.getScheme().getIdentifier()); processIdentifierType.setValue(processIdentifier.getIdentifier()); return processIdentifierType; } private DocumentIdentifierType convert(DocumentTypeIdentifier documentTypeIdentifier) { DocumentIdentifierType documentIdentifierType = new DocumentIdentifierType(); - documentIdentifierType.setScheme(documentTypeIdentifier.getScheme().getValue()); + documentIdentifierType.setScheme(documentTypeIdentifier.getScheme().getIdentifier()); documentIdentifierType.setValue(documentTypeIdentifier.getIdentifier()); return documentIdentifierType; } @@ -146,7 +146,7 @@ private ProcessType convert(ProcessMetadata processMetadata) private EndpointType convert(PublisherEndpoint endpoint) { EndpointType endpointType = new EndpointType(); - endpointType.setTransportProfile(endpoint.getTransportProfile().getValue()); + endpointType.setTransportProfile(endpoint.getTransportProfile().getIdentifier()); endpointType.setRequireBusinessLevelSignature(false); endpointType.setEndpointURI(endpoint.getAddress().toString()); endpointType.setServiceActivationDate(convert(endpoint.getActivationDate())); diff --git a/peppol-publisher/src/main/java/no/difi/vefa/peppol/publisher/syntax/BusdoxPublisherSyntax.java b/peppol-publisher/src/main/java/no/difi/vefa/peppol/publisher/syntax/BusdoxPublisherSyntax.java index c43e3c3f..0dcb1760 100644 --- a/peppol-publisher/src/main/java/no/difi/vefa/peppol/publisher/syntax/BusdoxPublisherSyntax.java +++ b/peppol-publisher/src/main/java/no/difi/vefa/peppol/publisher/syntax/BusdoxPublisherSyntax.java @@ -123,21 +123,21 @@ public Marshaller getMarshaller() throws JAXBException { private ParticipantIdentifierType convert(ParticipantIdentifier participantIdentifier) { ParticipantIdentifierType participantIdentifierType = new ParticipantIdentifierType(); - participantIdentifierType.setScheme(participantIdentifier.getScheme().getValue()); + participantIdentifierType.setScheme(participantIdentifier.getScheme().getIdentifier()); participantIdentifierType.setValue(participantIdentifier.getIdentifier()); return participantIdentifierType; } private ProcessIdentifierType convert(ProcessIdentifier processIdentifier) { ProcessIdentifierType processIdentifierType = new ProcessIdentifierType(); - processIdentifierType.setScheme(processIdentifier.getScheme().getValue()); + processIdentifierType.setScheme(processIdentifier.getScheme().getIdentifier()); processIdentifierType.setValue(processIdentifier.getIdentifier()); return processIdentifierType; } private DocumentIdentifierType convert(DocumentTypeIdentifier documentTypeIdentifier) { DocumentIdentifierType documentIdentifierType = new DocumentIdentifierType(); - documentIdentifierType.setScheme(documentTypeIdentifier.getScheme().getValue()); + documentIdentifierType.setScheme(documentTypeIdentifier.getScheme().getIdentifier()); documentIdentifierType.setValue(documentTypeIdentifier.getIdentifier()); return documentIdentifierType; } @@ -164,7 +164,7 @@ private EndpointType convert(PublisherEndpoint endpoint) { endpointReferenceType.setReferenceParameters(new ReferenceParametersType()); EndpointType endpointType = new EndpointType(); - endpointType.setTransportProfile(endpoint.getTransportProfile().getValue()); + endpointType.setTransportProfile(endpoint.getTransportProfile().getIdentifier()); endpointType.setEndpointReference(endpointReferenceType); endpointType.setRequireBusinessLevelSignature(false); endpointType.setServiceActivationDate(convert(endpoint.getActivationDate())); diff --git a/peppol-sbdh/src/main/java/no/difi/vefa/peppol/sbdh/SbdhHelper.java b/peppol-sbdh/src/main/java/no/difi/vefa/peppol/sbdh/SbdhHelper.java index 77b08d30..c60a1619 100644 --- a/peppol-sbdh/src/main/java/no/difi/vefa/peppol/sbdh/SbdhHelper.java +++ b/peppol-sbdh/src/main/java/no/difi/vefa/peppol/sbdh/SbdhHelper.java @@ -70,7 +70,7 @@ public void action() throws Exception { public static Partner createPartner(ParticipantIdentifier participant) { PartnerIdentification partnerIdentification = new PartnerIdentification(); - partnerIdentification.setAuthority(participant.getScheme().getValue()); + partnerIdentification.setAuthority(participant.getScheme().getIdentifier()); partnerIdentification.setValue(participant.getIdentifier()); Partner partner = new Partner(); @@ -91,6 +91,8 @@ public static Scope createScope(ProcessIdentifier processIdentifier) { Scope scope = new Scope(); scope.setType("PROCESSID"); scope.setInstanceIdentifier(processIdentifier.getIdentifier()); + if (!processIdentifier.getScheme().equals(ProcessIdentifier.DEFAULT_SCHEME)) + scope.setIdentifier(processIdentifier.getScheme().getIdentifier()); return scope; } @@ -99,6 +101,8 @@ public static Scope createScope(DocumentTypeIdentifier documentTypeIdentifier) { Scope scope = new Scope(); scope.setType("DOCUMENTID"); scope.setInstanceIdentifier(documentTypeIdentifier.getIdentifier()); + if (!documentTypeIdentifier.getScheme().equals(DocumentTypeIdentifier.DEFAULT_SCHEME)) + scope.setIdentifier(documentTypeIdentifier.getScheme().getIdentifier()); return scope; } diff --git a/peppol-sbdh/src/main/java/no/difi/vefa/peppol/sbdh/SbdhReader.java b/peppol-sbdh/src/main/java/no/difi/vefa/peppol/sbdh/SbdhReader.java index 3d54a862..69f28887 100644 --- a/peppol-sbdh/src/main/java/no/difi/vefa/peppol/sbdh/SbdhReader.java +++ b/peppol-sbdh/src/main/java/no/difi/vefa/peppol/sbdh/SbdhReader.java @@ -89,9 +89,14 @@ public static Header read(StandardBusinessDocumentHeader sbdh) throws SbdhExcept // Scope for (Scope scope : sbdh.getBusinessScope().getScope()) { if (scope.getType().equals("DOCUMENTID")) { - header = header.documentType(DocumentTypeIdentifier.of(scope.getInstanceIdentifier())); - } else if (scope.getType().equals("PROCESSID")) - header = header.process(ProcessIdentifier.of(scope.getInstanceIdentifier())); + Scheme scheme = scope.getIdentifier() != null ? + Scheme.of(scope.getIdentifier()) : DocumentTypeIdentifier.DEFAULT_SCHEME; + header = header.documentType(DocumentTypeIdentifier.of(scope.getInstanceIdentifier(), scheme)); + } else if (scope.getType().equals("PROCESSID")) { + Scheme scheme = scope.getIdentifier() != null ? + Scheme.of(scope.getIdentifier()) : ProcessIdentifier.DEFAULT_SCHEME; + header = header.process(ProcessIdentifier.of(scope.getInstanceIdentifier(), scheme)); + } } return header; diff --git a/peppol-sbdh/src/test/java/no/difi/vefa/peppol/sbdh/PeppolSbdhTest.java b/peppol-sbdh/src/test/java/no/difi/vefa/peppol/sbdh/PeppolSbdhTest.java new file mode 100644 index 00000000..bf9c7a7e --- /dev/null +++ b/peppol-sbdh/src/test/java/no/difi/vefa/peppol/sbdh/PeppolSbdhTest.java @@ -0,0 +1,117 @@ +package no.difi.vefa.peppol.sbdh; + +import no.difi.vefa.peppol.common.model.*; +import no.difi.vefa.peppol.sbdh.lang.SbdhException; +import org.testng.Assert; +import org.testng.annotations.Test; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Date; + +/** + * @author erlend + */ +public class PeppolSbdhTest { + + @Test + public void version100() throws IOException, SbdhException { + try (InputStream inputStream = getClass().getResourceAsStream("/peppol-sbdh-1.00.xml")) { + Header header = SbdhReader.read(inputStream); + + Assert.assertEquals( + header.getSender(), + ParticipantIdentifier.of( + "9908:810418052", + ParticipantIdentifier.DEFAULT_SCHEME + )); + Assert.assertEquals( + header.getReceiver(), + ParticipantIdentifier.of( + "9908:810418052", + ParticipantIdentifier.DEFAULT_SCHEME + )); + Assert.assertEquals( + header.getDocumentType(), + DocumentTypeIdentifier.of( + "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:www.cenbii.eu:transaction:biitrns010:ver2.0:extended:urn:www.peppol.eu:bis:peppol4a:ver2.0::2.1", + DocumentTypeIdentifier.DEFAULT_SCHEME + )); + Assert.assertEquals( + header.getProcess(), + ProcessIdentifier.of( + "urn:www.cenbii.eu:profile:bii04:ver2.0", + ProcessIdentifier.DEFAULT_SCHEME + )); + Assert.assertEquals( + header.getCreationTimestamp(), + new Date(1512551825734L) + ); + Assert.assertEquals( + header.getIdentifier(), + InstanceIdentifier.of("7f58475e-a9cc-4386-904c-cf09c2662c19") + ); + Assert.assertEquals( + header.getInstanceType().getStandard(), + "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" + ); + Assert.assertEquals( + header.getInstanceType().getType(), + "Invoice" + ); + Assert.assertEquals( + header.getInstanceType().getVersion(), + "2.1" + ); + } + } + + @Test + public void version101() throws IOException, SbdhException { + try (InputStream inputStream = getClass().getResourceAsStream("/peppol-sbdh-1.01.xml")) { + Header header = SbdhReader.read(inputStream); + + Assert.assertEquals( + header.getSender(), + ParticipantIdentifier.of( + "9908:810418052", + ParticipantIdentifier.DEFAULT_SCHEME + )); + Assert.assertEquals( + header.getReceiver(), + ParticipantIdentifier.of( + "9908:810418052", + ParticipantIdentifier.DEFAULT_SCHEME + )); + Assert.assertEquals( + header.getDocumentType(), + DocumentTypeIdentifier.of( + "urn:cen.eu:en16931:2017", + Scheme.of("busdox-docid-edifact") + )); + Assert.assertEquals( + header.getProcess(), + ProcessIdentifier.NO_PROCESS); + Assert.assertEquals( + header.getCreationTimestamp(), + new Date(1512551825734L) + ); + Assert.assertEquals( + header.getIdentifier(), + InstanceIdentifier.of("7f58475e-a9cc-4386-904c-cf09c2662c19") + ); + Assert.assertEquals( + header.getInstanceType().getStandard(), + "EDIFACT" + ); + Assert.assertEquals( + header.getInstanceType().getType(), + "INVOIC" + ); + Assert.assertEquals( + header.getInstanceType().getVersion(), + "D.14B" + ); + } + } +} diff --git a/peppol-sbdh/src/test/java/no/difi/vefa/peppol/sbdh/SbdhWriterTest.java b/peppol-sbdh/src/test/java/no/difi/vefa/peppol/sbdh/SbdhWriterTest.java index 0a1981df..94349690 100644 --- a/peppol-sbdh/src/test/java/no/difi/vefa/peppol/sbdh/SbdhWriterTest.java +++ b/peppol-sbdh/src/test/java/no/difi/vefa/peppol/sbdh/SbdhWriterTest.java @@ -22,9 +22,12 @@ import no.difi.vefa.peppol.common.model.*; import no.difi.vefa.peppol.sbdh.lang.SbdhException; import org.mockito.Mockito; +import org.testng.Assert; import org.testng.annotations.Test; import javax.xml.stream.XMLStreamWriter; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.OutputStream; import java.util.Date; @@ -44,7 +47,25 @@ public class SbdhWriterTest { @Test public void simple() throws Exception { - SbdhWriter.write(System.out, header); + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + SbdhWriter.write(byteArrayOutputStream, header); + + Header actual = SbdhReader.read(new ByteArrayInputStream(byteArrayOutputStream.toByteArray())); + Assert.assertEquals(actual, header); + } + + @Test + public void withScheme() throws Exception { + Header expected = header + .documentType(DocumentTypeIdentifier.of("urn:cen.eu:en16931:2017", Scheme.of("busdox-docid-edifact"))) + .process(ProcessIdentifier.NO_PROCESS); + + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + SbdhWriter.write(byteArrayOutputStream, expected); + + Header actual = SbdhReader.read(new ByteArrayInputStream(byteArrayOutputStream.toByteArray())); + Assert.assertEquals(actual, expected); + } @Test @@ -61,6 +82,4 @@ public void triggerExceptionUsingXMLStreamWriter() throws Exception { public void triggerExceptionUsingOutputStream() throws Exception { SbdhWriter.write(Mockito.mock(OutputStream.class), null); } - - } diff --git a/peppol-sbdh/src/test/resources/peppol-sbdh-1.00.xml b/peppol-sbdh/src/test/resources/peppol-sbdh-1.00.xml new file mode 100644 index 00000000..ee8539bb --- /dev/null +++ b/peppol-sbdh/src/test/resources/peppol-sbdh-1.00.xml @@ -0,0 +1,29 @@ + + + 1.0 + + 9908:810418052 + + + 9908:810418052 + + + urn:oasis:names:specification:ubl:schema:xsd:Invoice-2 + 2.1 + 7f58475e-a9cc-4386-904c-cf09c2662c19 + Invoice + 2017-12-06T10:17:05.734+01:00 + + + + DOCUMENTID + + urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:www.cenbii.eu:transaction:biitrns010:ver2.0:extended:urn:www.peppol.eu:bis:peppol4a:ver2.0::2.1 + + + + PROCESSID + urn:www.cenbii.eu:profile:bii04:ver2.0 + + + \ No newline at end of file diff --git a/peppol-sbdh/src/test/resources/peppol-sbdh-1.01.xml b/peppol-sbdh/src/test/resources/peppol-sbdh-1.01.xml new file mode 100644 index 00000000..114465df --- /dev/null +++ b/peppol-sbdh/src/test/resources/peppol-sbdh-1.01.xml @@ -0,0 +1,29 @@ + + + 1.0 + + 9908:810418052 + + + 9908:810418052 + + + EDIFACT + D.14B + 7f58475e-a9cc-4386-904c-cf09c2662c19 + INVOIC + 2017-12-06T10:17:05.734+01:00 + + + + DOCUMENTID + urn:cen.eu:en16931:2017 + busdox-docid-edifact + + + PROCESSID + bdx:noprocess + bdx-procid-transport + + + \ No newline at end of file diff --git a/peppol-security/src/main/java/no/difi/vefa/peppol/security/ModeDetector.java b/peppol-security/src/main/java/no/difi/vefa/peppol/security/ModeDetector.java index 5c6a876d..ebe7c847 100644 --- a/peppol-security/src/main/java/no/difi/vefa/peppol/security/ModeDetector.java +++ b/peppol-security/src/main/java/no/difi/vefa/peppol/security/ModeDetector.java @@ -33,11 +33,13 @@ public class ModeDetector { - private static Logger logger = LoggerFactory.getLogger(ModeDetector.class); + private static final Logger LOGGER = LoggerFactory.getLogger(ModeDetector.class); public static Mode detect(X509Certificate certificate) throws PeppolLoadingException { - Config config = ConfigFactory.load(); + return detect(certificate, ConfigFactory.load()); + } + public static Mode detect(X509Certificate certificate, Config config) throws PeppolLoadingException { for (String token : config.getObject("mode").keySet()) { if (!"default".equals(token)) { try { @@ -46,7 +48,7 @@ public static Mode detect(X509Certificate certificate) throws PeppolLoadingExcep .validate(Service.ALL, certificate); return mode; } catch (PeppolSecurityException e) { - logger.info("Detection error ({}): {}", token, e.getMessage()); + LOGGER.info("Detection error ({}): {}", token, e.getMessage()); } } } diff --git a/peppol-security/src/test/java/no/difi/vefa/peppol/security/ModeDetectorTest.java b/peppol-security/src/test/java/no/difi/vefa/peppol/security/ModeDetectorTest.java index ec58d835..d598f3a4 100644 --- a/peppol-security/src/test/java/no/difi/vefa/peppol/security/ModeDetectorTest.java +++ b/peppol-security/src/test/java/no/difi/vefa/peppol/security/ModeDetectorTest.java @@ -39,7 +39,7 @@ public void simpleDetectError() throws Exception { ModeDetector.detect(certificate).getString("security.pki"); } - @Test + @Test(enabled = false) public void simpleDetectProduction() throws Exception { X509Certificate certificate = Validator.getCertificate(getClass().getResourceAsStream("/ap-difi-prod.cer")); Assert.assertEquals(ModeDetector.detect(certificate).getString("security.pki"), "/pki/peppol-production.xml"); diff --git a/peppol-security/src/test/java/no/difi/vefa/peppol/security/util/DifiCertificateValidatorTest.java b/peppol-security/src/test/java/no/difi/vefa/peppol/security/util/DifiCertificateValidatorTest.java index 9dff9993..ae765cd7 100644 --- a/peppol-security/src/test/java/no/difi/vefa/peppol/security/util/DifiCertificateValidatorTest.java +++ b/peppol-security/src/test/java/no/difi/vefa/peppol/security/util/DifiCertificateValidatorTest.java @@ -40,7 +40,7 @@ public void loadingException() throws PeppolLoadingException { mode.initiate(DifiCertificateValidator.class); } - @Test + @Test(enabled = false) public void simpleApProd() throws PeppolLoadingException, CertificateValidationException, PeppolSecurityException { CertificateValidator validator = Mode.of(Mode.PRODUCTION).initiate(DifiCertificateValidator.class); validator.validate(Service.AP, Validator.getCertificate(getClass().getResourceAsStream("/ap-difi-prod.cer"))); diff --git a/pom.xml b/pom.xml index 0f7b7472..0f5da7f0 100644 --- a/pom.xml +++ b/pom.xml @@ -99,7 +99,7 @@ org.mockito mockito-core - 2.8.47 + 2.13.0 test @@ -160,7 +160,7 @@ org.apache.httpcomponents httpclient - 4.5.3 + 4.5.4 @@ -174,7 +174,7 @@ org.bouncycastle bcpkix-jdk15on - 1.57 + 1.58 @@ -214,7 +214,7 @@ commons-codec commons-codec - 1.10 + 1.11