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());
+ }
}
}