You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2022/10/17 12:43:56 UTC

[camel] branch camel-3.18.x updated (f32f8d358e3 -> 1e77da83456)

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

davsclaus pushed a change to branch camel-3.18.x
in repository https://gitbox.apache.org/repos/asf/camel.git


    from f32f8d358e3 CAMEL-18565: camel-main - Should not swallow file not found exception when loading routes, and routes-include-pattern refers to a non existing file.
     new 9c7908132ac CAMEL-18549: Changed filter list in the DynamicRouterProcessor to a m… (#8431)
     new 1e77da83456 Regen

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 camel-dependencies/pom.xml                         |  6 +--
 .../dynamicrouter/DynamicRouterProcessor.java      | 47 ++++++++------------
 .../dynamicrouter/DynamicRouterProcessorTest.java  | 16 ++++++-
 .../component/etcd3/Etcd3EndpointUriFactory.java}  | 50 ++++++++++++++--------
 .../org/apache/camel/urifactory/etcd3-endpoint     |  2 +
 .../KubernetesEventsEndpointUriFactory.java}       |  6 +--
 .../camel/urifactory/kubernetes-events-endpoint    |  2 +
 7 files changed, 74 insertions(+), 55 deletions(-)
 copy components/{camel-corda/src/generated/java/org/apache/camel/component/corda/CordaEndpointUriFactory.java => camel-etcd3/src/generated/java/org/apache/camel/component/etcd3/Etcd3EndpointUriFactory.java} (59%)
 create mode 100644 components/camel-etcd3/src/generated/resources/META-INF/services/org/apache/camel/urifactory/etcd3-endpoint
 copy components/camel-kubernetes/src/generated/java/org/apache/camel/component/kubernetes/{pods/KubernetesPodsEndpointUriFactory.java => events/KubernetesEventsEndpointUriFactory.java} (93%)
 create mode 100644 components/camel-kubernetes/src/generated/resources/META-INF/services/org/apache/camel/urifactory/kubernetes-events-endpoint


[camel] 02/02: Regen

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch camel-3.18.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 1e77da834560851d66ffe2a391125a5be0221a12
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Oct 17 14:43:05 2022 +0200

    Regen
---
 camel-dependencies/pom.xml                         |   6 +-
 .../component/etcd3/Etcd3EndpointUriFactory.java   |  99 ++++++++++++++++++
 .../org/apache/camel/urifactory/etcd3-endpoint     |   2 +
 .../events/KubernetesEventsEndpointUriFactory.java | 114 +++++++++++++++++++++
 .../camel/urifactory/kubernetes-events-endpoint    |   2 +
 5 files changed, 220 insertions(+), 3 deletions(-)

diff --git a/camel-dependencies/pom.xml b/camel-dependencies/pom.xml
index ca84a8fe6ba..1210175d904 100644
--- a/camel-dependencies/pom.xml
+++ b/camel-dependencies/pom.xml
@@ -66,15 +66,15 @@
     <aws-java-sdk2-version>2.17.250</aws-java-sdk2-version>
     <aws-xray-version>2.6.1</aws-xray-version>
     <axiom-version>1.2.14</axiom-version>
-    <azure-jackson2-version>2.13.3</azure-jackson2-version>
     <azure-cosmos-version>4.36.0</azure-cosmos-version>
     <azure-eventhubs-version>5.13.1</azure-eventhubs-version>
     <azure-identity-version>1.6.0</azure-identity-version>
+    <azure-jackson2-version>2.13.3</azure-jackson2-version>
     <azure-keyvault-secrets-version>4.5.0</azure-keyvault-secrets-version>
     <azure-messaging-eventhubs-checkpointstore-blob-version>1.15.1</azure-messaging-eventhubs-checkpointstore-blob-version>
     <azure-messaging-servicebus-version>7.11.0</azure-messaging-servicebus-version>
-    <azure-storage-blob-version>12.19.1</azure-storage-blob-version>
     <azure-storage-blob-changefeed-version>12.0.0-beta.18</azure-storage-blob-changefeed-version>
+    <azure-storage-blob-version>12.19.1</azure-storage-blob-version>
     <azure-storage-datalake-version>12.12.1</azure-storage-datalake-version>
     <azure-storage-queue-version>12.14.2</azure-storage-queue-version>
     <bouncycastle-version>1.71</bouncycastle-version>
@@ -388,7 +388,7 @@
     <maven-assembly-plugin-version>3.3.0</maven-assembly-plugin-version>
     <maven-checkstyle-plugin-version>3.1.2</maven-checkstyle-plugin-version>
     <maven-checkstyle-version>8.45.1</maven-checkstyle-version>
-    <maven-jar-plugin-version>3.2.2</maven-jar-plugin-version>
+    <maven-jar-plugin-version>3.2.0</maven-jar-plugin-version>
     <maven-javadoc-plugin-version>3.2.0</maven-javadoc-plugin-version>
     <maven-jboss-as-maven-plugin-version>7.9.Final</maven-jboss-as-maven-plugin-version>
     <maven-model-version>3.2.5</maven-model-version>
diff --git a/components/camel-etcd3/src/generated/java/org/apache/camel/component/etcd3/Etcd3EndpointUriFactory.java b/components/camel-etcd3/src/generated/java/org/apache/camel/component/etcd3/Etcd3EndpointUriFactory.java
new file mode 100644
index 00000000000..6b5512eff07
--- /dev/null
+++ b/components/camel-etcd3/src/generated/java/org/apache/camel/component/etcd3/Etcd3EndpointUriFactory.java
@@ -0,0 +1,99 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.etcd3;
+
+import java.net.URISyntaxException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.camel.spi.EndpointUriFactory;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+public class Etcd3EndpointUriFactory extends org.apache.camel.support.component.EndpointUriFactorySupport implements EndpointUriFactory {
+
+    private static final String BASE = ":path";
+
+    private static final Set<String> PROPERTY_NAMES;
+    private static final Set<String> SECRET_PROPERTY_NAMES;
+    private static final Set<String> MULTI_VALUE_PREFIXES;
+    static {
+        Set<String> props = new HashSet<>(26);
+        props.add("authHeaders");
+        props.add("authority");
+        props.add("bridgeErrorHandler");
+        props.add("connectionTimeout");
+        props.add("endpoints");
+        props.add("exceptionHandler");
+        props.add("exchangePattern");
+        props.add("fromIndex");
+        props.add("headers");
+        props.add("keepAliveTime");
+        props.add("keepAliveTimeout");
+        props.add("keyCharset");
+        props.add("lazyStartProducer");
+        props.add("loadBalancerPolicy");
+        props.add("maxInboundMessageSize");
+        props.add("namespace");
+        props.add("password");
+        props.add("path");
+        props.add("prefix");
+        props.add("retryDelay");
+        props.add("retryMaxDelay");
+        props.add("retryMaxDuration");
+        props.add("servicePath");
+        props.add("sslContext");
+        props.add("userName");
+        props.add("valueCharset");
+        PROPERTY_NAMES = Collections.unmodifiableSet(props);
+        Set<String> secretProps = new HashSet<>(2);
+        secretProps.add("password");
+        secretProps.add("userName");
+        SECRET_PROPERTY_NAMES = Collections.unmodifiableSet(secretProps);
+        Set<String> prefixes = new HashSet<>(2);
+        prefixes.add("authHeaders.");
+        prefixes.add("headers.");
+        MULTI_VALUE_PREFIXES = Collections.unmodifiableSet(prefixes);
+    }
+
+    @Override
+    public boolean isEnabled(String scheme) {
+        return "etcd3".equals(scheme);
+    }
+
+    @Override
+    public String buildUri(String scheme, Map<String, Object> properties, boolean encode) throws URISyntaxException {
+        String syntax = scheme + BASE;
+        String uri = syntax;
+
+        Map<String, Object> copy = new HashMap<>(properties);
+
+        uri = buildPathParameter(syntax, uri, "path", null, false, copy);
+        uri = buildQueryParameters(uri, copy, encode);
+        return uri;
+    }
+
+    @Override
+    public Set<String> propertyNames() {
+        return PROPERTY_NAMES;
+    }
+
+    @Override
+    public Set<String> secretPropertyNames() {
+        return SECRET_PROPERTY_NAMES;
+    }
+
+    @Override
+    public Set<String> multiValuePrefixes() {
+        return MULTI_VALUE_PREFIXES;
+    }
+
+    @Override
+    public boolean isLenientProperties() {
+        return false;
+    }
+}
+
diff --git a/components/camel-etcd3/src/generated/resources/META-INF/services/org/apache/camel/urifactory/etcd3-endpoint b/components/camel-etcd3/src/generated/resources/META-INF/services/org/apache/camel/urifactory/etcd3-endpoint
new file mode 100644
index 00000000000..0e8faa50adf
--- /dev/null
+++ b/components/camel-etcd3/src/generated/resources/META-INF/services/org/apache/camel/urifactory/etcd3-endpoint
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.etcd3.Etcd3EndpointUriFactory
diff --git a/components/camel-kubernetes/src/generated/java/org/apache/camel/component/kubernetes/events/KubernetesEventsEndpointUriFactory.java b/components/camel-kubernetes/src/generated/java/org/apache/camel/component/kubernetes/events/KubernetesEventsEndpointUriFactory.java
new file mode 100644
index 00000000000..c5c3f56e7ec
--- /dev/null
+++ b/components/camel-kubernetes/src/generated/java/org/apache/camel/component/kubernetes/events/KubernetesEventsEndpointUriFactory.java
@@ -0,0 +1,114 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.kubernetes.events;
+
+import java.net.URISyntaxException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.camel.spi.EndpointUriFactory;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+public class KubernetesEventsEndpointUriFactory extends org.apache.camel.support.component.EndpointUriFactorySupport implements EndpointUriFactory {
+
+    private static final String BASE = ":masterUrl";
+
+    private static final Set<String> PROPERTY_NAMES;
+    private static final Set<String> SECRET_PROPERTY_NAMES;
+    private static final Set<String> MULTI_VALUE_PREFIXES;
+    static {
+        Set<String> props = new HashSet<>(34);
+        props.add("apiVersion");
+        props.add("bridgeErrorHandler");
+        props.add("caCertData");
+        props.add("caCertFile");
+        props.add("clientCertData");
+        props.add("clientCertFile");
+        props.add("clientKeyAlgo");
+        props.add("clientKeyData");
+        props.add("clientKeyFile");
+        props.add("clientKeyPassphrase");
+        props.add("connectionTimeout");
+        props.add("crdGroup");
+        props.add("crdName");
+        props.add("crdPlural");
+        props.add("crdScope");
+        props.add("crdVersion");
+        props.add("dnsDomain");
+        props.add("exceptionHandler");
+        props.add("exchangePattern");
+        props.add("kubernetesClient");
+        props.add("labelKey");
+        props.add("labelValue");
+        props.add("lazyStartProducer");
+        props.add("masterUrl");
+        props.add("namespace");
+        props.add("oauthToken");
+        props.add("operation");
+        props.add("password");
+        props.add("poolSize");
+        props.add("portName");
+        props.add("portProtocol");
+        props.add("resourceName");
+        props.add("trustCerts");
+        props.add("username");
+        PROPERTY_NAMES = Collections.unmodifiableSet(props);
+        Set<String> secretProps = new HashSet<>(12);
+        secretProps.add("caCertData");
+        secretProps.add("caCertFile");
+        secretProps.add("clientCertData");
+        secretProps.add("clientCertFile");
+        secretProps.add("clientKeyAlgo");
+        secretProps.add("clientKeyData");
+        secretProps.add("clientKeyFile");
+        secretProps.add("clientKeyPassphrase");
+        secretProps.add("oauthToken");
+        secretProps.add("password");
+        secretProps.add("trustCerts");
+        secretProps.add("username");
+        SECRET_PROPERTY_NAMES = Collections.unmodifiableSet(secretProps);
+        MULTI_VALUE_PREFIXES = Collections.emptySet();
+    }
+
+    @Override
+    public boolean isEnabled(String scheme) {
+        return "kubernetes-events".equals(scheme);
+    }
+
+    @Override
+    public String buildUri(String scheme, Map<String, Object> properties, boolean encode) throws URISyntaxException {
+        String syntax = scheme + BASE;
+        String uri = syntax;
+
+        Map<String, Object> copy = new HashMap<>(properties);
+
+        uri = buildPathParameter(syntax, uri, "masterUrl", null, true, copy);
+        uri = buildQueryParameters(uri, copy, encode);
+        return uri;
+    }
+
+    @Override
+    public Set<String> propertyNames() {
+        return PROPERTY_NAMES;
+    }
+
+    @Override
+    public Set<String> secretPropertyNames() {
+        return SECRET_PROPERTY_NAMES;
+    }
+
+    @Override
+    public Set<String> multiValuePrefixes() {
+        return MULTI_VALUE_PREFIXES;
+    }
+
+    @Override
+    public boolean isLenientProperties() {
+        return false;
+    }
+}
+
diff --git a/components/camel-kubernetes/src/generated/resources/META-INF/services/org/apache/camel/urifactory/kubernetes-events-endpoint b/components/camel-kubernetes/src/generated/resources/META-INF/services/org/apache/camel/urifactory/kubernetes-events-endpoint
new file mode 100644
index 00000000000..cb9fbd21561
--- /dev/null
+++ b/components/camel-kubernetes/src/generated/resources/META-INF/services/org/apache/camel/urifactory/kubernetes-events-endpoint
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.kubernetes.events.KubernetesEventsEndpointUriFactory


[camel] 01/02: CAMEL-18549: Changed filter list in the DynamicRouterProcessor to a m… (#8431)

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch camel-3.18.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 9c7908132ac73e6b2ed097c6d55b705524dd3c88
Author: Steve Storck <st...@gmail.com>
AuthorDate: Mon Sep 26 04:37:35 2022 -0400

    CAMEL-18549: Changed filter list in the DynamicRouterProcessor to a m… (#8431)
    
    * CAMEL-18549: Changed filter list in the DynamicRouterProcessor to a map, where filters are mapped by filter ID.
    
    * CAMEL-18549: Fixed checkstyle error for import  out of order.
    
    * CAMEL-18549: Attempting to fix build errors.
---
 .../dynamicrouter/DynamicRouterProcessor.java      | 47 +++++++++-------------
 .../dynamicrouter/DynamicRouterProcessorTest.java  | 16 +++++++-
 2 files changed, 32 insertions(+), 31 deletions(-)

diff --git a/components/camel-dynamic-router/src/main/java/org/apache/camel/component/dynamicrouter/DynamicRouterProcessor.java b/components/camel-dynamic-router/src/main/java/org/apache/camel/component/dynamicrouter/DynamicRouterProcessor.java
index 5509a2f30d3..c82e201d4ad 100644
--- a/components/camel-dynamic-router/src/main/java/org/apache/camel/component/dynamicrouter/DynamicRouterProcessor.java
+++ b/components/camel-dynamic-router/src/main/java/org/apache/camel/component/dynamicrouter/DynamicRouterProcessor.java
@@ -16,10 +16,7 @@
  */
 package org.apache.camel.component.dynamicrouter;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
 import java.util.concurrent.ExecutorService;
 import java.util.function.Supplier;
 import java.util.stream.Collectors;
@@ -65,9 +62,10 @@ public class DynamicRouterProcessor extends AsyncProcessorSupport implements Tra
     private static final String LOG_ENDPOINT = "log:%s.%s?level=%s&showAll=true&multiline=true";
 
     /**
-     * {@link FilterProcessor}s to determine if the incoming exchange should be routed, based on the content.
+     * {@link FilterProcessor}s, mapped by subscription ID, to determine if the incoming exchange should be routed based
+     * on the content.
      */
-    private final ArrayList<PrioritizedFilterProcessor> filters;
+    private final TreeMap<String, PrioritizedFilterProcessor> filterMap;
 
     /**
      * The camel context.
@@ -130,7 +128,7 @@ public class DynamicRouterProcessor extends AsyncProcessorSupport implements Tra
                                   final boolean warnDroppedMessage,
                                   final Supplier<PrioritizedFilterProcessorFactory> filterProcessorFactorySupplier) {
         this.id = id;
-        this.filters = new ArrayList<>();
+        this.filterMap = new TreeMap<>();
         this.camelContext = camelContext;
         this.recipientMode = recipientMode;
         this.producerTemplate = camelContext.createProducerTemplate();
@@ -196,10 +194,9 @@ public class DynamicRouterProcessor extends AsyncProcessorSupport implements Tra
      * @param filter the filter to add
      */
     public void addFilter(final PrioritizedFilterProcessor filter) {
-        synchronized (filters) {
+        synchronized (filterMap) {
             if (filter != null) {
-                filters.add(filter);
-                filters.sort(PrioritizedFilterProcessor.COMPARATOR);
+                filterMap.put(filter.getId(), filter);
                 LOG.debug("Added subscription: {}", filter);
             }
         }
@@ -212,10 +209,7 @@ public class DynamicRouterProcessor extends AsyncProcessorSupport implements Tra
      * @return          the filter with the supplied ID, or null
      */
     public PrioritizedFilterProcessor getFilter(final String filterId) {
-        return filters.stream()
-                .filter(f -> filterId.equals(f.getId()))
-                .findFirst()
-                .orElse(null);
+        return filterMap.get(filterId);
     }
 
     /**
@@ -224,22 +218,17 @@ public class DynamicRouterProcessor extends AsyncProcessorSupport implements Tra
      * @param filterId the ID of the filter to remove
      */
     public void removeFilter(final String filterId) {
-        synchronized (filters) {
-            PrioritizedFilterProcessor toRemove = filters.stream()
-                    .filter(f -> filterId.equals(f.getId()))
-                    .findFirst()
-                    .orElse(null);
-            Optional.ofNullable(toRemove)
-                    .ifPresent(f -> {
-                        if (filters.remove(f)) {
-                            LOG.debug("Removed subscription: {}", f);
-                        }
-                    });
+        synchronized (filterMap) {
+            Optional.ofNullable(filterMap.remove(filterId))
+                    .ifPresentOrElse(
+                            f -> LOG.debug("Removed subscription: {}", f),
+                            () -> LOG.debug("No subscription exists with ID: {}", filterId));
         }
     }
 
     /**
-     * Match the exchange against all {@link #filters} to determine if any of them are suitable to handle the exchange.
+     * Match the exchange against all {@link #filterMap} to determine if any of them are suitable to handle the
+     * exchange.
      *
      * @param  exchange the message exchange
      * @return          list of filters that match for the exchange; if "firstMatch" mode, it is a singleton list of
@@ -247,7 +236,7 @@ public class DynamicRouterProcessor extends AsyncProcessorSupport implements Tra
      */
     List<PrioritizedFilterProcessor> matchFilters(final Exchange exchange) {
         return Optional.of(
-                filters.stream()
+                filterMap.values().stream()
                         .filter(f -> f.matches(exchange))
                         .limit(MODE_FIRST_MATCH.equals(recipientMode) ? 1 : Integer.MAX_VALUE)
                         .collect(Collectors.toList()))
@@ -257,8 +246,8 @@ public class DynamicRouterProcessor extends AsyncProcessorSupport implements Tra
 
     /**
      * Processes the message exchange, where the caller supports having the exchange asynchronously processed. The
-     * exchange is matched against all {@link #filters} to determine if any of them are suitable to handle the exchange.
-     * When the first suitable filter is found, it processes the exchange.
+     * exchange is matched against all {@link #filterMap} to determine if any of them are suitable to handle the
+     * exchange. When the first suitable filter is found, it processes the exchange.
      * <p/>
      * If there was any failure in processing, then the caused {@link Exception} would be set on the {@link Exchange}.
      *
diff --git a/components/camel-dynamic-router/src/test/java/org/apache/camel/component/dynamicrouter/DynamicRouterProcessorTest.java b/components/camel-dynamic-router/src/test/java/org/apache/camel/component/dynamicrouter/DynamicRouterProcessorTest.java
index d7e0ba15bd8..8ecf81f0dcd 100644
--- a/components/camel-dynamic-router/src/test/java/org/apache/camel/component/dynamicrouter/DynamicRouterProcessorTest.java
+++ b/components/camel-dynamic-router/src/test/java/org/apache/camel/component/dynamicrouter/DynamicRouterProcessorTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.component.dynamicrouter;
 
+import java.util.List;
+
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.Exchange;
 import org.apache.camel.component.dynamicrouter.support.DynamicRouterTestSupport;
@@ -23,7 +25,7 @@ import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import static org.apache.camel.component.dynamicrouter.DynamicRouterConstants.MODE_FIRST_MATCH;
+import static org.apache.camel.component.dynamicrouter.DynamicRouterConstants.MODE_ALL_MATCH;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.lenient;
@@ -34,7 +36,7 @@ class DynamicRouterProcessorTest extends DynamicRouterTestSupport {
     @BeforeEach
     void localSetup() throws Exception {
         super.setup();
-        processor = new DynamicRouterProcessor(PROCESSOR_ID, context, MODE_FIRST_MATCH, false, () -> filterProcessorFactory);
+        processor = new DynamicRouterProcessor(PROCESSOR_ID, context, MODE_ALL_MATCH, false, () -> filterProcessorFactory);
         processor.doInit();
     }
 
@@ -59,6 +61,16 @@ class DynamicRouterProcessorTest extends DynamicRouterTestSupport {
         assertEquals(filterProcessor, result);
     }
 
+    @Test
+    void addMultipleFiltersWithSameId() {
+        processor.addFilter(filterProcessor);
+        processor.addFilter(filterProcessor);
+        processor.addFilter(filterProcessor);
+        processor.addFilter(filterProcessor);
+        List<PrioritizedFilterProcessor> matchingFilters = processor.matchFilters(exchange);
+        assertEquals(1, matchingFilters.size());
+    }
+
     @Test
     void removeFilter() {
         addFilterAsFilterProcessor();