You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2020/09/21 11:43:38 UTC
[camel-k-runtime] branch master updated: Remove suport for
configuration classes #480
This is an automated email from the ASF dual-hosted git repository.
lburgazzoli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k-runtime.git
The following commit(s) were added to refs/heads/master by this push:
new 60ddf19 Remove suport for configuration classes #480
60ddf19 is described below
commit 60ddf192afa647e13e2bef724b4b9ec7ca97f5f8
Author: Luca Burgazzoli <lb...@gmail.com>
AuthorDate: Mon Sep 21 13:00:30 2020 +0200
Remove suport for configuration classes #480
---
.../k/loader/groovy/GroovySourceLoader.groovy | 7 +--
.../camel/k/loader/java/JavaSourceLoader.java | 10 +++-
.../k/loader/java/JavaSourceLoaderTest.groovy | 8 ---
.../camel/k/loader/java/support/TestRuntime.groovy | 5 --
.../camel/k/loader/js/JavaScriptSourceLoader.java | 8 +--
.../camel/k/loader/js/support/TestRuntime.groovy | 5 --
.../camel/k/loader/kotlin/KotlinSourceLoader.kt | 8 +--
.../camel/k/loader/kotlin/support/TestRuntime.kt | 4 --
.../apache/camel/k/loader/xml/XmlSourceLoader.java | 7 +--
.../camel/k/loader/xml/support/TestRuntime.groovy | 5 --
.../camel/k/loader/yaml/YamlSourceLoader.java | 57 ++++++-------------
.../camel/k/loader/yaml/support/TestSupport.groovy | 16 +++---
.../apache/camel/k/main/ApplicationRuntime.java | 5 --
.../java/org/apache/camel/k/main/RuntimeTest.java | 29 ++++++----
.../apache/camel/k/main/support/MyProcessor.java | 19 ++-----
.../src/test/resources/MyRoutesConfig.java | 33 -----------
.../k/quarkus/cron/deployment/Application.java | 15 +++--
.../camel/k/loader/support/LoaderSupport.java | 6 +-
.../org/apache/camel/k/quarkus/Application.java | 5 --
.../src/main/java/org/apache/camel/k/Runtime.java | 4 --
.../main/java/org/apache/camel/k/SourceLoader.java | 64 ++--------------------
.../apache/camel/k/support/DelegatingRuntime.java | 5 --
.../org/apache/camel/k/support/RouteBuilders.java | 30 ++++++++--
.../org/apache/camel/k/support/SourcesSupport.java | 59 +++++++++-----------
.../camel/k/cron/CronSourceLoaderInterceptor.java | 22 +-------
.../knative/KnativeSourceLoaderInterceptor.java | 22 +-------
26 files changed, 140 insertions(+), 318 deletions(-)
diff --git a/camel-k-loader-groovy/src/main/groovy/org/apache/camel/k/loader/groovy/GroovySourceLoader.groovy b/camel-k-loader-groovy/src/main/groovy/org/apache/camel/k/loader/groovy/GroovySourceLoader.groovy
index 78cc20d..d5b09aa 100644
--- a/camel-k-loader-groovy/src/main/groovy/org/apache/camel/k/loader/groovy/GroovySourceLoader.groovy
+++ b/camel-k-loader-groovy/src/main/groovy/org/apache/camel/k/loader/groovy/GroovySourceLoader.groovy
@@ -16,6 +16,7 @@
*/
package org.apache.camel.k.loader.groovy
+import org.apache.camel.RoutesBuilder
import org.apache.camel.k.Runtime
import org.apache.camel.k.Source
import org.apache.camel.k.SourceLoader
@@ -31,8 +32,8 @@ class GroovySourceLoader implements SourceLoader {
}
@Override
- Result load(Runtime runtime, Source source) throws Exception {
- def builder = RouteBuilders.endpoint(source, { reader, builder ->
+ RoutesBuilder load(Runtime runtime, Source source) {
+ return RouteBuilders.endpoint(source, { reader, builder ->
def ic = new ImportCustomizer()
ic.addStarImports('org.apache.camel')
ic.addStarImports('org.apache.camel.spi')
@@ -48,7 +49,5 @@ class GroovySourceLoader implements SourceLoader {
script.setDelegate(new IntegrationConfiguration(builder))
script.run()
})
-
- return Result.on(builder)
}
}
diff --git a/camel-k-loader-java/src/main/java/org/apache/camel/k/loader/java/JavaSourceLoader.java b/camel-k-loader-java/src/main/java/org/apache/camel/k/loader/java/JavaSourceLoader.java
index 7d18fe2..5286090 100644
--- a/camel-k-loader-java/src/main/java/org/apache/camel/k/loader/java/JavaSourceLoader.java
+++ b/camel-k-loader-java/src/main/java/org/apache/camel/k/loader/java/JavaSourceLoader.java
@@ -16,12 +16,14 @@
*/
package org.apache.camel.k.loader.java;
+import java.io.IOException;
import java.io.InputStream;
import java.util.Collections;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import org.apache.camel.RoutesBuilder;
import org.apache.camel.k.CompositeClassloader;
import org.apache.camel.k.Runtime;
import org.apache.camel.k.Source;
@@ -41,12 +43,12 @@ public class JavaSourceLoader implements SourceLoader {
}
@Override
- public Result load(Runtime runtime, Source source) throws Exception {
+ public RoutesBuilder load(Runtime runtime, Source source) {
try (InputStream is = source.resolveAsInputStream(runtime.getCamelContext())) {
final String content = IOHelper.loadText(is);
final String name = determineQualifiedName(source, content);
final Reflect compiled = Reflect.compile(name, content);
- final Object instance = compiled.create().get();
+ final RoutesBuilder instance = compiled.create().get();
// The given source may contains additional nested classes which are unknown to Camel
// as they are associated to the ClassLoader used to compile the source thus we need
@@ -56,7 +58,9 @@ public class JavaSourceLoader implements SourceLoader {
((CompositeClassloader) loader).addClassLoader(instance.getClass().getClassLoader());
}
- return Result.on(instance);
+ return instance;
+ } catch (IOException e) {
+ throw new RuntimeException(e);
}
}
diff --git a/camel-k-loader-java/src/test/groovy/org/apache/camel/k/loader/java/JavaSourceLoaderTest.groovy b/camel-k-loader-java/src/test/groovy/org/apache/camel/k/loader/java/JavaSourceLoaderTest.groovy
index 2b868f8..1290d79 100644
--- a/camel-k-loader-java/src/test/groovy/org/apache/camel/k/loader/java/JavaSourceLoaderTest.groovy
+++ b/camel-k-loader-java/src/test/groovy/org/apache/camel/k/loader/java/JavaSourceLoaderTest.groovy
@@ -68,14 +68,6 @@ class JavaSourceLoaderTest extends Specification {
}
}
- def "load configuration"() {
- when:
- runtime.loadRoutes("classpath:MyRoutesConfig.java")
- then:
- runtime.configurations.size() == 1
- }
-
-
def "load"(location) {
expect:
runtime.loadRoutes(location)
diff --git a/camel-k-loader-java/src/test/groovy/org/apache/camel/k/loader/java/support/TestRuntime.groovy b/camel-k-loader-java/src/test/groovy/org/apache/camel/k/loader/java/support/TestRuntime.groovy
index 6d8f2ea..d496d8a 100644
--- a/camel-k-loader-java/src/test/groovy/org/apache/camel/k/loader/java/support/TestRuntime.groovy
+++ b/camel-k-loader-java/src/test/groovy/org/apache/camel/k/loader/java/support/TestRuntime.groovy
@@ -47,11 +47,6 @@ class TestRuntime implements Runtime, AutoCloseable {
this.context.addRoutes(builder)
}
- @Override
- void addConfiguration(Object configuration) {
- this.configurations.add(configuration)
- }
-
void loadRoutes(String... routes) {
SourcesSupport.loadSources(this, routes)
}
diff --git a/camel-k-loader-js/src/main/java/org/apache/camel/k/loader/js/JavaScriptSourceLoader.java b/camel-k-loader-js/src/main/java/org/apache/camel/k/loader/js/JavaScriptSourceLoader.java
index 790a69c..031bbb5 100644
--- a/camel-k-loader-js/src/main/java/org/apache/camel/k/loader/js/JavaScriptSourceLoader.java
+++ b/camel-k-loader-js/src/main/java/org/apache/camel/k/loader/js/JavaScriptSourceLoader.java
@@ -45,10 +45,8 @@ public class JavaScriptSourceLoader implements SourceLoader {
}
@Override
- public Result load(Runtime runtime, Source source) throws Exception {
- RoutesBuilder builder = RouteBuilders.endpoint(source, JavaScriptSourceLoader::doLoad);
-
- return SourceLoader.Result.on(builder);
+ public RoutesBuilder load(Runtime runtime, Source source) {
+ return RouteBuilders.endpoint(source, JavaScriptSourceLoader::doLoad);
}
private static void doLoad(Reader reader, EndpointRouteBuilder builder) {
@@ -84,7 +82,7 @@ public class JavaScriptSourceLoader implements SourceLoader {
//
builder.getContext().addLifecycleStrategy(new LifecycleStrategySupport() {
@Override
- public void onContextStop(CamelContext camelContext) {
+ public void onContextStopping(CamelContext camelContext) {
context.close(true);
}
});
diff --git a/camel-k-loader-js/src/test/groovy/org/apache/camel/k/loader/js/support/TestRuntime.groovy b/camel-k-loader-js/src/test/groovy/org/apache/camel/k/loader/js/support/TestRuntime.groovy
index 92a9ed7..afd1cf2 100644
--- a/camel-k-loader-js/src/test/groovy/org/apache/camel/k/loader/js/support/TestRuntime.groovy
+++ b/camel-k-loader-js/src/test/groovy/org/apache/camel/k/loader/js/support/TestRuntime.groovy
@@ -50,11 +50,6 @@ class TestRuntime implements Runtime, AutoCloseable {
this.context.addRoutes(builder)
}
- @Override
- void addConfiguration(Object configuration) {
- this.configurations.add(configuration)
- }
-
void loadRoutes(String... routes) {
SourcesSupport.loadSources(this, routes)
}
diff --git a/camel-k-loader-kotlin/camel-k-loader-kotlin/src/main/kotlin/org/apache/camel/k/loader/kotlin/KotlinSourceLoader.kt b/camel-k-loader-kotlin/camel-k-loader-kotlin/src/main/kotlin/org/apache/camel/k/loader/kotlin/KotlinSourceLoader.kt
index 7dffd6c..4b21c18 100644
--- a/camel-k-loader-kotlin/camel-k-loader-kotlin/src/main/kotlin/org/apache/camel/k/loader/kotlin/KotlinSourceLoader.kt
+++ b/camel-k-loader-kotlin/camel-k-loader-kotlin/src/main/kotlin/org/apache/camel/k/loader/kotlin/KotlinSourceLoader.kt
@@ -17,6 +17,7 @@
package org.apache.camel.k.loader.kotlin
import org.apache.camel.Experimental
+import org.apache.camel.RoutesBuilder
import org.apache.camel.RuntimeCamelException
import org.apache.camel.builder.endpoint.EndpointRouteBuilder
import org.apache.camel.k.Runtime
@@ -41,13 +42,10 @@ class KotlinSourceLoader : SourceLoader {
return listOf("kts")
}
- @Throws(Exception::class)
- override fun load(runtime: Runtime, source: Source): SourceLoader.Result {
- val builder = RouteBuilders.endpoint(source) {
+ override fun load(runtime: Runtime, source: Source): RoutesBuilder {
+ return RouteBuilders.endpoint(source) {
reader, builder -> doLoad(reader, builder)
}
-
- return SourceLoader.Result.on(builder)
}
private fun doLoad(reader: Reader, builder: EndpointRouteBuilder) {
diff --git a/camel-k-loader-kotlin/camel-k-loader-kotlin/src/test/kotlin/org/apache/camel/k/loader/kotlin/support/TestRuntime.kt b/camel-k-loader-kotlin/camel-k-loader-kotlin/src/test/kotlin/org/apache/camel/k/loader/kotlin/support/TestRuntime.kt
index 85fa391..6ab8b54 100644
--- a/camel-k-loader-kotlin/camel-k-loader-kotlin/src/test/kotlin/org/apache/camel/k/loader/kotlin/support/TestRuntime.kt
+++ b/camel-k-loader-kotlin/camel-k-loader-kotlin/src/test/kotlin/org/apache/camel/k/loader/kotlin/support/TestRuntime.kt
@@ -49,10 +49,6 @@ class TestRuntime : Runtime {
this.context.addRoutes(builder)
}
- override fun addConfiguration(configuration: Any) {
- this.configurations.add(configuration)
- }
-
fun loadRoutes(vararg routes: String) {
SourcesSupport.loadSources(this, *routes)
}
diff --git a/camel-k-loader-xml/src/main/java/org/apache/camel/k/loader/xml/XmlSourceLoader.java b/camel-k-loader-xml/src/main/java/org/apache/camel/k/loader/xml/XmlSourceLoader.java
index 963c4bc..eb601f9 100644
--- a/camel-k-loader-xml/src/main/java/org/apache/camel/k/loader/xml/XmlSourceLoader.java
+++ b/camel-k-loader-xml/src/main/java/org/apache/camel/k/loader/xml/XmlSourceLoader.java
@@ -21,6 +21,7 @@ import java.util.Collections;
import java.util.List;
import org.apache.camel.ExtendedCamelContext;
+import org.apache.camel.RoutesBuilder;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.k.Runtime;
import org.apache.camel.k.Source;
@@ -43,8 +44,8 @@ public class XmlSourceLoader implements SourceLoader {
}
@Override
- public Result load(Runtime runtime, Source source) throws Exception {
- RouteBuilder builder = new RouteBuilder() {
+ public RoutesBuilder load(Runtime runtime, Source source) {
+ return new RouteBuilder() {
@Override
public void configure() throws Exception {
final ExtendedCamelContext context = getContext().adapt(ExtendedCamelContext.class);
@@ -81,7 +82,5 @@ public class XmlSourceLoader implements SourceLoader {
}
}
};
-
- return Result.on(builder);
}
}
diff --git a/camel-k-loader-xml/src/test/groovy/org/apache/camel/k/loader/xml/support/TestRuntime.groovy b/camel-k-loader-xml/src/test/groovy/org/apache/camel/k/loader/xml/support/TestRuntime.groovy
index 2d24ddf..57df2e8 100644
--- a/camel-k-loader-xml/src/test/groovy/org/apache/camel/k/loader/xml/support/TestRuntime.groovy
+++ b/camel-k-loader-xml/src/test/groovy/org/apache/camel/k/loader/xml/support/TestRuntime.groovy
@@ -50,11 +50,6 @@ class TestRuntime implements Runtime, AutoCloseable {
this.context.addRoutes(builder)
}
- @Override
- void addConfiguration(Object configuration) {
- this.configurations.add(configuration)
- }
-
void loadRoutes(String... routes) {
SourcesSupport.loadSources(this, routes)
}
diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/main/java/org/apache/camel/k/loader/yaml/YamlSourceLoader.java b/camel-k-loader-yaml/camel-k-loader-yaml/src/main/java/org/apache/camel/k/loader/yaml/YamlSourceLoader.java
index 2e90f54..ce014b5 100644
--- a/camel-k-loader-yaml/camel-k-loader-yaml/src/main/java/org/apache/camel/k/loader/yaml/YamlSourceLoader.java
+++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/main/java/org/apache/camel/k/loader/yaml/YamlSourceLoader.java
@@ -16,9 +16,6 @@
*/
package org.apache.camel.k.loader.yaml;
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
import java.util.Collections;
import java.util.List;
@@ -30,7 +27,7 @@ import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator;
-import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.RoutesBuilder;
import org.apache.camel.k.Runtime;
import org.apache.camel.k.Source;
import org.apache.camel.k.SourceLoader;
@@ -38,21 +35,20 @@ import org.apache.camel.k.annotation.Loader;
import org.apache.camel.k.loader.yaml.model.Step;
import org.apache.camel.k.loader.yaml.spi.StartStepParser;
import org.apache.camel.k.loader.yaml.spi.StepParser;
+import org.apache.camel.k.support.RouteBuilders;
@Loader("yaml")
public class YamlSourceLoader implements SourceLoader {
+ public static final ObjectMapper MAPPER;
+
static {
+ // register custom reifiers auto-generated from the step parser definitions
YamlReifiers.registerReifiers();
- }
-
- private final ObjectMapper mapper;
- public YamlSourceLoader() {
- YAMLFactory yamlFactory = new YAMLFactory()
- .configure(YAMLGenerator.Feature.MINIMIZE_QUOTES, true)
- .configure(YAMLGenerator.Feature.USE_NATIVE_TYPE_ID, false);
-
- this.mapper = new ObjectMapper(yamlFactory)
+ MAPPER = new ObjectMapper(
+ new YAMLFactory()
+ .configure(YAMLGenerator.Feature.MINIMIZE_QUOTES, true)
+ .configure(YAMLGenerator.Feature.USE_NATIVE_TYPE_ID, false))
.registerModule(new YamlModule())
.setSerializationInclusion(JsonInclude.Include.NON_EMPTY)
.setPropertyNamingStrategy(PropertyNamingStrategy.KEBAB_CASE)
@@ -68,34 +64,15 @@ public class YamlSourceLoader implements SourceLoader {
}
@Override
- public Result load(Runtime runtime, Source source) throws Exception {
- return Result.on(
- builder(source.resolveAsInputStream(runtime.getCamelContext()))
- );
- }
-
- final ObjectMapper mapper() {
- return mapper;
- }
-
- final RouteBuilder builder(String content) {
- return builder(new ByteArrayInputStream(content.getBytes(StandardCharsets.UTF_8)));
- }
-
- final RouteBuilder builder(InputStream is) {
- return new RouteBuilder() {
- @Override
- public void configure() throws Exception {
- final StepParser.Resolver resolver = StepParser.Resolver.caching(new YamlStepResolver());
+ public RoutesBuilder load(Runtime runtime, Source source) {
+ return RouteBuilders.route(source, (reader, builder) -> {
+ final StepParser.Resolver resolver = StepParser.Resolver.caching(new YamlStepResolver());
- try (is) {
- for (Step step : mapper.readValue(is, Step[].class)) {
- StartStepParser.invoke(
- new StepParser.Context(this, null, mapper, step.node, resolver),
- step.id);
- }
- }
+ for (Step step : MAPPER.readValue(reader, Step[].class)) {
+ StartStepParser.invoke(
+ new StepParser.Context(builder, null, MAPPER, step.node, resolver),
+ step.id);
}
- };
+ });
}
}
diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/support/TestSupport.groovy b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/support/TestSupport.groovy
index 2781923..37ceae8 100644
--- a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/support/TestSupport.groovy
+++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/support/TestSupport.groovy
@@ -40,7 +40,7 @@ import java.nio.charset.StandardCharsets
@Slf4j
class TestSupport extends Specification {
static def RESOLVER = new YamlStepResolver()
- static def MAPPER = new YamlSourceLoader().mapper()
+ static def MAPPER = YamlSourceLoader.MAPPER
static StepParser.Context stepContext(String content) {
def node = MAPPER.readTree(content.stripMargin())
@@ -76,7 +76,9 @@ class TestSupport extends Specification {
Source source,
@DelegatesTo(CamelContext) Closure closure) {
def context = new DefaultCamelContext()
- def builder = new YamlSourceLoader().load(Runtime.on(context), source).builder().orElseThrow(() -> new IllegalArgumentException());
+ def builder = new YamlSourceLoader().load(Runtime.on(context), source)
+
+ assert builder != null
context.disableJMX()
context.setStreamCaching(true)
@@ -117,11 +119,7 @@ class TestSupport extends Specification {
return type.getConstructor().newInstance().toProcessor(stepContext(content))
}
- static <U extends StartStepParser> ProcessorDefinition<?> toStartProcessor(Class<U> type, String content) {
- return type.getConstructor().newInstance().process(stepContext(content))
- }
-
- static ProcessorDefinition<?> toProcessor(String id, String content) {
+ static Object toProcessor(String id, String content) {
def ctx = stepContext(content)
def parser = RESOLVER.resolve(ctx.camelContext, id)
@@ -140,7 +138,9 @@ class TestSupport extends Specification {
static def load(CamelContext context, String content) {
def source = Sources.fromBytes('yaml', content.stripMargin().getBytes(StandardCharsets.UTF_8))
- def builder = new YamlSourceLoader().load(Runtime.on(context), source).builder().orElseThrow(() -> new IllegalArgumentException());
+ def builder = new YamlSourceLoader().load(Runtime.on(context), source)
+
+ assert builder != null
context.addRoutes(builder)
}
diff --git a/camel-k-main/camel-k-runtime-main/src/main/java/org/apache/camel/k/main/ApplicationRuntime.java b/camel-k-main/camel-k-runtime-main/src/main/java/org/apache/camel/k/main/ApplicationRuntime.java
index 05cb0b2..df01e69 100644
--- a/camel-k-main/camel-k-runtime-main/src/main/java/org/apache/camel/k/main/ApplicationRuntime.java
+++ b/camel-k-main/camel-k-runtime-main/src/main/java/org/apache/camel/k/main/ApplicationRuntime.java
@@ -82,11 +82,6 @@ public final class ApplicationRuntime implements Runtime {
}
@Override
- public void addConfiguration(Object configuration) {
- this.main.configure().addConfiguration(configuration);
- }
-
- @Override
public void setInitialProperties(Properties properties) {
this.main.getCamelContext().getPropertiesComponent().setInitialProperties(properties);
}
diff --git a/camel-k-main/camel-k-runtime-main/src/test/java/org/apache/camel/k/main/RuntimeTest.java b/camel-k-main/camel-k-runtime-main/src/test/java/org/apache/camel/k/main/RuntimeTest.java
index 8197df6..bbb649a 100644
--- a/camel-k-main/camel-k-runtime-main/src/test/java/org/apache/camel/k/main/RuntimeTest.java
+++ b/camel-k-main/camel-k-runtime-main/src/test/java/org/apache/camel/k/main/RuntimeTest.java
@@ -29,6 +29,7 @@ import org.apache.camel.k.http.PlatformHttpServiceContextCustomizer;
import org.apache.camel.k.listener.ContextConfigurer;
import org.apache.camel.k.listener.SourcesConfigurer;
import org.apache.camel.k.main.support.MyBean;
+import org.apache.camel.k.main.support.MyProcessor;
import org.apache.camel.k.support.SourcesSupport;
import org.apache.camel.k.test.AvailablePortFinder;
import org.apache.camel.model.ModelCamelContext;
@@ -104,10 +105,14 @@ public class RuntimeTest {
@Test
public void testLoadJavaSource() throws Exception {
- runtime.addListener(SourcesSupport.forRoutes("classpath:MyRoutesWithBeans.java", "classpath:MyRoutesConfig.java"));
+ runtime.setProperties(mapOf(
+ "camel.beans.myProcessor", "#class:" + MyProcessor.class.getName()
+ ));
+
+ runtime.addListener(SourcesSupport.forRoutes("classpath:MyRoutesWithBeans.java"));
runtime.addListener(Runtime.Phase.Started, r -> {
assertThat(runtime.getCamelContext().getRoutes()).hasSize(1);
- assertThat(runtime.getRegistry().lookupByName("my-processor")).isNotNull();
+ assertThat(runtime.getRegistry().lookupByName("myProcessor")).isNotNull();
assertThat(runtime.getRegistry().lookupByName("my-bean")).isInstanceOfSatisfying(MyBean.class, b -> {
assertThat(b).hasFieldOrPropertyWithValue("name", "my-bean-name");
});
@@ -121,15 +126,16 @@ public class RuntimeTest {
runtime.setInitialProperties(
"camel.k.sources[0].name", "MyRoutesWithBeans",
"camel.k.sources[0].location", "classpath:MyRoutesWithBeans.java",
- "camel.k.sources[0].language", "java",
- "camel.k.sources[1].name", "MyRoutesConfig",
- "camel.k.sources[1].location", "classpath:MyRoutesConfig.java",
- "camel.k.sources[1].language", "java"
+ "camel.k.sources[0].language", "java"
);
+ runtime.setProperties(mapOf(
+ "camel.beans.myProcessor", "#class:" + MyProcessor.class.getName()
+ ));
+
runtime.addListener(new SourcesConfigurer());
runtime.addListener(Runtime.Phase.Started, r -> {
assertThat(runtime.getCamelContext().getRoutes()).hasSize(1);
- assertThat(runtime.getRegistry().lookupByName("my-processor")).isNotNull();
+ assertThat(runtime.getRegistry().lookupByName("myProcessor")).isNotNull();
assertThat(runtime.getRegistry().lookupByName("my-bean")).isInstanceOfSatisfying(MyBean.class, b -> {
assertThat(b).hasFieldOrPropertyWithValue("name", "my-bean-name");
});
@@ -141,14 +147,17 @@ public class RuntimeTest {
@Test
public void testLoadJavaSourceFromSimpleProperties() throws Exception {
runtime.setInitialProperties(
- "camel.k.sources[0].location", "classpath:MyRoutesWithBeans.java",
- "camel.k.sources[1].location", "classpath:MyRoutesConfig.java"
+ "camel.k.sources[0].location", "classpath:MyRoutesWithBeans.java"
);
+ runtime.setProperties(mapOf(
+ "camel.beans.myProcessor", "#class:" + MyProcessor.class.getName()
+ ));
+
runtime.addListener(new SourcesConfigurer());
runtime.addListener(Runtime.Phase.Started, Runtime::stop);
runtime.run();
- assertThat(runtime.getRegistry().lookupByName("my-processor")).isNotNull();
+ assertThat(runtime.getRegistry().lookupByName("myProcessor")).isNotNull();
assertThat(runtime.getRegistry().lookupByName("my-bean")).isInstanceOfSatisfying(MyBean.class, b -> {
assertThat(b).hasFieldOrPropertyWithValue("name", "my-bean-name");
});
diff --git a/camel-k-loader-java/src/test/resources/MyRoutesConfig.java b/camel-k-main/camel-k-runtime-main/src/test/java/org/apache/camel/k/main/support/MyProcessor.java
similarity index 70%
rename from camel-k-loader-java/src/test/resources/MyRoutesConfig.java
rename to camel-k-main/camel-k-runtime-main/src/test/java/org/apache/camel/k/main/support/MyProcessor.java
index bf733e7..db9f965 100644
--- a/camel-k-loader-java/src/test/resources/MyRoutesConfig.java
+++ b/camel-k-main/camel-k-runtime-main/src/test/java/org/apache/camel/k/main/support/MyProcessor.java
@@ -14,20 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import org.apache.camel.BindToRegistry;
+package org.apache.camel.k.main.support;
+
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
-import org.apache.camel.builder.RouteBuilder;
-
-public class MyRoutesConfig {
- @BindToRegistry
- public static MyProcessor myProcessor() {
- return new MyProcessor();
- }
- public static class MyProcessor implements Processor {
- @Override
- public void process(Exchange exchange) throws Exception {
- }
+public class MyProcessor implements Processor {
+ @Override
+ public void process(Exchange exchange) throws Exception {
}
-}
\ No newline at end of file
+}
diff --git a/camel-k-main/camel-k-runtime-main/src/test/resources/MyRoutesConfig.java b/camel-k-main/camel-k-runtime-main/src/test/resources/MyRoutesConfig.java
deleted file mode 100644
index 65f8a05..0000000
--- a/camel-k-main/camel-k-runtime-main/src/test/resources/MyRoutesConfig.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.
- */
-import org.apache.camel.BindToRegistry;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.builder.RouteBuilder;
-
-public class MyRoutesConfig {
- @BindToRegistry("my-processor")
- public static MyProcessor myProcessor() {
- return new MyProcessor();
- }
-
- public static class MyProcessor implements Processor {
- @Override
- public void process(Exchange exchange) throws Exception {
- }
- }
-}
\ No newline at end of file
diff --git a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-cron/src/main/java/org/apache/camel/k/quarkus/cron/deployment/Application.java b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-cron/src/main/java/org/apache/camel/k/quarkus/cron/deployment/Application.java
index 27927c6..87d6c81 100644
--- a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-cron/src/main/java/org/apache/camel/k/quarkus/cron/deployment/Application.java
+++ b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-cron/src/main/java/org/apache/camel/k/quarkus/cron/deployment/Application.java
@@ -29,6 +29,7 @@ import javax.ws.rs.core.MediaType;
import org.apache.camel.CamelContext;
import org.apache.camel.ExtendedCamelContext;
+import org.apache.camel.RoutesBuilder;
import org.apache.camel.k.Constants;
import org.apache.camel.k.Runtime;
import org.apache.camel.k.Source;
@@ -82,18 +83,16 @@ public class Application {
interceptor.setRuntime(rt);
interceptor.setOverridableComponents("timer");
- SourceLoader.Result result = interceptor.afterLoad(
+ RoutesBuilder builder = interceptor.afterLoad(
loader,
source,
loader.load(rt, source));
- result.builder().ifPresent(b -> {
- try {
- context.addRoutes(b);
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- });
+ try {
+ context.addRoutes(builder);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
return "" + context.getRoutesSize();
}
diff --git a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-loader-support/src/main/java/org/apache/camel/k/loader/support/LoaderSupport.java b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-loader-support/src/main/java/org/apache/camel/k/loader/support/LoaderSupport.java
index 7e36b83..2f358ca 100644
--- a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-loader-support/src/main/java/org/apache/camel/k/loader/support/LoaderSupport.java
+++ b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-loader-support/src/main/java/org/apache/camel/k/loader/support/LoaderSupport.java
@@ -23,6 +23,7 @@ import javax.json.JsonArrayBuilder;
import javax.json.JsonObject;
import org.apache.camel.CamelContext;
+import org.apache.camel.RoutesBuilder;
import org.apache.camel.k.Runtime;
import org.apache.camel.k.Source;
import org.apache.camel.k.SourceLoader;
@@ -36,10 +37,9 @@ public final class LoaderSupport {
final SourceLoader loader = context.getRegistry().lookupByNameAndType(loaderId, SourceLoader.class);
final Runtime runtime = Runtime.on(context);
final Source source = Sources.fromBytes(name, loaderId, null, code);
- final SourceLoader.Result result = loader.load(Runtime.on(context), source);
+ final RoutesBuilder builder = loader.load(Runtime.on(context), source);
- result.builder().ifPresent(runtime::addRoutes);
- result.configuration().ifPresent(runtime::addConfiguration);
+ runtime.addRoutes(builder);
return Json.createObjectBuilder()
.add("components", extractComponents(context))
diff --git a/camel-k-quarkus/camel-k-runtime-quarkus/runtime/src/main/java/org/apache/camel/k/quarkus/Application.java b/camel-k-quarkus/camel-k-runtime-quarkus/runtime/src/main/java/org/apache/camel/k/quarkus/Application.java
index 8dcb621..0d971f5 100644
--- a/camel-k-quarkus/camel-k-runtime-quarkus/runtime/src/main/java/org/apache/camel/k/quarkus/Application.java
+++ b/camel-k-quarkus/camel-k-runtime-quarkus/runtime/src/main/java/org/apache/camel/k/quarkus/Application.java
@@ -63,11 +63,6 @@ public final class Application {
}
@Override
- public void addConfiguration(Object configuration) {
- main.configure().addConfiguration(configuration);
- }
-
- @Override
public void setInitialProperties(Properties properties) {
main.setInitialProperties(properties);
}
diff --git a/camel-k-runtime-core/src/main/java/org/apache/camel/k/Runtime.java b/camel-k-runtime-core/src/main/java/org/apache/camel/k/Runtime.java
index d0979a0..b43152c 100644
--- a/camel-k-runtime-core/src/main/java/org/apache/camel/k/Runtime.java
+++ b/camel-k-runtime-core/src/main/java/org/apache/camel/k/Runtime.java
@@ -87,10 +87,6 @@ public interface Runtime extends HasCamelContext, AutoCloseable {
}
}
- default void addConfiguration(Object configuration) {
- throw new UnsupportedOperationException();
- }
-
default void setPropertiesLocations(Collection<String> locations) {
getCamelContext().getPropertiesComponent().setLocation(
locations.stream()
diff --git a/camel-k-runtime-core/src/main/java/org/apache/camel/k/SourceLoader.java b/camel-k-runtime-core/src/main/java/org/apache/camel/k/SourceLoader.java
index 923b3ee..0b15130 100644
--- a/camel-k-runtime-core/src/main/java/org/apache/camel/k/SourceLoader.java
+++ b/camel-k-runtime-core/src/main/java/org/apache/camel/k/SourceLoader.java
@@ -17,10 +17,8 @@
package org.apache.camel.k;
import java.util.List;
-import java.util.Optional;
import org.apache.camel.RoutesBuilder;
-import org.apache.camel.util.ObjectHelper;
public interface SourceLoader {
/**
@@ -38,65 +36,11 @@ public interface SourceLoader {
* @return the RoutesBuilder.
* @throws Exception
*/
- Result load(Runtime runtime, Source source) throws Exception;
+ RoutesBuilder load(Runtime runtime, Source source);
/**
- * Represent the result of the process of loading a {@link Source}.
+ * Define some entry point to intercept the creation fo routes from a {@link Source}
*/
- interface Result {
- /**
- * A {@RoutesBuilder} containing routes to be added to the {@link org.apache.camel.CamelContext}.
- */
- Optional<RoutesBuilder> builder();
-
- /**
- * A configuration class that can be used to customize the {@link org.apache.camel.CamelContext}.
- */
- Optional<Object> configuration();
-
- /**
- * Construct an instance of {@link Result} for the given {@link RoutesBuilder}.
- */
- static Result on(RoutesBuilder target) {
- ObjectHelper.notNull(target, "target");
-
- return new Result() {
- @Override
- public Optional<RoutesBuilder> builder() {
- return Optional.of(target);
- }
-
- @Override
- public Optional<Object> configuration() {
- return Optional.empty();
- }
- };
- }
-
- /**
- * Construct an instance of {@link Result} by determining the type of hte given target object..
- */
- static Result on(Object target) {
- ObjectHelper.notNull(target, "target");
-
- return new Result() {
- @Override
- public Optional<RoutesBuilder> builder() {
- return target instanceof RoutesBuilder
- ? Optional.of((RoutesBuilder)target)
- : Optional.empty();
- }
-
- @Override
- public Optional<Object> configuration() {
- return target instanceof RoutesBuilder
- ? Optional.empty()
- : Optional.of(target);
- }
- };
- }
- }
-
interface Interceptor {
/**
* Invoked before the source is materialized top a RoutesBuilder.
@@ -107,8 +51,8 @@ public interface SourceLoader {
/**
* Invoked after the source is materialized and before is added to the runtime.
*/
- default Result afterLoad(SourceLoader loader, Source source, Result result) {
- return result;
+ default RoutesBuilder afterLoad(SourceLoader loader, Source source, RoutesBuilder builder) {
+ return builder;
}
}
}
diff --git a/camel-k-runtime-core/src/main/java/org/apache/camel/k/support/DelegatingRuntime.java b/camel-k-runtime-core/src/main/java/org/apache/camel/k/support/DelegatingRuntime.java
index 960306b..9cce10f 100644
--- a/camel-k-runtime-core/src/main/java/org/apache/camel/k/support/DelegatingRuntime.java
+++ b/camel-k-runtime-core/src/main/java/org/apache/camel/k/support/DelegatingRuntime.java
@@ -78,11 +78,6 @@ public class DelegatingRuntime implements Runtime {
}
@Override
- public void addConfiguration(Object configuration) {
- runtime.addConfiguration(configuration);
- }
-
- @Override
public void setPropertiesLocations(Collection<String> locations) {
runtime.setPropertiesLocations(locations);
}
diff --git a/camel-k-runtime-core/src/main/java/org/apache/camel/k/support/RouteBuilders.java b/camel-k-runtime-core/src/main/java/org/apache/camel/k/support/RouteBuilders.java
index 63b9e70..fbb67bc 100644
--- a/camel-k-runtime-core/src/main/java/org/apache/camel/k/support/RouteBuilders.java
+++ b/camel-k-runtime-core/src/main/java/org/apache/camel/k/support/RouteBuilders.java
@@ -17,17 +17,19 @@
package org.apache.camel.k.support;
import java.io.Reader;
-import java.util.function.BiConsumer;
-import java.util.function.Consumer;
+import org.apache.camel.RoutesBuilder;
+import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.builder.endpoint.EndpointRouteBuilder;
import org.apache.camel.k.Source;
+import org.apache.camel.util.function.ThrowingBiConsumer;
+import org.apache.camel.util.function.ThrowingConsumer;
public final class RouteBuilders {
private RouteBuilders() {
}
- public static EndpointRouteBuilder endpoint(Source source, BiConsumer<Reader, EndpointRouteBuilder> consumer) {
+ public static EndpointRouteBuilder endpoint(Source source, ThrowingBiConsumer<Reader, EndpointRouteBuilder, Exception> consumer) {
return new EndpointRouteBuilder() {
@Override
public void configure() throws Exception {
@@ -38,7 +40,7 @@ public final class RouteBuilders {
};
}
- public static EndpointRouteBuilder endpoint(Consumer<EndpointRouteBuilder> consumer) {
+ public static EndpointRouteBuilder endpoint(ThrowingConsumer<EndpointRouteBuilder, Exception> consumer) {
return new EndpointRouteBuilder() {
@Override
public void configure() throws Exception {
@@ -46,4 +48,24 @@ public final class RouteBuilders {
}
};
}
+
+ public static RoutesBuilder route(Source source, ThrowingBiConsumer<Reader, RouteBuilder, Exception> consumer) {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ try (Reader reader = source.resolveAsReader(getContext())) {
+ consumer.accept(reader, this);
+ }
+ }
+ };
+ }
+
+ public static RoutesBuilder route(ThrowingConsumer<RouteBuilder, Exception> consumer) {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ consumer.accept(this);
+ }
+ };
+ }
}
diff --git a/camel-k-runtime-core/src/main/java/org/apache/camel/k/support/SourcesSupport.java b/camel-k-runtime-core/src/main/java/org/apache/camel/k/support/SourcesSupport.java
index 0482ec7..88dda22 100644
--- a/camel-k-runtime-core/src/main/java/org/apache/camel/k/support/SourcesSupport.java
+++ b/camel-k-runtime-core/src/main/java/org/apache/camel/k/support/SourcesSupport.java
@@ -101,14 +101,13 @@ public final class SourcesSupport {
interceptor.beforeLoad(loader, source);
}
- SourceLoader.Result result = loader.load(runtime, source);
+ RoutesBuilder result = loader.load(runtime, source);
for (SourceLoader.Interceptor interceptor: interceptors) {
result = interceptor.afterLoad(loader, source, result);
}
- result.builder().ifPresent(runtime::addRoutes);
- result.configuration().ifPresent(runtime::addConfiguration);
+ runtime.addRoutes(result);
} catch (Exception e) {
throw RuntimeCamelException.wrapRuntimeCamelException(e);
}
@@ -128,37 +127,33 @@ public final class SourcesSupport {
return List.of(
new SourceLoader.Interceptor() {
@Override
- public SourceLoader.Result afterLoad(SourceLoader loader, Source source, SourceLoader.Result result) {
- RouteBuilder builder = result.builder()
- .map(RouteBuilder.class::cast)
- .orElseThrow(() -> new IllegalArgumentException("Unexpected routes builder type"));
-
- builder.addLifecycleInterceptor(new RouteBuilderLifecycleStrategy() {
- @Override
- public void afterConfigure(RouteBuilder builder) {
- List<RouteDefinition> routes = builder.getRouteCollection().getRoutes();
- List<RouteTemplateDefinition> templates = builder.getRouteTemplateCollection().getRouteTemplates();
-
- if (routes.size() != 1) {
- throw new IllegalArgumentException("There should be a single route definition, got " + routes.size());
+ public RoutesBuilder afterLoad(SourceLoader loader, Source source, RoutesBuilder builder) {
+ return SourcesSupport.afterConfigure(builder, rb -> {
+ rb.addLifecycleInterceptor(new RouteBuilderLifecycleStrategy() {
+ @Override
+ public void afterConfigure(RouteBuilder builder) {
+ List<RouteDefinition> routes = builder.getRouteCollection().getRoutes();
+ List<RouteTemplateDefinition> templates = builder.getRouteTemplateCollection().getRouteTemplates();
+
+ if (routes.size() != 1) {
+ throw new IllegalArgumentException("There should be a single route definition, got " + routes.size());
+ }
+ if (!templates.isEmpty()) {
+ throw new IllegalArgumentException("There should not be any template, got " + templates.size());
+ }
+
+ // create a new template from the source
+ RouteTemplateDefinition templatesDefinition = builder.getRouteTemplateCollection().routeTemplate(source.getId());
+ templatesDefinition.setRoute(routes.get(0));
+
+ source.getPropertyNames().forEach(templatesDefinition::templateParameter);
+
+ // remove all routes definitions as they have been translated
+ // in the related route template
+ routes.clear();
}
- if (!templates.isEmpty()) {
- throw new IllegalArgumentException("There should not be any template, got " + templates.size());
- }
-
- // create a new template from the source
- RouteTemplateDefinition templatesDefinition = builder.getRouteTemplateCollection().routeTemplate(source.getId());
- templatesDefinition.setRoute(routes.get(0));
-
- source.getPropertyNames().forEach(templatesDefinition::templateParameter);
-
- // remove all routes definitions as they have been translated
- // in the related route template
- routes.clear();
- }
+ });
});
-
- return SourceLoader.Result.on(builder);
}
}
);
diff --git a/camel-k-runtime-cron/src/main/java/org/apache/camel/k/cron/CronSourceLoaderInterceptor.java b/camel-k-runtime-cron/src/main/java/org/apache/camel/k/cron/CronSourceLoaderInterceptor.java
index 36ac205..21d55a2 100644
--- a/camel-k-runtime-cron/src/main/java/org/apache/camel/k/cron/CronSourceLoaderInterceptor.java
+++ b/camel-k-runtime-cron/src/main/java/org/apache/camel/k/cron/CronSourceLoaderInterceptor.java
@@ -16,8 +16,6 @@
*/
package org.apache.camel.k.cron;
-import java.util.Optional;
-
import org.apache.camel.CamelContext;
import org.apache.camel.RoutesBuilder;
import org.apache.camel.builder.RouteBuilder;
@@ -75,24 +73,8 @@ public class CronSourceLoaderInterceptor implements SourceLoader.Interceptor, Ru
}
@Override
- public void beforeLoad(SourceLoader loader, Source source) {
- // no-op
- }
-
- @Override
- public SourceLoader.Result afterLoad(SourceLoader loader, Source source, SourceLoader.Result result) {
- return new SourceLoader.Result() {
- @Override
- public Optional<RoutesBuilder> builder() {
- return result.builder().map(
- builder -> SourcesSupport.afterConfigure(builder, CronSourceLoaderInterceptor.this::afterConfigure)
- );
- }
- @Override
- public Optional<Object> configuration() {
- return result.configuration();
- }
- };
+ public RoutesBuilder afterLoad(SourceLoader loader, Source source, RoutesBuilder builder) {
+ return SourcesSupport.afterConfigure(builder, CronSourceLoaderInterceptor.this::afterConfigure);
}
private void afterConfigure(RouteBuilder builder) {
diff --git a/camel-k-runtime-knative/src/main/java/org/apache/camel/k/loader/knative/KnativeSourceLoaderInterceptor.java b/camel-k-runtime-knative/src/main/java/org/apache/camel/k/loader/knative/KnativeSourceLoaderInterceptor.java
index 979fae7..ab670d0 100644
--- a/camel-k-runtime-knative/src/main/java/org/apache/camel/k/loader/knative/KnativeSourceLoaderInterceptor.java
+++ b/camel-k-runtime-knative/src/main/java/org/apache/camel/k/loader/knative/KnativeSourceLoaderInterceptor.java
@@ -17,7 +17,6 @@
package org.apache.camel.k.loader.knative;
import java.util.List;
-import java.util.Optional;
import org.apache.camel.CamelContext;
import org.apache.camel.RoutesBuilder;
@@ -36,25 +35,8 @@ public class KnativeSourceLoaderInterceptor implements SourceLoader.Interceptor
private static final Logger LOGGER = LoggerFactory.getLogger(KnativeSourceLoaderInterceptor.class);
@Override
- public void beforeLoad(SourceLoader loader, Source source) {
- // no-op
- }
-
- @Override
- public SourceLoader.Result afterLoad(SourceLoader loader, Source source, SourceLoader.Result result) {
- return new SourceLoader.Result() {
- @Override
- public Optional<RoutesBuilder> builder() {
- return result.builder().map(
- bulider -> SourcesSupport.afterConfigure(bulider, KnativeSourceLoaderInterceptor::afterConfigure)
- );
- }
-
- @Override
- public Optional<Object> configuration() {
- return result.configuration();
- }
- };
+ public RoutesBuilder afterLoad(SourceLoader loader, Source source, RoutesBuilder bulider) {
+ return SourcesSupport.afterConfigure(bulider, KnativeSourceLoaderInterceptor::afterConfigure);
}
private static void afterConfigure(RouteBuilder builder) {