You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by nf...@apache.org on 2023/07/06 15:47:01 UTC

[camel-quarkus] 01/01: Ref #5056: Replace the deprecated RecorderContext#classProxy

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

nfilotto pushed a commit to branch 5056/replace-classProxy
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit eb2636d2d8b67be52340fb1ee354ec85c7c8ac04
Author: Nicolas Filotto <nf...@talend.com>
AuthorDate: Thu Jul 6 17:45:02 2023 +0200

    Ref #5056: Replace the deprecated RecorderContext#classProxy
---
 .../language/runtime/LanguageSupportRecorder.java  | 23 ++++------------------
 .../groovy/deployment/GroovyProcessor.java         |  9 +++------
 .../groovy/runtime/GroovyExpressionRecorder.java   |  4 ++--
 .../component/joor/deployment/JoorProcessor.java   | 13 +++++-------
 .../joor/runtime/JoorExpressionRecorder.java       | 13 ++++++------
 5 files changed, 20 insertions(+), 42 deletions(-)

diff --git a/extensions/groovy/runtime/src/main/java/org/apache/camel/quarkus/component/groovy/runtime/GroovyExpressionRecorder.java b/extensions-support/language/runtime/src/main/java/org/apache/camel/quarkus/support/language/runtime/LanguageSupportRecorder.java
similarity index 52%
copy from extensions/groovy/runtime/src/main/java/org/apache/camel/quarkus/component/groovy/runtime/GroovyExpressionRecorder.java
copy to extensions-support/language/runtime/src/main/java/org/apache/camel/quarkus/support/language/runtime/LanguageSupportRecorder.java
index e1d9a922a9..41b9796190 100644
--- a/extensions/groovy/runtime/src/main/java/org/apache/camel/quarkus/component/groovy/runtime/GroovyExpressionRecorder.java
+++ b/extensions-support/language/runtime/src/main/java/org/apache/camel/quarkus/support/language/runtime/LanguageSupportRecorder.java
@@ -14,30 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.groovy.runtime;
+package org.apache.camel.quarkus.support.language.runtime;
 
-import groovy.lang.Script;
 import io.quarkus.runtime.RuntimeValue;
 import io.quarkus.runtime.annotations.Recorder;
-import org.apache.camel.language.groovy.GroovyLanguage;
 
 @Recorder
-public class GroovyExpressionRecorder {
+public class LanguageSupportRecorder {
 
-    public RuntimeValue<GroovyLanguage.Builder> languageBuilder() {
-        return new RuntimeValue<>(new GroovyLanguage.Builder());
-    }
-
-    @SuppressWarnings("unchecked")
-    public void addScript(RuntimeValue<GroovyLanguage.Builder> builder, String content, Class<?> clazz) {
-        try {
-            builder.getValue().addScript(content, (Class<Script>) clazz);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public RuntimeValue<GroovyLanguage> languageNewInstance(RuntimeValue<GroovyLanguage.Builder> builder) {
-        return new RuntimeValue<>(builder.getValue().build());
+    public RuntimeValue<Class<?>> loadClass(String name) throws ClassNotFoundException {
+        return new RuntimeValue<>(Class.forName(name, true, Thread.currentThread().getContextClassLoader()));
     }
 }
diff --git a/extensions/groovy/deployment/src/main/java/org/apache/camel/quarkus/component/groovy/deployment/GroovyProcessor.java b/extensions/groovy/deployment/src/main/java/org/apache/camel/quarkus/component/groovy/deployment/GroovyProcessor.java
index ad3027bc3d..183200f5a0 100644
--- a/extensions/groovy/deployment/src/main/java/org/apache/camel/quarkus/component/groovy/deployment/GroovyProcessor.java
+++ b/extensions/groovy/deployment/src/main/java/org/apache/camel/quarkus/component/groovy/deployment/GroovyProcessor.java
@@ -30,7 +30,6 @@ import io.quarkus.deployment.builditem.GeneratedClassBuildItem;
 import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
 import io.quarkus.deployment.pkg.builditem.CurateOutcomeBuildItem;
 import io.quarkus.deployment.pkg.steps.NativeBuild;
-import io.quarkus.deployment.recording.RecorderContext;
 import io.quarkus.maven.dependency.ResolvedDependency;
 import io.quarkus.paths.PathCollection;
 import io.quarkus.runtime.RuntimeValue;
@@ -42,6 +41,7 @@ import org.apache.camel.quarkus.support.language.deployment.ExpressionBuildItem;
 import org.apache.camel.quarkus.support.language.deployment.ExpressionExtractionResultBuildItem;
 import org.apache.camel.quarkus.support.language.deployment.ScriptBuildItem;
 import org.apache.camel.quarkus.support.language.runtime.ExpressionUID;
+import org.apache.camel.quarkus.support.language.runtime.LanguageSupportRecorder;
 import org.apache.camel.quarkus.support.language.runtime.ScriptUID;
 import org.codehaus.groovy.control.CompilationUnit;
 import org.codehaus.groovy.control.CompilerConfiguration;
@@ -145,14 +145,11 @@ class GroovyProcessor {
         }
     }
 
-    // We still need to use RecorderContext#classProxy as using i.e. Class.forName does not work
-    // at runtime. See https://github.com/apache/camel-quarkus/issues/5056
-    @SuppressWarnings("deprecation")
     @Record(ExecutionTime.STATIC_INIT)
     @BuildStep(onlyIf = NativeBuild.class)
     CamelBeanBuildItem configureLanguage(
-            RecorderContext recorderContext,
             GroovyExpressionRecorder recorder,
+            LanguageSupportRecorder languageRecorder,
             ExpressionExtractionResultBuildItem result,
             List<GroovyExpressionSourceBuildItem> sources) throws ClassNotFoundException {
 
@@ -162,7 +159,7 @@ class GroovyProcessor {
                 recorder.addScript(
                         builder,
                         source.getOriginalCode(),
-                        recorderContext.classProxy(source.getClassName()));
+                        languageRecorder.loadClass(source.getClassName()));
             }
             final RuntimeValue<GroovyLanguage> language = recorder.languageNewInstance(builder);
             return new CamelBeanBuildItem("groovy", GroovyLanguage.class.getName(), language);
diff --git a/extensions/groovy/runtime/src/main/java/org/apache/camel/quarkus/component/groovy/runtime/GroovyExpressionRecorder.java b/extensions/groovy/runtime/src/main/java/org/apache/camel/quarkus/component/groovy/runtime/GroovyExpressionRecorder.java
index e1d9a922a9..e0ee300344 100644
--- a/extensions/groovy/runtime/src/main/java/org/apache/camel/quarkus/component/groovy/runtime/GroovyExpressionRecorder.java
+++ b/extensions/groovy/runtime/src/main/java/org/apache/camel/quarkus/component/groovy/runtime/GroovyExpressionRecorder.java
@@ -29,9 +29,9 @@ public class GroovyExpressionRecorder {
     }
 
     @SuppressWarnings("unchecked")
-    public void addScript(RuntimeValue<GroovyLanguage.Builder> builder, String content, Class<?> clazz) {
+    public void addScript(RuntimeValue<GroovyLanguage.Builder> builder, String content, RuntimeValue<Class<?>> clazz) {
         try {
-            builder.getValue().addScript(content, (Class<Script>) clazz);
+            builder.getValue().addScript(content, (Class<Script>) clazz.getValue());
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
diff --git a/extensions/joor/deployment/src/main/java/org/apache/camel/quarkus/component/joor/deployment/JoorProcessor.java b/extensions/joor/deployment/src/main/java/org/apache/camel/quarkus/component/joor/deployment/JoorProcessor.java
index e025d5421a..a6378ab77a 100644
--- a/extensions/joor/deployment/src/main/java/org/apache/camel/quarkus/component/joor/deployment/JoorProcessor.java
+++ b/extensions/joor/deployment/src/main/java/org/apache/camel/quarkus/component/joor/deployment/JoorProcessor.java
@@ -32,7 +32,6 @@ import io.quarkus.deployment.builditem.FeatureBuildItem;
 import io.quarkus.deployment.builditem.GeneratedClassBuildItem;
 import io.quarkus.deployment.pkg.PackageConfig;
 import io.quarkus.deployment.pkg.builditem.CurateOutcomeBuildItem;
-import io.quarkus.deployment.recording.RecorderContext;
 import io.quarkus.maven.dependency.ResolvedDependency;
 import io.quarkus.paths.PathCollection;
 import io.quarkus.runtime.RuntimeValue;
@@ -54,6 +53,7 @@ import org.apache.camel.quarkus.support.language.deployment.ExpressionBuildItem;
 import org.apache.camel.quarkus.support.language.deployment.ExpressionExtractionResultBuildItem;
 import org.apache.camel.quarkus.support.language.deployment.ScriptBuildItem;
 import org.apache.camel.quarkus.support.language.runtime.ExpressionUID;
+import org.apache.camel.quarkus.support.language.runtime.LanguageSupportRecorder;
 import org.apache.camel.quarkus.support.language.runtime.ScriptUID;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -152,16 +152,13 @@ class JoorProcessor {
         }
     }
 
-    // We still need to use RecorderContext#classProxy as using i.e. Class.forName does not work
-    // at runtime. See https://github.com/apache/camel-quarkus/issues/5056
-    @SuppressWarnings("deprecation")
     @Record(ExecutionTime.STATIC_INIT)
     @BuildStep(onlyIf = CompileAtBuildTime.class)
     @Consume(CamelContextBuildItem.class)
     CamelBeanBuildItem configureLanguage(
-            RecorderContext recorderContext,
             JoorExpressionConfig config,
             JoorExpressionRecorder recorder,
+            LanguageSupportRecorder languageRecorder,
             CamelContextBuildItem context,
             ExpressionExtractionResultBuildItem result,
             List<JoorExpressionSourceBuildItem> sources) throws ClassNotFoundException {
@@ -179,13 +176,13 @@ class JoorProcessor {
                             expressionScriptingCompilerBuilder,
                             camelContext,
                             source.getId(),
-                            recorderContext.classProxy(source.getClassName()));
+                            languageRecorder.loadClass(source.getClassName()));
                 } else {
                     recorder.addExpression(
                             expressionCompilerBuilder,
                             camelContext,
                             source.getId(),
-                            recorderContext.classProxy(source.getClassName()));
+                            languageRecorder.loadClass(source.getClassName()));
                 }
             }
             final RuntimeValue<JoorLanguage> language = recorder.languageNewInstance(config, expressionCompilerBuilder,
@@ -194,7 +191,7 @@ class JoorProcessor {
             if (config.resultType.isPresent()) {
                 recorder.setResultType(
                         language,
-                        recorderContext.classProxy(config.resultType.get()));
+                        languageRecorder.loadClass(config.resultType.get()));
             }
 
             return new CamelBeanBuildItem("joor", JoorLanguage.class.getName(), language);
diff --git a/extensions/joor/runtime/src/main/java/org/apache/camel/quarkus/component/joor/runtime/JoorExpressionRecorder.java b/extensions/joor/runtime/src/main/java/org/apache/camel/quarkus/component/joor/runtime/JoorExpressionRecorder.java
index 94b056d52e..62d47febce 100644
--- a/extensions/joor/runtime/src/main/java/org/apache/camel/quarkus/component/joor/runtime/JoorExpressionRecorder.java
+++ b/extensions/joor/runtime/src/main/java/org/apache/camel/quarkus/component/joor/runtime/JoorExpressionRecorder.java
@@ -36,8 +36,8 @@ public class JoorExpressionRecorder {
         return language;
     }
 
-    public void setResultType(RuntimeValue<JoorLanguage> language, Class<?> resultType) {
-        language.getValue().setResultType(resultType);
+    public void setResultType(RuntimeValue<JoorLanguage> language, RuntimeValue<Class<?>> resultType) {
+        language.getValue().setResultType(resultType.getValue());
     }
 
     public RuntimeValue<JoorExpressionCompiler.Builder> expressionCompilerBuilder() {
@@ -49,21 +49,20 @@ public class JoorExpressionRecorder {
     }
 
     public void addExpression(RuntimeValue<JoorExpressionCompiler.Builder> builder, RuntimeValue<CamelContext> ctx, String id,
-            Class<?> clazz) {
+            RuntimeValue<Class<?>> clazz) {
         try {
             builder.getValue().addExpression(id,
-                    (JoorMethod) clazz.getConstructor(CamelContext.class).newInstance(ctx.getValue()));
+                    (JoorMethod) clazz.getValue().getConstructor(CamelContext.class).newInstance(ctx.getValue()));
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
     }
 
     public void addScript(RuntimeValue<JoorExpressionScriptingCompiler.Builder> builder, RuntimeValue<CamelContext> ctx,
-            String id,
-            Class<?> clazz) {
+            String id, RuntimeValue<Class<?>> clazz) {
         try {
             builder.getValue().addScript(id,
-                    (JoorScriptingMethod) clazz.getConstructor(CamelContext.class).newInstance(ctx.getValue()));
+                    (JoorScriptingMethod) clazz.getValue().getConstructor(CamelContext.class).newInstance(ctx.getValue()));
         } catch (Exception e) {
             throw new RuntimeException(e);
         }