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

lihan pushed a commit to branch 8.5.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/8.5.x by this push:
     new ccdb4995cd Ensure brackets are closed in PoolProperties.toString
ccdb4995cd is described below

commit ccdb4995cdf98362732664b4a5077af53926d2c6
Author: Magnus Reftel <magnus.ref...@skatteetaten.no>
AuthorDate: Mon Apr 24 12:41:51 2023 +0200

    Ensure brackets are closed in PoolProperties.toString
---
 .../apache/tomcat/jdbc/pool/PoolProperties.java    |  1 +
 .../tomcat/jdbc/pool/PoolPropertiesTest.java       | 39 ++++++++++++++++++++++
 2 files changed, 40 insertions(+)

diff --git 
a/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolProperties.java
 
b/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolProperties.java
index f333c3de59..73479e250c 100644
--- 
a/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolProperties.java
+++ 
b/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolProperties.java
@@ -848,6 +848,7 @@ public class PoolProperties implements PoolConfiguration, 
Cloneable, Serializabl
                     break;
                 }
             }
+            buf.append(']');
         }catch (Exception x) {
             //shouldn't happen
             log.debug("toString() call failed", x);
diff --git 
a/modules/jdbc-pool/src/test/java/org/apache/tomcat/jdbc/pool/PoolPropertiesTest.java
 
b/modules/jdbc-pool/src/test/java/org/apache/tomcat/jdbc/pool/PoolPropertiesTest.java
new file mode 100644
index 0000000000..b475d64f23
--- /dev/null
+++ 
b/modules/jdbc-pool/src/test/java/org/apache/tomcat/jdbc/pool/PoolPropertiesTest.java
@@ -0,0 +1,39 @@
+package org.apache.tomcat.jdbc.pool;
+
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class PoolPropertiesTest {
+    private static final String DEFAULT_USER = "username_def";
+    private static final String DEFAULT_PASSWD = "password_def";
+    @Test
+    public void toStringOutputShouldHaveBalancedBrackets() {
+        PoolProperties properties = new PoolProperties();
+        properties.setUsername(DEFAULT_USER);
+        properties.setPassword(DEFAULT_PASSWD);
+        properties.setAlternateUsernameAllowed(true);
+        properties.setInitialSize(0);
+        properties.setRemoveAbandoned(false);
+        properties.setTimeBetweenEvictionRunsMillis(-1);
+
+        String asString = properties.toString();
+
+        List<Character> stack = new ArrayList<>();
+        for (char c : asString.toCharArray()) {
+            switch (c) {
+                case '{':
+                case '(':
+                case '[': stack.add(c); break;
+                case '}': Assert.assertEquals('{', stack.remove(stack.size() - 
1).charValue()); break;
+                case ')': Assert.assertEquals('(', stack.remove(stack.size() - 
1).charValue()); break;
+                case ']': Assert.assertEquals('[', stack.remove(stack.size() - 
1).charValue()); break;
+                default: break;
+            }
+        }
+        Assert.assertEquals("All brackets should have been closed", 0, 
stack.size());
+    }
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to