You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2023/03/31 09:51:48 UTC

[camel] 03/03: CAMEL-15105: make the UriFactoryResolver a plugin of the context

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

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

commit 634743608380735f7b5441c332f803b1dd275483
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Fri Mar 31 09:11:14 2023 +0200

    CAMEL-15105: make the UriFactoryResolver a plugin of the context
---
 .../java/org/apache/camel/ExtendedCamelContext.java   | 11 -----------
 .../camel/impl/engine/AbstractCamelContext.java       |  2 +-
 .../impl/engine/DefaultCamelContextExtension.java     | 19 ++-----------------
 .../camel/impl/ExtendedCamelContextConfigurer.java    |  6 ------
 .../impl/lw/LightweightCamelContextExtension.java     | 11 -----------
 .../java/org/apache/camel/support/PluginHelper.java   | 15 +++++++++++++++
 .../main/java/org/apache/camel/main/KameletMain.java  |  4 +++-
 7 files changed, 21 insertions(+), 47 deletions(-)

diff --git a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
index c7c35bfd467..d6082ef3222 100644
--- a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
@@ -67,7 +67,6 @@ import org.apache.camel.spi.RouteStartupOrder;
 import org.apache.camel.spi.RoutesLoader;
 import org.apache.camel.spi.StartupStepRecorder;
 import org.apache.camel.spi.UnitOfWorkFactory;
-import org.apache.camel.spi.UriFactoryResolver;
 
 /**
  * Extended {@link CamelContext} which contains the methods and APIs that are not primary intended for Camel end users
@@ -682,16 +681,6 @@ public interface ExtendedCamelContext {
      */
     void setRuntimeCamelCatalog(RuntimeCamelCatalog runtimeCamelCatalog);
 
-    /**
-     * Gets the {@link UriFactoryResolver} to use.
-     */
-    UriFactoryResolver getUriFactoryResolver();
-
-    /**
-     * Sets the {@link UriFactoryResolver} to use.
-     */
-    void setUriFactoryResolver(UriFactoryResolver uriFactoryResolver);
-
     /**
      * Internal {@link RouteController} that are only used internally by Camel to perform basic route operations. Do not
      * use this as end user.
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index fe8b3dfd9b3..876f8eb565a 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -213,7 +213,6 @@ public abstract class AbstractCamelContext extends BaseService
     volatile ProcessorExchangeFactory processorExchangeFactory;
     volatile ReactiveExecutor reactiveExecutor;
     volatile Registry registry;
-    volatile UriFactoryResolver uriFactoryResolver;
     volatile DataFormatResolver dataFormatResolver;
     volatile HealthCheckResolver healthCheckResolver;
     volatile DevConsoleResolver devConsoleResolver;
@@ -386,6 +385,7 @@ public abstract class AbstractCamelContext extends BaseService
         camelContextExtension.addContextPlugin(ComponentNameResolver.class, createComponentNameResolver());
         camelContextExtension.addContextPlugin(LanguageResolver.class, createLanguageResolver());
         camelContextExtension.addContextPlugin(ConfigurerResolver.class, createConfigurerResolver());
+        camelContextExtension.addContextPlugin(UriFactoryResolver.class, createUriFactoryResolver());
 
         if (build) {
             try {
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
index 98cacd1ec9c..f2505551171 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
@@ -87,9 +87,9 @@ import org.apache.camel.spi.RouteStartupOrder;
 import org.apache.camel.spi.RoutesLoader;
 import org.apache.camel.spi.StartupStepRecorder;
 import org.apache.camel.spi.UnitOfWorkFactory;
-import org.apache.camel.spi.UriFactoryResolver;
 import org.apache.camel.support.EndpointHelper;
 import org.apache.camel.support.NormalizedUri;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.util.StringHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -246,21 +246,6 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
         return camelContext.managementMBeanAssembler;
     }
 
-    public UriFactoryResolver getUriFactoryResolver() {
-        if (camelContext.uriFactoryResolver == null) {
-            synchronized (camelContext.lock) {
-                if (camelContext.uriFactoryResolver == null) {
-                    setUriFactoryResolver(camelContext.createUriFactoryResolver());
-                }
-            }
-        }
-        return camelContext.uriFactoryResolver;
-    }
-
-    public void setUriFactoryResolver(UriFactoryResolver uriFactoryResolver) {
-        camelContext.uriFactoryResolver = camelContext.getInternalServiceManager().addService(uriFactoryResolver);
-    }
-
     @Override
     public Registry getRegistry() {
         if (camelContext.registry == null) {
@@ -982,7 +967,7 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
 
     @Override
     public EndpointUriFactory getEndpointUriFactory(String scheme) {
-        return getUriFactoryResolver().resolveFactory(scheme, camelContext);
+        return PluginHelper.getUriFactoryResolver(this).resolveFactory(scheme, camelContext);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
index 42a64c69223..e335485b22b 100644
--- a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
+++ b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
@@ -99,8 +99,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "StartupStepRecorder": target.setStartupStepRecorder(property(camelContext, org.apache.camel.spi.StartupStepRecorder.class, value)); return true;
         case "unitofworkfactory":
         case "UnitOfWorkFactory": target.setUnitOfWorkFactory(property(camelContext, org.apache.camel.spi.UnitOfWorkFactory.class, value)); return true;
-        case "urifactoryresolver":
-        case "UriFactoryResolver": target.setUriFactoryResolver(property(camelContext, org.apache.camel.spi.UriFactoryResolver.class, value)); return true;
         default: return false;
         }
     }
@@ -186,8 +184,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "StartupStepRecorder": return org.apache.camel.spi.StartupStepRecorder.class;
         case "unitofworkfactory":
         case "UnitOfWorkFactory": return org.apache.camel.spi.UnitOfWorkFactory.class;
-        case "urifactoryresolver":
-        case "UriFactoryResolver": return org.apache.camel.spi.UriFactoryResolver.class;
         default: return null;
         }
     }
@@ -274,8 +270,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "StartupStepRecorder": return target.getStartupStepRecorder();
         case "unitofworkfactory":
         case "UnitOfWorkFactory": return target.getUnitOfWorkFactory();
-        case "urifactoryresolver":
-        case "UriFactoryResolver": return target.getUriFactoryResolver();
         default: return null;
         }
     }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
index 0b27fc59350..da2443a87a8 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
@@ -83,7 +83,6 @@ import org.apache.camel.spi.RoutesLoader;
 import org.apache.camel.spi.StartupStepRecorder;
 import org.apache.camel.spi.SupervisingRouteController;
 import org.apache.camel.spi.UnitOfWorkFactory;
-import org.apache.camel.spi.UriFactoryResolver;
 import org.apache.camel.support.NormalizedUri;
 import org.apache.camel.util.StringHelper;
 import org.apache.camel.util.URISupport;
@@ -762,16 +761,6 @@ class LightweightCamelContextExtension implements ExtendedCamelContext {
         };
     }
 
-    @Override
-    public UriFactoryResolver getUriFactoryResolver() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setUriFactoryResolver(UriFactoryResolver uriFactoryResolver) {
-        throw new UnsupportedOperationException();
-    }
-
     @Override
     public EndpointUriFactory getEndpointUriFactory(String scheme) {
         throw new UnsupportedOperationException();
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
index 589cd220241..5439f21a401 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
@@ -25,6 +25,7 @@ import org.apache.camel.spi.ComponentNameResolver;
 import org.apache.camel.spi.ComponentResolver;
 import org.apache.camel.spi.ConfigurerResolver;
 import org.apache.camel.spi.LanguageResolver;
+import org.apache.camel.spi.UriFactoryResolver;
 
 public final class PluginHelper {
     private PluginHelper() {
@@ -120,4 +121,18 @@ public final class PluginHelper {
     public static ConfigurerResolver getConfigurerResolver(ExtendedCamelContext extendedCamelContext) {
         return extendedCamelContext.getContextPlugin(ConfigurerResolver.class);
     }
+
+    /**
+     * Gets the {@link UriFactoryResolver} to use.
+     */
+    public static UriFactoryResolver getUriFactoryResolver(CamelContext camelContext) {
+        return getUriFactoryResolver(camelContext.getCamelContextExtension());
+    }
+
+    /**
+     * Gets the {@link UriFactoryResolver} to use.
+     */
+    public static UriFactoryResolver getUriFactoryResolver(ExtendedCamelContext extendedCamelContext) {
+        return extendedCamelContext.getContextPlugin(UriFactoryResolver.class);
+    }
 }
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 1730a72458d..bdfcfcbf283 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
@@ -59,6 +59,7 @@ import org.apache.camel.spi.CliConnectorFactory;
 import org.apache.camel.spi.ComponentResolver;
 import org.apache.camel.spi.LanguageResolver;
 import org.apache.camel.spi.Registry;
+import org.apache.camel.spi.UriFactoryResolver;
 import org.apache.camel.startup.jfr.FlightRecorderStartupStepRecorder;
 import org.apache.camel.support.service.ServiceHelper;
 
@@ -445,7 +446,8 @@ public class KameletMain extends MainCommandLineSupport {
             answer.setClassResolver(new DependencyDownloaderClassResolver(answer, known));
             answer.getCamelContextExtension().addContextPlugin(ComponentResolver.class,
                     new DependencyDownloaderComponentResolver(answer, stub));
-            answer.getCamelContextExtension().setUriFactoryResolver(new DependencyDownloaderUriFactoryResolver(answer));
+            answer.getCamelContextExtension().addContextPlugin(UriFactoryResolver.class,
+                    new DependencyDownloaderUriFactoryResolver(answer));
             answer.setDataFormatResolver(new DependencyDownloaderDataFormatResolver(answer));
             answer.getCamelContextExtension().addContextPlugin(LanguageResolver.class, new DependencyDownloaderLanguageResolver(answer));
             answer.setResourceLoader(new DependencyDownloaderResourceLoader(answer));