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

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


The following commit(s) were added to refs/heads/main by this push:
     new db10322  Avoid compiling regular expressions in loops
db10322 is described below

commit db10322bb8a677158cbabdb2b11ca7fbffc3a577
Author: Peter Palaga <[email protected]>
AuthorDate: Tue Mar 22 12:14:07 2022 +0100

    Avoid compiling regular expressions in loops
---
 .../camel/quarkus/core/deployment/CamelContextProcessor.java      | 4 +++-
 .../camel/quarkus/core/deployment/spi/CamelServiceFilter.java     | 8 --------
 .../consul/client/deployment/ConsulClientSupportProcessor.java    | 5 ++++-
 .../camel/quarkus/support/spring/test/SpringSupportTest.java      | 4 +++-
 .../quarkus/component/xchange/deployment/XchangeProcessor.java    | 4 +++-
 5 files changed, 13 insertions(+), 12 deletions(-)

diff --git 
a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelContextProcessor.java
 
b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelContextProcessor.java
index bbf3d02..674b4c8 100644
--- 
a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelContextProcessor.java
+++ 
b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelContextProcessor.java
@@ -20,6 +20,7 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.function.BooleanSupplier;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 import io.quarkus.arc.deployment.BeanContainerBuildItem;
@@ -148,10 +149,11 @@ public class CamelContextProcessor {
         // For management events the event class simple name is collected as 
users can
         // observe events on either the Camel event interface or the concrete 
event class, and
         // these are located in different packages
+        final Pattern pattern = 
Pattern.compile("org.apache.camel(?!.quarkus).*Event$");
         Set<String> observedManagementEvents = beanDiscovery.getObservers()
                 .stream()
                 .map(observerInfo -> 
observerInfo.getObservedType().name().toString())
-                .filter(className -> 
className.matches("org.apache.camel(?!.quarkus).*Event$"))
+                .filter(className -> pattern.matcher(className).matches())
                 .map(className -> CamelSupport.loadClass(className, 
Thread.currentThread().getContextClassLoader()))
                 .map(observedEventClass -> observedEventClass.getSimpleName())
                 
.collect(Collectors.collectingAndThen(Collectors.toUnmodifiableSet(), 
HashSet::new));
diff --git 
a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/spi/CamelServiceFilter.java
 
b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/spi/CamelServiceFilter.java
index fac45a3..38ab95e 100644
--- 
a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/spi/CamelServiceFilter.java
+++ 
b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/spi/CamelServiceFilter.java
@@ -46,15 +46,7 @@ public interface CamelServiceFilter extends 
Predicate<CamelServiceBuildItem> {
         return serviceInfo -> serviceInfo.name.equals(name);
     }
 
-    static CamelServiceFilter forNameMatching(String regex) {
-        return serviceInfo -> serviceInfo.name.matches(regex);
-    }
-
     static CamelServiceFilter forType(String type) {
         return serviceInfo -> serviceInfo.type.equals(type);
     }
-
-    static CamelServiceFilter forTypeMathing(String regex) {
-        return serviceInfo -> serviceInfo.type.matches(regex);
-    }
 }
diff --git 
a/extensions-support/consul-client/deployment/src/main/java/org/apache/camel/quarkus/support/consul/client/deployment/ConsulClientSupportProcessor.java
 
b/extensions-support/consul-client/deployment/src/main/java/org/apache/camel/quarkus/support/consul/client/deployment/ConsulClientSupportProcessor.java
index 0d27daf..96bab3a 100644
--- 
a/extensions-support/consul-client/deployment/src/main/java/org/apache/camel/quarkus/support/consul/client/deployment/ConsulClientSupportProcessor.java
+++ 
b/extensions-support/consul-client/deployment/src/main/java/org/apache/camel/quarkus/support/consul/client/deployment/ConsulClientSupportProcessor.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.quarkus.support.consul.client.deployment;
 
+import java.util.regex.Pattern;
 import java.util.stream.Stream;
 
 import io.quarkus.deployment.annotations.BuildProducer;
@@ -40,6 +41,8 @@ class ConsulClientSupportProcessor {
     private static final DotName DOT_NAME_IMMUTABLE_MAP = DotName.createSimple(
             "com.google.common.collect.ImmutableMap");
 
+    private static final Pattern CLIENT_API_PATTERN = 
Pattern.compile("com\\.orbitz\\.consul\\..*Client\\$Api");
+
     @BuildStep
     AdditionalApplicationArchiveMarkerBuildItem applicationArchiveMarkers() {
         return new 
AdditionalApplicationArchiveMarkerBuildItem("com/orbitz/consul");
@@ -73,7 +76,7 @@ class ConsulClientSupportProcessor {
                 .stream()
                 .map(ClassInfo::name)
                 .map(DotName::toString)
-                .filter(className -> 
className.matches("com\\.orbitz\\.consul\\..*Client\\$Api"))
+                .filter(className -> 
CLIENT_API_PATTERN.matcher(className).matches())
                 .map(NativeImageProxyDefinitionBuildItem::new)
                 .forEach(proxies::produce);
     }
diff --git 
a/extensions-support/spring/integration-test/src/test/java/org/apache/camel/quarkus/support/spring/test/SpringSupportTest.java
 
b/extensions-support/spring/integration-test/src/test/java/org/apache/camel/quarkus/support/spring/test/SpringSupportTest.java
index 2ae0fd9..c14a16d 100644
--- 
a/extensions-support/spring/integration-test/src/test/java/org/apache/camel/quarkus/support/spring/test/SpringSupportTest.java
+++ 
b/extensions-support/spring/integration-test/src/test/java/org/apache/camel/quarkus/support/spring/test/SpringSupportTest.java
@@ -23,6 +23,7 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.jar.Attributes;
 import java.util.jar.Manifest;
+import java.util.regex.Pattern;
 
 import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.RestAssured;
@@ -66,8 +67,9 @@ public class SpringSupportTest {
                 throw new IllegalStateException("The sources JAR location does 
not exist: " + file.getAbsolutePath());
             }
 
+            final Pattern pattern = 
Pattern.compile("^camel-quarkus-support-spring-" + module + "-.*-sources.jar");
             File[] files = file
-                    .listFiles(f -> 
f.getName().matches("^camel-quarkus-support-spring-" + module + 
"-.*-sources.jar"));
+                    .listFiles(f -> pattern.matcher(f.getName()).matches());
 
             if (files.length == 1) {
                 URL url = new URL("jar:file:" + files[0].getAbsolutePath() + 
"!/");
diff --git 
a/extensions/xchange/deployment/src/main/java/org/apache/camel/quarkus/component/xchange/deployment/XchangeProcessor.java
 
b/extensions/xchange/deployment/src/main/java/org/apache/camel/quarkus/component/xchange/deployment/XchangeProcessor.java
index 467f3b2..7a941d1 100644
--- 
a/extensions/xchange/deployment/src/main/java/org/apache/camel/quarkus/component/xchange/deployment/XchangeProcessor.java
+++ 
b/extensions/xchange/deployment/src/main/java/org/apache/camel/quarkus/component/xchange/deployment/XchangeProcessor.java
@@ -17,6 +17,7 @@
 package org.apache.camel.quarkus.component.xchange.deployment;
 
 import java.lang.reflect.Modifier;
+import java.util.regex.Pattern;
 import java.util.stream.Stream;
 
 import io.quarkus.bootstrap.model.ApplicationModel;
@@ -91,10 +92,11 @@ class XchangeProcessor {
         reflectiveClass.produce(new ReflectiveClassBuildItem(false, false, 
xchangeClasses));
 
         // DTO classes need to be serialized / deserialized
+        final Pattern pattern = 
Pattern.compile("^org\\.knowm\\.xchange.*dto.*");
         String[] dtoClasses = index.getKnownClasses()
                 .stream()
                 .map(classInfo -> classInfo.name().toString())
-                .filter(className -> 
className.matches("^org\\.knowm\\.xchange.*dto.*"))
+                .filter(className -> pattern.matcher(className).matches())
                 .toArray(String[]::new);
         reflectiveClass.produce(new ReflectiveClassBuildItem(true, true, 
dtoClasses));
 

Reply via email to