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:46 UTC

[camel] 01/03: CAMEL-15105: make the LanguageResolver 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 f0ac10eb342e010dc63d49593867dbc6fcd9444e
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Thu Mar 30 19:45:32 2023 +0200

    CAMEL-15105: make the LanguageResolver a plugin of the context
---
 .../main/java/org/apache/camel/ExtendedCamelContext.java | 11 -----------
 .../apache/camel/impl/engine/AbstractCamelContext.java   |  6 ++----
 .../camel/impl/engine/DefaultCamelContextExtension.java  | 16 ----------------
 .../camel/impl/ExtendedCamelContextConfigurer.java       |  6 ------
 .../camel/impl/lw/LightweightCamelContextExtension.java  | 11 -----------
 .../camel/impl/lw/LightweightRuntimeCamelContext.java    |  3 ++-
 .../main/java/org/apache/camel/support/PluginHelper.java | 15 +++++++++++++++
 .../src/main/java/org/apache/camel/main/KameletMain.java |  3 ++-
 8 files changed, 21 insertions(+), 50 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 7e314a477b0..193597d2adb 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
@@ -43,7 +43,6 @@ import org.apache.camel.spi.HeadersMapFactory;
 import org.apache.camel.spi.InterceptEndpointFactory;
 import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.spi.InternalProcessorFactory;
-import org.apache.camel.spi.LanguageResolver;
 import org.apache.camel.spi.LifecycleStrategy;
 import org.apache.camel.spi.LogListener;
 import org.apache.camel.spi.ManagementMBeanAssembler;
@@ -287,16 +286,6 @@ public interface ExtendedCamelContext {
      */
     void setErrorHandlerFactory(ErrorHandlerFactory errorHandlerFactory);
 
-    /**
-     * Gets the {@link LanguageResolver} to use.
-     */
-    LanguageResolver getLanguageResolver();
-
-    /**
-     * Sets a custom {@link LanguageResolver} to use.
-     */
-    void setLanguageResolver(LanguageResolver languageResolver);
-
     /**
      * Gets the current data format resolver
      *
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 b73df87fa17..43ac6c8dec7 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 LanguageResolver languageResolver;
     volatile ConfigurerResolver configurerResolver;
     volatile UriFactoryResolver uriFactoryResolver;
     volatile DataFormatResolver dataFormatResolver;
@@ -386,6 +385,7 @@ public abstract class AbstractCamelContext extends BaseService
                 createDependencyInjectionAnnotationFactory());
         camelContextExtension.addContextPlugin(ComponentResolver.class, createComponentResolver());
         camelContextExtension.addContextPlugin(ComponentNameResolver.class, createComponentNameResolver());
+        camelContextExtension.addContextPlugin(LanguageResolver.class, createLanguageResolver());
 
         if (build) {
             try {
@@ -1523,7 +1523,7 @@ public abstract class AbstractCamelContext extends BaseService
 
         if (language == null) {
             // language not known, then use resolver
-            language = camelContextExtension.getLanguageResolver().resolveLanguage(name, camelContext);
+            language = PluginHelper.getLanguageResolver(camelContextExtension).resolveLanguage(name, camelContext);
         }
 
         if (language != null) {
@@ -3272,7 +3272,6 @@ public abstract class AbstractCamelContext extends BaseService
         camelContextExtension.getConfigurerResolver();
         getPropertiesComponent();
 
-        camelContextExtension.getLanguageResolver();
         camelContextExtension.getDataFormatResolver();
         camelContextExtension.getHealthCheckResolver();
 
@@ -3295,7 +3294,6 @@ public abstract class AbstractCamelContext extends BaseService
      */
     protected void forceStopLazyInitialization() {
         injector = null;
-        languageResolver = null;
         dataFormatResolver = null;
         typeConverterRegistry = null;
         typeConverter = null;
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 8094600f7f8..096b8b7c1da 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
@@ -60,7 +60,6 @@ import org.apache.camel.spi.HeadersMapFactory;
 import org.apache.camel.spi.InterceptEndpointFactory;
 import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.spi.InternalProcessorFactory;
-import org.apache.camel.spi.LanguageResolver;
 import org.apache.camel.spi.LifecycleStrategy;
 import org.apache.camel.spi.LogListener;
 import org.apache.camel.spi.ManagementMBeanAssembler;
@@ -247,21 +246,6 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
         return camelContext.managementMBeanAssembler;
     }
 
-    public LanguageResolver getLanguageResolver() {
-        if (camelContext.languageResolver == null) {
-            synchronized (camelContext.lock) {
-                if (camelContext.languageResolver == null) {
-                    setLanguageResolver(camelContext.createLanguageResolver());
-                }
-            }
-        }
-        return camelContext.languageResolver;
-    }
-
-    public void setLanguageResolver(LanguageResolver languageResolver) {
-        camelContext.languageResolver = camelContext.getInternalServiceManager().addService(languageResolver);
-    }
-
     public ConfigurerResolver getConfigurerResolver() {
         if (camelContext.configurerResolver == null) {
             synchronized (camelContext.lock) {
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 7ebf603b71e..8b91e8ac9eb 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
@@ -61,8 +61,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "InterceptEndpointFactory": target.setInterceptEndpointFactory(property(camelContext, org.apache.camel.spi.InterceptEndpointFactory.class, value)); return true;
         case "internalprocessorfactory":
         case "InternalProcessorFactory": target.setInternalProcessorFactory(property(camelContext, org.apache.camel.spi.InternalProcessorFactory.class, value)); return true;
-        case "languageresolver":
-        case "LanguageResolver": target.setLanguageResolver(property(camelContext, org.apache.camel.spi.LanguageResolver.class, value)); return true;
         case "lightweight":
         case "Lightweight": target.setLightweight(property(camelContext, boolean.class, value)); return true;
         case "modeljaxbcontextfactory":
@@ -152,8 +150,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "InterceptEndpointFactory": return org.apache.camel.spi.InterceptEndpointFactory.class;
         case "internalprocessorfactory":
         case "InternalProcessorFactory": return org.apache.camel.spi.InternalProcessorFactory.class;
-        case "languageresolver":
-        case "LanguageResolver": return org.apache.camel.spi.LanguageResolver.class;
         case "lightweight":
         case "Lightweight": return boolean.class;
         case "modeljaxbcontextfactory":
@@ -244,8 +240,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "InterceptEndpointFactory": return target.getInterceptEndpointFactory();
         case "internalprocessorfactory":
         case "InternalProcessorFactory": return target.getInternalProcessorFactory();
-        case "languageresolver":
-        case "LanguageResolver": return target.getLanguageResolver();
         case "lightweight":
         case "Lightweight": return target.isLightweight();
         case "modeljaxbcontextfactory":
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 e9426d21cd7..c45d4ea5691 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
@@ -58,7 +58,6 @@ import org.apache.camel.spi.HeadersMapFactory;
 import org.apache.camel.spi.InterceptEndpointFactory;
 import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.spi.InternalProcessorFactory;
-import org.apache.camel.spi.LanguageResolver;
 import org.apache.camel.spi.LogListener;
 import org.apache.camel.spi.ManagementMBeanAssembler;
 import org.apache.camel.spi.ModelJAXBContextFactory;
@@ -126,16 +125,6 @@ class LightweightCamelContextExtension implements ExtendedCamelContext {
         throw new UnsupportedOperationException();
     }
 
-    @Override
-    public LanguageResolver getLanguageResolver() {
-        return camelContext.getCamelContextExtension().getLanguageResolver();
-    }
-
-    @Override
-    public void setLanguageResolver(LanguageResolver languageResolver) {
-        throw new UnsupportedOperationException();
-    }
-
     @Override
     public DataFormatResolver getDataFormatResolver() {
         return camelContext.getCamelContextExtension().getDataFormatResolver();
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java
index 4e2b0edddb0..3989b7273bc 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java
@@ -92,6 +92,7 @@ import org.apache.camel.spi.Validator;
 import org.apache.camel.spi.ValidatorRegistry;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.NormalizedUri;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.support.jsse.SSLContextParameters;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.ObjectHelper;
@@ -728,7 +729,7 @@ public class LightweightRuntimeCamelContext implements CamelContext, CatalogCame
                 }
             }
             // language not known or not singleton, then use resolver
-            answer = lwCamelContextExtension.getLanguageResolver().resolveLanguage(language, reference);
+            answer = PluginHelper.getLanguageResolver(lwCamelContextExtension).resolveLanguage(language, reference);
             // inject CamelContext if aware
             if (answer != null) {
                 CamelContextAware.trySetCamelContext(answer, reference);
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 a675479a364..ac74b57fc14 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
@@ -23,6 +23,7 @@ import org.apache.camel.spi.CamelBeanPostProcessor;
 import org.apache.camel.spi.CamelDependencyInjectionAnnotationFactory;
 import org.apache.camel.spi.ComponentNameResolver;
 import org.apache.camel.spi.ComponentResolver;
+import org.apache.camel.spi.LanguageResolver;
 
 public final class PluginHelper {
     private PluginHelper() {
@@ -90,4 +91,18 @@ public final class PluginHelper {
     public static ComponentNameResolver getComponentNameResolver(ExtendedCamelContext extendedCamelContext) {
         return extendedCamelContext.getContextPlugin(ComponentNameResolver.class);
     }
+
+    /**
+     * Gets the {@link LanguageResolver} to use.
+     */
+    public static LanguageResolver getLanguageResolver(CamelContext camelContext) {
+        return getLanguageResolver(camelContext.getCamelContextExtension());
+    }
+
+    /**
+     * Gets the {@link LanguageResolver} to use.
+     */
+    public static LanguageResolver getLanguageResolver(ExtendedCamelContext extendedCamelContext) {
+        return extendedCamelContext.getContextPlugin(LanguageResolver.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 9eafaf5652b..1730a72458d 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
@@ -57,6 +57,7 @@ import org.apache.camel.main.util.ExtraFilesClassLoader;
 import org.apache.camel.spi.CliConnector;
 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.startup.jfr.FlightRecorderStartupStepRecorder;
 import org.apache.camel.support.service.ServiceHelper;
@@ -446,7 +447,7 @@ public class KameletMain extends MainCommandLineSupport {
                     new DependencyDownloaderComponentResolver(answer, stub));
             answer.getCamelContextExtension().setUriFactoryResolver(new DependencyDownloaderUriFactoryResolver(answer));
             answer.setDataFormatResolver(new DependencyDownloaderDataFormatResolver(answer));
-            answer.getCamelContextExtension().setLanguageResolver(new DependencyDownloaderLanguageResolver(answer));
+            answer.getCamelContextExtension().addContextPlugin(LanguageResolver.class, new DependencyDownloaderLanguageResolver(answer));
             answer.setResourceLoader(new DependencyDownloaderResourceLoader(answer));
             answer.setInjector(new KameletMainInjector(answer.getInjector(), stub));
             answer.addService(new DependencyDownloaderKamelet(answer));