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

pcongiusti pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 4c2ab5cfac66 fix(core): util class check hardening
4c2ab5cfac66 is described below

commit 4c2ab5cfac662a7e1eaf6b5c9157c541a6033134
Author: Pasquale Congiusti <[email protected]>
AuthorDate: Fri Dec 12 09:55:46 2025 +0100

    fix(core): util class check hardening
    
    Additionally fixing a few compilation warnings in test.
---
 .../org/apache/camel/util/AnnotationHelper.java    |  4 +-
 .../main/java/org/apache/camel/util/Scanner.java   |  2 +
 .../camel/util/CamelCaseOrderedPropertiesTest.java |  4 +-
 .../apache/camel/util/OrderedPropertiesTest.java   |  4 +-
 .../java/org/apache/camel/util/ScannerTest.java    | 57 +++++++++++-----------
 .../java/org/apache/camel/util/TimeUtilsTest.java  |  2 +-
 .../java/org/apache/camel/util/URISupportTest.java | 14 +++---
 .../SizedScheduledExecutorServiceTest.java         | 41 ++++++++--------
 .../concurrent/SynchronousExecutorServiceTest.java | 48 ++++++++++--------
 9 files changed, 97 insertions(+), 79 deletions(-)

diff --git 
a/core/camel-util/src/main/java/org/apache/camel/util/AnnotationHelper.java 
b/core/camel-util/src/main/java/org/apache/camel/util/AnnotationHelper.java
index b6738c5af1d6..128b626eb5f3 100644
--- a/core/camel-util/src/main/java/org/apache/camel/util/AnnotationHelper.java
+++ b/core/camel-util/src/main/java/org/apache/camel/util/AnnotationHelper.java
@@ -80,7 +80,9 @@ public final class AnnotationHelper {
         if (checkMetaAnnotations) {
             for (Annotation a : elem.getAnnotations()) {
                 for (Annotation meta : a.annotationType().getAnnotations()) {
-                    if 
(meta.annotationType().getName().equals(annotationType.getName())) {
+                    // NOTE: we perform an equality check as, by design, this 
has
+                    // to be also supported in OSGI environments, therefore, 
instance equality may differ.
+                    if 
(meta.annotationType().getName().equals(annotationType.getName())) { // NOSONAR
                         return true;
                     }
                 }
diff --git a/core/camel-util/src/main/java/org/apache/camel/util/Scanner.java 
b/core/camel-util/src/main/java/org/apache/camel/util/Scanner.java
index 23cba9b6e3e2..9d3861d4d31b 100644
--- a/core/camel-util/src/main/java/org/apache/camel/util/Scanner.java
+++ b/core/camel-util/src/main/java/org/apache/camel/util/Scanner.java
@@ -82,6 +82,8 @@ public final class Scanner implements Iterator<String>, 
Closeable {
         this(new InputStreamReader(Objects.requireNonNull(source, "source"), 
toDecoder(charsetName)), cachePattern(pattern));
     }
 
+    @SuppressWarnings("resource")
+    // The stream will be closed by the class lifecycle accordingly.
     public Scanner(File source, String charsetName, String pattern) throws 
FileNotFoundException {
         this(new FileInputStream(Objects.requireNonNull(source, 
"source")).getChannel(), charsetName, pattern);
     }
diff --git 
a/core/camel-util/src/test/java/org/apache/camel/util/CamelCaseOrderedPropertiesTest.java
 
b/core/camel-util/src/test/java/org/apache/camel/util/CamelCaseOrderedPropertiesTest.java
index de69f5dd1e19..bb5d31d8569a 100644
--- 
a/core/camel-util/src/test/java/org/apache/camel/util/CamelCaseOrderedPropertiesTest.java
+++ 
b/core/camel-util/src/test/java/org/apache/camel/util/CamelCaseOrderedPropertiesTest.java
@@ -33,7 +33,7 @@ public class CamelCaseOrderedPropertiesTest {
 
         assertEquals(2, prop.size());
 
-        Iterator it = prop.keySet().iterator();
+        Iterator<Object> it = prop.keySet().iterator();
         assertEquals("hello-world", it.next());
         assertEquals("camel.main.stream-caching-enabled", it.next());
 
@@ -56,7 +56,7 @@ public class CamelCaseOrderedPropertiesTest {
 
         assertEquals(4, prop.size());
 
-        Iterator it = prop.keySet().iterator();
+        Iterator<Object> it = prop.keySet().iterator();
         assertEquals("hello", it.next());
         assertEquals("camel.component.seda.concurrent-consumers", it.next());
         assertEquals("camel.component.seda.queueSize", it.next());
diff --git 
a/core/camel-util/src/test/java/org/apache/camel/util/OrderedPropertiesTest.java
 
b/core/camel-util/src/test/java/org/apache/camel/util/OrderedPropertiesTest.java
index 8ae4fdca6933..00c34d328703 100644
--- 
a/core/camel-util/src/test/java/org/apache/camel/util/OrderedPropertiesTest.java
+++ 
b/core/camel-util/src/test/java/org/apache/camel/util/OrderedPropertiesTest.java
@@ -36,7 +36,7 @@ public class OrderedPropertiesTest {
 
         assertEquals(5, prop.size());
 
-        Iterator it = prop.keySet().iterator();
+        Iterator<Object> it = prop.keySet().iterator();
         assertEquals("c", it.next());
         assertEquals("d", it.next());
         assertEquals("e", it.next());
@@ -58,7 +58,7 @@ public class OrderedPropertiesTest {
 
         assertEquals(4, prop.size());
 
-        Iterator it = prop.keySet().iterator();
+        Iterator<Object> it = prop.keySet().iterator();
         assertEquals("hello", it.next());
         assertEquals("camel.component.seda.concurrent-consumers", it.next());
         assertEquals("camel.component.seda.queueSize", it.next());
diff --git 
a/core/camel-util/src/test/java/org/apache/camel/util/ScannerTest.java 
b/core/camel-util/src/test/java/org/apache/camel/util/ScannerTest.java
index f8496c2c3fa5..21dca1425199 100644
--- a/core/camel-util/src/test/java/org/apache/camel/util/ScannerTest.java
+++ b/core/camel-util/src/test/java/org/apache/camel/util/ScannerTest.java
@@ -17,6 +17,7 @@
 package org.apache.camel.util;
 
 import java.io.ByteArrayInputStream;
+import java.io.IOException;
 import java.io.InputStream;
 import java.io.PipedInputStream;
 import java.io.PipedOutputStream;
@@ -28,34 +29,34 @@ import org.junit.jupiter.api.Test;
 public class ScannerTest {
 
     @Test
-    public void testScannerString() {
+    public void testScannerString() throws IOException {
         String d = "data1\ndata2\ndata3\n";
 
-        Scanner s = new Scanner(d, "\n");
-
-        Assertions.assertTrue(s.hasNext());
-        Assertions.assertEquals("data1", s.next());
-        Assertions.assertTrue(s.hasNext());
-        Assertions.assertEquals("data2", s.next());
-        Assertions.assertTrue(s.hasNext());
-        Assertions.assertEquals("data3", s.next());
-        Assertions.assertFalse(s.hasNext());
+        try (Scanner s = new Scanner(d, "\n")) {
+            Assertions.assertTrue(s.hasNext());
+            Assertions.assertEquals("data1", s.next());
+            Assertions.assertTrue(s.hasNext());
+            Assertions.assertEquals("data2", s.next());
+            Assertions.assertTrue(s.hasNext());
+            Assertions.assertEquals("data3", s.next());
+            Assertions.assertFalse(s.hasNext());
+        }
     }
 
     @Test
-    public void testScannerInputStream() {
+    public void testScannerInputStream() throws IOException {
         String d = "data1\ndata2\ndata3\n";
         InputStream is = new 
ByteArrayInputStream(d.getBytes(StandardCharsets.UTF_8));
 
-        Scanner s = new Scanner(is, "UTF-8", "\n");
-
-        Assertions.assertTrue(s.hasNext());
-        Assertions.assertEquals("data1", s.next());
-        Assertions.assertTrue(s.hasNext());
-        Assertions.assertEquals("data2", s.next());
-        Assertions.assertTrue(s.hasNext());
-        Assertions.assertEquals("data3", s.next());
-        Assertions.assertFalse(s.hasNext());
+        try (Scanner s = new Scanner(is, "UTF-8", "\n")) {
+            Assertions.assertTrue(s.hasNext());
+            Assertions.assertEquals("data1", s.next());
+            Assertions.assertTrue(s.hasNext());
+            Assertions.assertEquals("data2", s.next());
+            Assertions.assertTrue(s.hasNext());
+            Assertions.assertEquals("data3", s.next());
+            Assertions.assertFalse(s.hasNext());
+        }
     }
 
     @Test
@@ -68,14 +69,14 @@ public class ScannerTest {
         pos.write("data3\n".getBytes());
         pos.flush();
 
-        Scanner s = new Scanner(is, "UTF-8", "\n");
-
-        Assertions.assertTrue(s.hasNext());
-        Assertions.assertEquals("data1", s.next());
-        Assertions.assertTrue(s.hasNext());
-        Assertions.assertEquals("data2", s.next());
-        Assertions.assertTrue(s.hasNext());
-        Assertions.assertEquals("data3", s.next());
+        try (Scanner s = new Scanner(is, "UTF-8", "\n")) {
+            Assertions.assertTrue(s.hasNext());
+            Assertions.assertEquals("data1", s.next());
+            Assertions.assertTrue(s.hasNext());
+            Assertions.assertEquals("data2", s.next());
+            Assertions.assertTrue(s.hasNext());
+            Assertions.assertEquals("data3", s.next());
+        }
     }
 
 }
diff --git 
a/core/camel-util/src/test/java/org/apache/camel/util/TimeUtilsTest.java 
b/core/camel-util/src/test/java/org/apache/camel/util/TimeUtilsTest.java
index 68fa4a689a03..f6f5cae97c96 100644
--- a/core/camel-util/src/test/java/org/apache/camel/util/TimeUtilsTest.java
+++ b/core/camel-util/src/test/java/org/apache/camel/util/TimeUtilsTest.java
@@ -78,7 +78,7 @@ public class TimeUtilsTest {
 
         Thread.sleep(Duration.ofSeconds(1).toMillis());
 
-        long taken = TimeUtils.elapsedMillisSince(startTime.getTime());
+        long taken = System.currentTimeMillis() - startTime.getTime();
         assertTrue(taken >= 1000, "Elapsed time should be equal to or greater 
than 1000 ms but was " + taken);
         assertTrue(taken < 1500, "Elapsed time should be smaller than 1500 ms 
but was " + taken);
     }
diff --git 
a/core/camel-util/src/test/java/org/apache/camel/util/URISupportTest.java 
b/core/camel-util/src/test/java/org/apache/camel/util/URISupportTest.java
index 83cb36d0cf19..b1e6d73c6295 100644
--- a/core/camel-util/src/test/java/org/apache/camel/util/URISupportTest.java
+++ b/core/camel-util/src/test/java/org/apache/camel/util/URISupportTest.java
@@ -442,27 +442,27 @@ public class URISupportTest {
     public void testScanRaw() {
         List<Pair<Integer>> pairs1 = 
URISupport.scanRaw("password=RAW(++?5w0rd)&serviceName=somechat");
         assertEquals(1, pairs1.size());
-        assertEquals(new Pair(9, 21), pairs1.get(0));
+        assertEquals(new Pair<Integer>(9, 21), pairs1.get(0));
 
         List<Pair<Integer>> pairs2 = 
URISupport.scanRaw("password=RAW{++?5w0rd}&serviceName=somechat");
         assertEquals(1, pairs2.size());
-        assertEquals(new Pair(9, 21), pairs2.get(0));
+        assertEquals(new Pair<Integer>(9, 21), pairs2.get(0));
 
         List<Pair<Integer>> pairs3 = 
URISupport.scanRaw("password=RAW{++?)&0rd}&serviceName=somechat");
         assertEquals(1, pairs3.size());
-        assertEquals(new Pair(9, 21), pairs3.get(0));
+        assertEquals(new Pair<Integer>(9, 21), pairs3.get(0));
 
         List<Pair<Integer>> pairs4 = 
URISupport.scanRaw("password1=RAW(++?}&0rd)&password2=RAW{++?)&0rd}&serviceName=somechat");
         assertEquals(2, pairs4.size());
-        assertEquals(new Pair(10, 22), pairs4.get(0));
-        assertEquals(new Pair(34, 46), pairs4.get(1));
+        assertEquals(new Pair<Integer>(10, 22), pairs4.get(0));
+        assertEquals(new Pair<Integer>(34, 46), pairs4.get(1));
     }
 
     @Test
     public void testIsRaw() {
         List<Pair<Integer>> pairs = Arrays.asList(
-                new Pair(3, 5),
-                new Pair(8, 10));
+                new Pair<Integer>(3, 5),
+                new Pair<Integer>(8, 10));
         for (int i = 0; i < 3; i++) {
             assertFalse(URISupport.isRaw(i, pairs));
         }
diff --git 
a/core/camel-util/src/test/java/org/apache/camel/util/concurrent/SizedScheduledExecutorServiceTest.java
 
b/core/camel-util/src/test/java/org/apache/camel/util/concurrent/SizedScheduledExecutorServiceTest.java
index 80979e2ed862..737d5b4dfb8f 100644
--- 
a/core/camel-util/src/test/java/org/apache/camel/util/concurrent/SizedScheduledExecutorServiceTest.java
+++ 
b/core/camel-util/src/test/java/org/apache/camel/util/concurrent/SizedScheduledExecutorServiceTest.java
@@ -35,25 +35,28 @@ public class SizedScheduledExecutorServiceTest {
     public void testSizedScheduledExecutorService() {
         ScheduledThreadPoolExecutor delegate = new 
ScheduledThreadPoolExecutor(5);
 
+        @SuppressWarnings("resource")
+        // Will be shutdown in the finally clause.
         SizedScheduledExecutorService sized = new 
SizedScheduledExecutorService(delegate, 2);
-
-        Runnable task = new Runnable() {
-            @Override
-            public void run() {
-                // noop
-            }
-        };
-
-        sized.schedule(task, 2, TimeUnit.SECONDS);
-        sized.schedule(task, 3, TimeUnit.SECONDS);
-
-        RejectedExecutionException e
-                = assertThrows(RejectedExecutionException.class, () -> 
sized.schedule(task, 4, TimeUnit.SECONDS),
-                        "Should have thrown a RejectedExecutionException");
-        assertEquals("Task rejected due queue size limit reached", 
e.getMessage());
-
-        sized.shutdownNow();
-        assertTrue(sized.isShutdown() || sized.isTerminating(), "Should be 
shutdown");
-        assertTrue(delegate.isShutdown() || sized.isTerminating(), "Should be 
shutdown");
+        try {
+            Runnable task = new Runnable() {
+                @Override
+                public void run() {
+                    // noop
+                }
+            };
+
+            sized.schedule(task, 2, TimeUnit.SECONDS);
+            sized.schedule(task, 3, TimeUnit.SECONDS);
+
+            RejectedExecutionException e
+                    = assertThrows(RejectedExecutionException.class, () -> 
sized.schedule(task, 4, TimeUnit.SECONDS),
+                            "Should have thrown a RejectedExecutionException");
+            assertEquals("Task rejected due queue size limit reached", 
e.getMessage());
+        } finally {
+            sized.shutdownNow();
+            assertTrue(sized.isShutdown() || sized.isTerminating(), "Should be 
shutdown");
+            assertTrue(delegate.isShutdown() || sized.isTerminating(), "Should 
be shutdown");
+        }
     }
 }
diff --git 
a/core/camel-util/src/test/java/org/apache/camel/util/concurrent/SynchronousExecutorServiceTest.java
 
b/core/camel-util/src/test/java/org/apache/camel/util/concurrent/SynchronousExecutorServiceTest.java
index 8419fbbb5cc7..e0b2d5e94ed9 100644
--- 
a/core/camel-util/src/test/java/org/apache/camel/util/concurrent/SynchronousExecutorServiceTest.java
+++ 
b/core/camel-util/src/test/java/org/apache/camel/util/concurrent/SynchronousExecutorServiceTest.java
@@ -31,30 +31,40 @@ public class SynchronousExecutorServiceTest {
     @Test
     public void testSynchronousExecutorService() {
         String name1 = Thread.currentThread().getName();
-
+        @SuppressWarnings("resource")
+        // Will be shutdown in the finally clause.
         ExecutorService service = new SynchronousExecutorService();
-        service.execute(new Runnable() {
-            public void run() {
-                invoked = true;
-                name2 = Thread.currentThread().getName();
-            }
-        });
-
-        assertTrue(invoked, "Should have been invoked");
-        assertEquals(name1, name2, "Should use same thread");
+        try {
+            service.execute(new Runnable() {
+                public void run() {
+                    invoked = true;
+                    name2 = Thread.currentThread().getName();
+                }
+            });
+
+            assertTrue(invoked, "Should have been invoked");
+            assertEquals(name1, name2, "Should use same thread");
+        } finally {
+            service.shutdown();
+        }
     }
 
     @Test
     public void testSynchronousExecutorServiceShutdown() {
+        @SuppressWarnings("resource")
+        // Will be shutdown in the finally clause.
         ExecutorService service = new SynchronousExecutorService();
-        service.execute(new Runnable() {
-            public void run() {
-                invoked = true;
-            }
-        });
-        service.shutdown();
-
-        assertTrue(service.isShutdown());
-        assertTrue(service.isTerminated());
+        try {
+            service.execute(new Runnable() {
+                public void run() {
+                    invoked = true;
+                }
+            });
+        } finally {
+            service.shutdown();
+
+            assertTrue(service.isShutdown());
+            assertTrue(service.isTerminated());
+        }
     }
 }

Reply via email to