You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by co...@apache.org on 2021/02/23 08:50:34 UTC

[santuario-xml-security-java] branch master updated: Fixing PMD issues

This is an automated email from the ASF dual-hosted git repository.

coheigea pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/santuario-xml-security-java.git


The following commit(s) were added to refs/heads/master by this push:
     new feffbcd  Fixing PMD issues
feffbcd is described below

commit feffbcd9dcf2612110e238db918b1691787138de
Author: Colm O hEigeartaigh <co...@apache.org>
AuthorDate: Tue Feb 23 08:50:18 2021 +0000

    Fixing PMD issues
---
 etc/santuario-pmd-ruleset.xml                      |   7 +-
 pom.xml                                            |   2 +-
 src/main/java/org/apache/xml/security/Init.java    |   2 +-
 .../c14n/implementations/CanonicalizerBase.java    |   4 +-
 .../security/encryption/AbstractSerializer.java    |   9 +-
 .../xml/security/signature/XMLSignatureInput.java  |   2 +-
 .../input/AbstractDecryptInputProcessor.java       |  18 ++--
 .../output/AbstractEncryptOutputProcessor.java     |   4 +-
 .../output/AbstractSignatureOutputProcessor.java   |   4 +-
 .../canonicalizer/CanonicalizerBase.java           |   4 +-
 .../apache/xml/security/utils/RFC2253Parser.java   | 114 +++++++++++----------
 .../org/apache/xml/security/utils/XMLUtils.java    |   2 +-
 .../implementations/ResolverLocalFilesystem.java   |   2 +-
 13 files changed, 90 insertions(+), 84 deletions(-)

diff --git a/etc/santuario-pmd-ruleset.xml b/etc/santuario-pmd-ruleset.xml
index e2ea275..6879d06 100644
--- a/etc/santuario-pmd-ruleset.xml
+++ b/etc/santuario-pmd-ruleset.xml
@@ -29,9 +29,12 @@
      <exclude name="AccessorMethodGeneration" />
      <exclude name="ArrayIsStoredDirectly" />
      <exclude name="AvoidReassigningParameters" />
+     <exclude name="AvoidReassigningLoopVariables" />
      <exclude name="AvoidUsingHardCodedIP" />
+     <exclude name="AvoidMessageDigestField" />
      <exclude name="ConstantsInInterface" />
      <exclude name="ForLoopCanBeForeach" />
+     <exclude name="ForLoopVariableCount" />
      <exclude name="GuardLogStatement" />
      <exclude name="JUnitAssertionsShouldIncludeMessage"/>
      <exclude name="JUnitTestContainsTooManyAsserts" />
@@ -43,6 +46,7 @@
      <exclude name="PreserveStackTrace" />
      <exclude name="SwitchStmtsShouldHaveDefault" />
      <exclude name="SystemPrintln" />
+     <exclude name="UnusedAssignment" />
      <exclude name="UnusedPrivateMethod" />
      <exclude name="UseAssertSameInsteadOfAssertTrue" />
      <exclude name="UseVarargs" />
@@ -54,6 +58,7 @@
      <exclude name="AvoidRethrowingException" />
      <exclude name="AvoidThrowingNullPointerException" />
      <exclude name="AvoidThrowingRawExceptionTypes" />
+     <exclude name="AvoidUncheckedExceptionsInSignatures" />
      <exclude name="CouplingBetweenObjects" />
      <exclude name="CyclomaticComplexity" />
      <exclude name="DataClass" />
@@ -90,7 +95,7 @@
      <exclude name="DataflowAnomalyAnalysis" />
      <exclude name="DoNotCallGarbageCollectionExplicitly" />
      <exclude name="EmptyCatchBlock" />
-     <exclude name="InvalidSlf4jMessageFormat" />
+     <exclude name="InvalidLogMessageFormat" />
      <exclude name="JUnitSpelling" />
      <exclude name="MissingSerialVersionUID" />
      <exclude name="NullAssignment" />
diff --git a/pom.xml b/pom.xml
index 0f23f67..b39f928 100644
--- a/pom.xml
+++ b/pom.xml
@@ -118,7 +118,7 @@
                     <sourceEncoding>UTF-8</sourceEncoding>
                     <failOnViolation>true</failOnViolation>
                     <verbose>true</verbose>
-                    <includeTests>true</includeTests>
+                    <includeTests>false</includeTests>
                     <targetJdk>${targetJdk}</targetJdk>
                 </configuration>
                 <executions>
diff --git a/src/main/java/org/apache/xml/security/Init.java b/src/main/java/org/apache/xml/security/Init.java
index 788e38b..64d3c2e 100644
--- a/src/main/java/org/apache/xml/security/Init.java
+++ b/src/main/java/org/apache/xml/security/Init.java
@@ -76,7 +76,7 @@ public class Init {
             return;
         }
 
-        InputStream is =
+        InputStream is =    //NOPMD
             AccessController.doPrivileged(
                 (PrivilegedAction<InputStream>)
                     () -> {
diff --git a/src/main/java/org/apache/xml/security/c14n/implementations/CanonicalizerBase.java b/src/main/java/org/apache/xml/security/c14n/implementations/CanonicalizerBase.java
index 06852a2..473199b 100644
--- a/src/main/java/org/apache/xml/security/c14n/implementations/CanonicalizerBase.java
+++ b/src/main/java/org/apache/xml/security/c14n/implementations/CanonicalizerBase.java
@@ -207,7 +207,7 @@ public abstract class CanonicalizerBase extends CanonicalizerSpi {
         Node sibling = null;
         Node parentNode = null;
         Map<String, byte[]> cache = new HashMap<>();
-        do {
+        do {    //NOPMD
             switch (currentNode.getNodeType()) {
 
             case Node.ENTITY_NODE :
@@ -334,7 +334,7 @@ public abstract class CanonicalizerBase extends CanonicalizerSpi {
         Node parentNode = null;
         int documentLevel = NODE_BEFORE_DOCUMENT_ELEMENT;
         Map<String, byte[]> cache = new HashMap<>();
-        do {
+        do {    //NOPMD
             switch (currentNode.getNodeType()) {
 
             case Node.ENTITY_NODE :
diff --git a/src/main/java/org/apache/xml/security/encryption/AbstractSerializer.java b/src/main/java/org/apache/xml/security/encryption/AbstractSerializer.java
index 2beee67..38142e5 100644
--- a/src/main/java/org/apache/xml/security/encryption/AbstractSerializer.java
+++ b/src/main/java/org/apache/xml/security/encryption/AbstractSerializer.java
@@ -21,7 +21,6 @@ package org.apache.xml.security.encryption;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.OutputStreamWriter;
-import java.io.UnsupportedEncodingException;
 import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import java.util.Map;
@@ -84,8 +83,8 @@ public abstract class AbstractSerializer implements Serializer {
 
     protected static byte[] createContext(byte[] source, Node ctx) throws XMLEncryptionException {
         // Create the context to parse the document against
-        try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) {
-            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(byteArrayOutputStream, StandardCharsets.UTF_8);
+        try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(byteArrayOutputStream, StandardCharsets.UTF_8)) {
             outputStreamWriter.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?><dummy");
 
             // Run through each node up to the document node and find any xmlns: nodes
@@ -94,7 +93,7 @@ public abstract class AbstractSerializer implements Serializer {
             while (wk != null) {
                 NamedNodeMap atts = wk.getAttributes();
                 if (atts != null) {
-                    for (int i = 0; i < atts.getLength(); ++i) {
+                    for (int i = 0; i < atts.getLength(); ++i) {    //NOPMD
                         Node att = atts.item(i);
                         String nodeName = att.getNodeName();
                         if (("xmlns".equals(nodeName) || nodeName.startsWith("xmlns:"))
@@ -118,8 +117,6 @@ public abstract class AbstractSerializer implements Serializer {
             outputStreamWriter.close();
 
             return byteArrayOutputStream.toByteArray();
-        } catch (UnsupportedEncodingException e) {
-            throw new XMLEncryptionException(e);
         } catch (IOException e) {
             throw new XMLEncryptionException(e);
         }
diff --git a/src/main/java/org/apache/xml/security/signature/XMLSignatureInput.java b/src/main/java/org/apache/xml/security/signature/XMLSignatureInput.java
index 43882cc..491d3f7 100644
--- a/src/main/java/org/apache/xml/security/signature/XMLSignatureInput.java
+++ b/src/main/java/org/apache/xml/security/signature/XMLSignatureInput.java
@@ -524,7 +524,7 @@ public class XMLSignatureInput {
         if (inputOctetStreamProxy == null) {
             return null;
         }
-        try {
+        try {   //NOPMD
             bytes = JavaUtils.getBytesFromStream(inputOctetStreamProxy);
         } finally {
             inputOctetStreamProxy.close();
diff --git a/src/main/java/org/apache/xml/security/stax/impl/processor/input/AbstractDecryptInputProcessor.java b/src/main/java/org/apache/xml/security/stax/impl/processor/input/AbstractDecryptInputProcessor.java
index 4d1c174..a4695cf 100644
--- a/src/main/java/org/apache/xml/security/stax/impl/processor/input/AbstractDecryptInputProcessor.java
+++ b/src/main/java/org/apache/xml/security/stax/impl/processor/input/AbstractDecryptInputProcessor.java
@@ -281,7 +281,7 @@ public abstract class AbstractDecryptInputProcessor extends AbstractInputProcess
                     nextEvent = subInputProcessorChain.processEvent();
                 }
 
-                InputStream decryptInputStream = null;
+                InputStream decryptInputStream = null;  //NOPMD
                 if (nextEvent.isStartElement() && nextEvent.asStartElement().getName().equals(XMLSecurityConstants.TAG_XOP_INCLUDE)) {
                     try {
                         // Unmarshal the XOP Include Element
@@ -329,8 +329,8 @@ public abstract class AbstractDecryptInputProcessor extends AbstractInputProcess
                     decryptInputStream = decryptionThread.getPipedInputStream();
                 }
 
-                InputStream prologInputStream;
-                InputStream epilogInputStream;
+                InputStream prologInputStream;  //NOPMD
+                InputStream epilogInputStream;  //NOPMD
                 try {
                     prologInputStream = writeWrapperStartElement(xmlSecStartElement);
                     epilogInputStream = writeWrapperEndElement();
@@ -815,7 +815,7 @@ public abstract class AbstractDecryptInputProcessor extends AbstractInputProcess
         public void run() {
 
             try {
-                final OutputStream outputStream;
+                final OutputStream outputStream;    //NOPMD
 
                 final Cipher cipher = getSymmetricCipher();
                 if (cipher.getAlgorithm().toUpperCase().contains("GCM")) {
@@ -826,7 +826,7 @@ public abstract class AbstractDecryptInputProcessor extends AbstractInputProcess
                     outputStream = pipedOutputStream;
                 }
 
-                final CipherOutputStream cipherOutputStream = new CipherOutputStream(outputStream, cipher) {
+                final CipherOutputStream cipherOutputStream = new CipherOutputStream(outputStream, cipher) { //NOPMD
                     //override close() to workaround a bug in oracle-jdk:
                     //authentication failures when using AEAD ciphers are silently ignored...
                     @Override
@@ -841,15 +841,15 @@ public abstract class AbstractDecryptInputProcessor extends AbstractInputProcess
                         }
                     }
                 };
-                IVSplittingOutputStream ivSplittingOutputStream = new IVSplittingOutputStream(
+                IVSplittingOutputStream ivSplittingOutputStream = new IVSplittingOutputStream(  //NOPMD
                         cipherOutputStream,
                         cipher, getSecretKey(), getIvLength());
                 //buffering seems not to help
                 //bufferedOutputStream = new BufferedOutputStream(new Base64OutputStream(ivSplittingOutputStream, false), 8192 * 5);
-                ReplaceableOuputStream replaceableOuputStream = new ReplaceableOuputStream(ivSplittingOutputStream);
-                OutputStream base64OutputStream = new Base64OutputStream(replaceableOuputStream, false);
+                ReplaceableOuputStream replaceableOuputStream = new ReplaceableOuputStream(ivSplittingOutputStream);    //NOPMD
+                OutputStream base64OutputStream = new Base64OutputStream(replaceableOuputStream, false); //NOPMD
                 ivSplittingOutputStream.setParentOutputStream(replaceableOuputStream);
-                OutputStreamWriter outputStreamWriter =
+                OutputStreamWriter outputStreamWriter = //NOPMD
                         new OutputStreamWriter(base64OutputStream,
                                                Charset.forName(inputProcessorChain.getDocumentContext().getEncoding()));
 
diff --git a/src/main/java/org/apache/xml/security/stax/impl/processor/output/AbstractEncryptOutputProcessor.java b/src/main/java/org/apache/xml/security/stax/impl/processor/output/AbstractEncryptOutputProcessor.java
index 4cae594..2b30bf3 100644
--- a/src/main/java/org/apache/xml/security/stax/impl/processor/output/AbstractEncryptOutputProcessor.java
+++ b/src/main/java/org/apache/xml/security/stax/impl/processor/output/AbstractEncryptOutputProcessor.java
@@ -174,7 +174,7 @@ public abstract class AbstractEncryptOutputProcessor extends AbstractOutputProce
                 symmetricCipher.init(Cipher.ENCRYPT_MODE, encryptionPartDef.getSymmetricKey(), parameterSpec);
 
                 characterEventGeneratorOutputStream = new CharacterEventGeneratorOutputStream();
-                Base64OutputStream base64EncoderStream = null;
+                Base64OutputStream base64EncoderStream = null;  //NOPMD
                 if (XMLUtils.isIgnoreLineBreaks()) {
                     base64EncoderStream = new Base64OutputStream(characterEventGeneratorOutputStream, true, 0, null);
                 } else {
@@ -182,7 +182,7 @@ public abstract class AbstractEncryptOutputProcessor extends AbstractOutputProce
                 }
                 base64EncoderStream.write(iv);
 
-                OutputStream outputStream = new CipherOutputStream(base64EncoderStream, symmetricCipher);
+                OutputStream outputStream = new CipherOutputStream(base64EncoderStream, symmetricCipher);   //NOPMD
                 outputStream = applyTransforms(outputStream);
                 //the trimmer output stream is needed to strip away the dummy wrapping element which must be added
                 cipherOutputStream = new TrimmerOutputStream(outputStream, 8192 * 10, 3, 4);
diff --git a/src/main/java/org/apache/xml/security/stax/impl/processor/output/AbstractSignatureOutputProcessor.java b/src/main/java/org/apache/xml/security/stax/impl/processor/output/AbstractSignatureOutputProcessor.java
index 603bb74..fc14cde 100644
--- a/src/main/java/org/apache/xml/security/stax/impl/processor/output/AbstractSignatureOutputProcessor.java
+++ b/src/main/java/org/apache/xml/security/stax/impl/processor/output/AbstractSignatureOutputProcessor.java
@@ -112,8 +112,8 @@ public abstract class AbstractSignatureOutputProcessor extends AbstractOutputPro
             digestAlgo = getSecurityProperties().getSignatureDigestAlgorithm();
         }
 
-        DigestOutputStream digestOutputStream = createMessageDigestOutputStream(digestAlgo);
-        InputStream inputStream = resourceResolver.getInputStreamFromExternalReference();
+        DigestOutputStream digestOutputStream = createMessageDigestOutputStream(digestAlgo);    //NOPMD
+        InputStream inputStream = resourceResolver.getInputStreamFromExternalReference();   //NOPMD
 
         SignaturePartDef signaturePartDef = new SignaturePartDef();
         signaturePartDef.setSecurePart(securePart);
diff --git a/src/main/java/org/apache/xml/security/stax/impl/transformer/canonicalizer/CanonicalizerBase.java b/src/main/java/org/apache/xml/security/stax/impl/transformer/canonicalizer/CanonicalizerBase.java
index 77e3e66..441761f 100644
--- a/src/main/java/org/apache/xml/security/stax/impl/transformer/canonicalizer/CanonicalizerBase.java
+++ b/src/main/java/org/apache/xml/security/stax/impl/transformer/canonicalizer/CanonicalizerBase.java
@@ -254,7 +254,7 @@ public abstract class CanonicalizerBase extends TransformIdentity {
     @Override
     public void transform(final XMLSecEvent xmlSecEvent) throws XMLStreamException {
         try {
-            OutputStream outputStream = getOutputStream();
+            OutputStream outputStream = getOutputStream();  //NOPMD
 
             switch (xmlSecEvent.getEventType()) {
                 case XMLStreamConstants.START_ELEMENT:
@@ -405,7 +405,7 @@ public abstract class CanonicalizerBase extends TransformIdentity {
     @Override
     public void doFinal() throws XMLStreamException {
         if (getTransformer() != null) {
-            UnsyncByteArrayOutputStream baos = (UnsyncByteArrayOutputStream)getOutputStream();
+            UnsyncByteArrayOutputStream baos = (UnsyncByteArrayOutputStream)getOutputStream();  //NOPMD
             try (InputStream is = new UnsyncByteArrayInputStream(baos.toByteArray())) {
                 getTransformer().transform(is);
                 getTransformer().doFinal();
diff --git a/src/main/java/org/apache/xml/security/utils/RFC2253Parser.java b/src/main/java/org/apache/xml/security/utils/RFC2253Parser.java
index 918183e..72ab461 100644
--- a/src/main/java/org/apache/xml/security/utils/RFC2253Parser.java
+++ b/src/main/java/org/apache/xml/security/utils/RFC2253Parser.java
@@ -186,20 +186,21 @@ public class RFC2253Parser {
 
         if (value.startsWith("\"")) {
             StringBuilder sb = new StringBuilder();
-            StringReader sr = new StringReader(value.substring(1, value.length() - 1));
-            int i = 0;
-            char c;
+            try (StringReader sr = new StringReader(value.substring(1, value.length() - 1))) {
+                int i = 0;
+                char c;
 
-            while ((i = sr.read()) > -1) {
-                c = (char) i;
+                while ((i = sr.read()) > -1) {
+                    c = (char) i;
 
-                //the following char is defined at 4.Relationship with RFC1779 and LDAPv2 inrfc2253
-                if (c == ',' || c == '=' || c == '+' || c == '<'
-                    || c == '>' || c == '#' || c == ';') {
-                    sb.append('\\');
-                }
+                    //the following char is defined at 4.Relationship with RFC1779 and LDAPv2 inrfc2253
+                    if (c == ',' || c == '=' || c == '+' || c == '<'
+                            || c == '>' || c == '#' || c == ';') {
+                        sb.append('\\');
+                    }
 
-                sb.append(c);
+                    sb.append(c);
+                }
             }
 
             value = trim(sb.toString());
@@ -259,37 +260,38 @@ public class RFC2253Parser {
      */
     static String changeLess32toRFC(String string) throws IOException {
         StringBuilder sb = new StringBuilder();
-        StringReader sr = new StringReader(string);
         int i = 0;
         char c;
 
-        while ((i = sr.read()) > -1) {
-            c = (char) i;
-
-            if (c == '\\') {
-                sb.append(c);
-
-                char c1 = (char) sr.read();
-                char c2 = (char) sr.read();
-
-                //65 (A) 97 (a)
-                if ((c1 >= 48 && c1 <= 57 || c1 >= 65 && c1 <= 70 || c1 >= 97 && c1 <= 102)
-                    && (c2 >= 48 && c2 <= 57
-                        || c2 >= 65 && c2 <= 70
-                        || c2 >= 97 && c2 <= 102)) {
-                    try {
-                        char ch = (char) Byte.parseByte("" + c1 + c2, 16);
+        try (StringReader sr = new StringReader(string)) {
+            while ((i = sr.read()) > -1) {
+                c = (char) i;
 
-                        sb.append(ch);
-                    } catch (NumberFormatException ex) {
-                        throw new IOException(ex);
+                if (c == '\\') {
+                    sb.append(c);
+
+                    char c1 = (char) sr.read();
+                    char c2 = (char) sr.read();
+
+                    //65 (A) 97 (a)
+                    if ((c1 >= 48 && c1 <= 57 || c1 >= 65 && c1 <= 70 || c1 >= 97 && c1 <= 102)
+                            && (c2 >= 48 && c2 <= 57
+                            || c2 >= 65 && c2 <= 70
+                            || c2 >= 97 && c2 <= 102)) {
+                        try {
+                            char ch = (char) Byte.parseByte("" + c1 + c2, 16);
+
+                            sb.append(ch);
+                        } catch (NumberFormatException ex) {
+                            throw new IOException(ex);
+                        }
+                    } else {
+                        sb.append(c1);
+                        sb.append(c2);
                     }
                 } else {
-                    sb.append(c1);
-                    sb.append(c2);
+                    sb.append(c);
                 }
-            } else {
-                sb.append(c);
             }
         }
 
@@ -305,15 +307,16 @@ public class RFC2253Parser {
      */
     static String changeLess32toXML(String string) throws IOException {
         StringBuilder sb = new StringBuilder();
-        StringReader sr = new StringReader(string);
         int i = 0;
 
-        while ((i = sr.read()) > -1) {
-            if (i < 32) {
-                sb.append('\\');
-                sb.append(Integer.toHexString(i));
-            } else {
-                sb.append((char) i);
+        try (StringReader sr = new StringReader(string)) {
+            while ((i = sr.read()) > -1) {
+                if (i < 32) {
+                    sb.append('\\');
+                    sb.append(Integer.toHexString(i));
+                } else {
+                    sb.append((char) i);
+                }
             }
         }
 
@@ -329,28 +332,29 @@ public class RFC2253Parser {
      */
     static String changeWStoXML(String string) throws IOException {
         StringBuilder sb = new StringBuilder();
-        StringReader sr = new StringReader(string);
         int i = 0;
         char c;
 
-        while ((i = sr.read()) > -1) {
-            c = (char) i;
+        try (StringReader sr = new StringReader(string)) {
+            while ((i = sr.read()) > -1) {
+                c = (char) i;
 
-            if (c == '\\') {
-                char c1 = (char) sr.read();
+                if (c == '\\') {
+                    char c1 = (char) sr.read();
 
-                if (c1 == ' ') {
-                    sb.append('\\');
+                    if (c1 == ' ') {
+                        sb.append('\\');
 
-                    String s = "20";
+                        String s = "20";
 
-                    sb.append(s);
+                        sb.append(s);
+                    } else {
+                        sb.append('\\');
+                        sb.append(c1);
+                    }
                 } else {
-                    sb.append('\\');
-                    sb.append(c1);
+                    sb.append(c);
                 }
-            } else {
-                sb.append(c);
             }
         }
 
diff --git a/src/main/java/org/apache/xml/security/utils/XMLUtils.java b/src/main/java/org/apache/xml/security/utils/XMLUtils.java
index 277b685..6679832 100644
--- a/src/main/java/org/apache/xml/security/utils/XMLUtils.java
+++ b/src/main/java/org/apache/xml/security/utils/XMLUtils.java
@@ -575,7 +575,7 @@ public final class XMLUtils {
         Node parent = null;
         Node sibling = null;
         final String namespaceNs = Constants.NamespaceSpecNS;
-        do {
+        do {    //NOPMD
             switch (node.getNodeType()) {
             case Node.ELEMENT_NODE :
                 Element element = (Element) node;
diff --git a/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverLocalFilesystem.java b/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverLocalFilesystem.java
index 91d52f3..8a1ea66 100644
--- a/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverLocalFilesystem.java
+++ b/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverLocalFilesystem.java
@@ -51,7 +51,7 @@ public class ResolverLocalFilesystem extends ResourceResolverSpi {
 
             String fileName =
                 ResolverLocalFilesystem.translateUriToFilename(uriNew.toString());
-            InputStream inputStream = Files.newInputStream(Paths.get(fileName));
+            InputStream inputStream = Files.newInputStream(Paths.get(fileName));    //NOPMD
             XMLSignatureInput result = new XMLSignatureInput(inputStream);
             result.setSecureValidation(context.secureValidation);