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

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


The following commit(s) were added to refs/heads/camel-4.8.x by this push:
     new 66d00b24671 CAMEL-21436: camel-jbang - Export beans with secret 
function should work even if k8s is not configured
66d00b24671 is described below

commit 66d00b24671e9ae0e6a2bf6378f88002789e0f01
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed Nov 13 11:53:58 2024 +0100

    CAMEL-21436: camel-jbang - Export beans with secret function should work 
even if k8s is not configured
---
 .../java/org/apache/camel/main/KameletMain.java    |  8 ++++
 .../main/download/ExportPeriodTaskResolver.java    | 51 ++++++++++++++++++++++
 2 files changed, 59 insertions(+)

diff --git 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java
index 264b2b5316e..7f17c53f513 100644
--- 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java
+++ 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java
@@ -58,6 +58,7 @@ import 
org.apache.camel.main.download.DependencyDownloaderTransformerResolver;
 import org.apache.camel.main.download.DependencyDownloaderUriFactoryResolver;
 import org.apache.camel.main.download.DownloadListener;
 import org.apache.camel.main.download.DownloadModelineParser;
+import org.apache.camel.main.download.ExportPeriodTaskResolver;
 import org.apache.camel.main.download.ExportPropertiesParser;
 import org.apache.camel.main.download.ExportTypeConverter;
 import org.apache.camel.main.download.KameletAutowiredLifecycleStrategy;
@@ -89,6 +90,7 @@ import org.apache.camel.spi.FactoryFinder;
 import org.apache.camel.spi.FactoryFinderResolver;
 import org.apache.camel.spi.LanguageResolver;
 import org.apache.camel.spi.LifecycleStrategy;
+import org.apache.camel.spi.PeriodTaskResolver;
 import org.apache.camel.spi.PeriodTaskScheduler;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.ResourceLoader;
@@ -424,6 +426,12 @@ public class KameletMain extends MainCommandLineSupport {
             answer.getTypeConverterRegistry().addTypeConverter(Byte.class, 
String.class, ec);
             answer.getTypeConverterRegistry().addTypeConverter(Boolean.class, 
String.class, ec);
             answer.getTypeConverterRegistry().addFallbackTypeConverter(ec, 
false);
+
+            // override default period task with our export that does not run 
tasks
+            FactoryFinder finder = 
PluginHelper.getFactoryFinderResolver(answer)
+                    .resolveBootstrapFactoryFinder(answer.getClassResolver(), 
PeriodTaskResolver.RESOURCE_PATH);
+            ExportPeriodTaskResolver eptr = new 
ExportPeriodTaskResolver(finder);
+            
answer.getCamelContextExtension().addContextPlugin(PeriodTaskResolver.class, 
eptr);
         } else {
             PropertiesComponent pc = (PropertiesComponent) 
answer.getPropertiesComponent();
             pc.setPropertiesFunctionResolver(new 
DependencyDownloaderPropertiesFunctionResolver(answer, false));
diff --git 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/ExportPeriodTaskResolver.java
 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/ExportPeriodTaskResolver.java
new file mode 100644
index 00000000000..5e083593875
--- /dev/null
+++ 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/ExportPeriodTaskResolver.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.main.download;
+
+import java.util.Optional;
+
+import org.apache.camel.impl.engine.DefaultPeriodTaskResolver;
+import org.apache.camel.spi.FactoryFinder;
+
+public class ExportPeriodTaskResolver extends DefaultPeriodTaskResolver {
+
+    public ExportPeriodTaskResolver(FactoryFinder finder) {
+        super(finder);
+    }
+
+    @Override
+    public Optional<Object> newInstance(String key) {
+        if (skip(key)) {
+            return Optional.empty();
+        }
+        return super.newInstance(key);
+    }
+
+    @Override
+    public <T> Optional<T> newInstance(String key, Class<T> type) {
+        if (skip(key)) {
+            return Optional.empty();
+        }
+        return super.newInstance(key, type);
+    }
+
+    private boolean skip(String key) {
+        // skip all vault refresh during export as they will attempt to 
connect to remote system
+        return "aws-secret-refresh".equals(key) || 
"gcp-secret-refresh".equals(key) || "azure-secret-refresh".equals(key)
+                || "kubernetes-secret-refresh".equals(key);
+    }
+}

Reply via email to