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 2018/12/14 07:58:24 UTC

[camel-k] branch master updated (be365ed -> 1331a29)

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

nferraro pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git.


    from be365ed  Inject camel-k version as environment variable #285
     new aa2890f  runtime: initial support for traits #287
     new 4a14f8c  runtime: use camel built-in service loader to find routes loaders
     new 1331a29  runtime: refactor project layout

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 runtime/{jvm => camel-k-runtime-core}/pom.xml      |  27 +---
 .../main/java/org/apache/camel/k}/Constants.java   |   5 +-
 .../main/java/org/apache/camel/k}/Language.java    |  18 ++-
 .../java/org/apache/camel/k}/RoutesLoader.java     |   2 +-
 .../java/org/apache/camel/k}/RuntimeRegistry.java  |   6 +-
 .../java/org/apache/camel/k/RuntimeTrait.java}     |  14 +-
 .../src/main/java/org/apache/camel/k}/Source.java  |   2 +-
 runtime/{groovy => camel-k-runtime-groovy}/pom.xml |   0
 .../camel/k/groovy/GroovyRoutesLoader.groovy       |   4 +
 .../k/groovy/dsl/ComponentConfiguration.groovy     |   0
 .../k/groovy/dsl/ComponentsConfiguration.groovy    |   0
 .../camel/k/groovy/dsl/ContextConfiguration.groovy |   2 +-
 .../k/groovy/dsl/IntegrationConfiguration.groovy   |   2 +-
 .../k/groovy/dsl/RegistryConfiguration.groovy      |   2 +-
 .../camel/k/groovy/dsl/RestConfiguration.groovy    |   0
 .../groovy/extension/LogComponentExtension.groovy  |   0
 .../org.codehaus.groovy.runtime.ExtensionModule    |   0
 .../services/org/apache/camel/k/loader/groovy}     |   2 +-
 .../org/apache/camel/k/groovy/LoaderTest.groovy    |   7 +-
 .../camel/k/groovy/dsl/IntegrationTest.groovy      |   0
 .../k/groovy/dsl/extension/LogExtensionTest.groovy |   0
 .../src/test/resources/log4j2-test.xml             |   0
 .../src/test/resources/routes-with-bindings.groovy |   0
 .../routes-with-component-configuration.groovy     |   0
 .../src/test/resources/routes-with-rest.groovy     |   0
 .../src/test/resources/routes.groovy               |   0
 runtime/{jvm => camel-k-runtime-jvm}/pom.xml       |  14 +-
 .../java/org/apache/camel/k/jvm/Application.java   |  23 ++-
 .../main/java/org/apache/camel/k/jvm/Runtime.java  |   5 +-
 .../org/apache/camel/k/jvm/RuntimeSupport.java     |  56 +++++++
 .../apache/camel/k/jvm/SimpleRuntimeRegistry.java  |   1 +
 .../java/org/apache/camel/k/jvm/URIResolver.java   |   2 +
 .../org/apache/camel/k/jvm/dsl/Components.java     |   0
 .../apache/camel/k/jvm/loader/JavaClassLoader.java |  34 ++++
 .../camel/k/jvm/loader/JavaScriptLoader.java       |  58 +++++++
 .../camel/k/jvm/loader/JavaSourceLoader.java       |  45 ++++++
 .../org/apache/camel/k/jvm/loader/XmlLoader.java   |  50 ++++++
 .../services/org/apache/camel/k/loader/java-class} |   2 +-
 .../org/apache/camel/k/loader/java-source}         |   2 +-
 .../services/org/apache/camel/k/loader/js}         |   2 +-
 .../services/org/apache/camel/k/loader/xml}        |   2 +-
 .../src/main/resources/log4j2.properties           |   0
 .../org/apache/camel/k/jvm/PropertiesTest.java     | 110 +++++--------
 .../org/apache/camel/k/jvm/RoutesLoadersTest.java  |  35 ++--
 .../java/org/apache/camel/k/jvm/RuntimeTest.java   |   0
 .../apache/camel/k/jvm/RuntimeTestSupport.java}    |  42 +++--
 .../src/test/resources/MyRoutes.java               |   0
 .../test/resources/MyRoutesWithNestedClass.java    |   0
 .../src/test/resources/conf.d/001/conf.properties  |   0
 .../src/test/resources/conf.d/002/conf.properties  |   0
 .../src/test/resources/conf.properties             |   0
 .../src/test/resources/log4j2-test.xml             |   0
 .../src/test/resources/r1.js                       |   0
 .../src/test/resources/r2.mytype                   |   0
 .../src/test/resources/routes-compressed.js.gz.b64 |   0
 .../src/test/resources/routes.js                   |   0
 .../src/test/resources/routes.mytype               |   0
 .../src/test/resources/routes.xml                  |   0
 runtime/{kotlin => camel-k-runtime-kotlin}/pom.xml |   0
 .../apache/camel/k/kotlin/KotlinRoutesLoader.kt    |   4 +
 .../camel/k/kotlin/dsl/ComponentsConfiguration.kt  |   0
 .../camel/k/kotlin/dsl/ContextConfiguration.kt     |   2 +-
 .../camel/k/kotlin/dsl/IntegrationConfiguration.kt |   2 +-
 .../camel/k/kotlin/dsl/RegistryConfiguration.kt    |   2 +-
 .../apache/camel/k/kotlin/dsl/RestConfiguration.kt |   0
 .../k/kotlin/extension/LogComponentExtensions.kt   |   0
 .../services/org/apache/camel/k/loader/kotlin}     |   2 +-
 .../kotlin/org/apache/camel/k/kotlin/LoaderTest.kt |   7 +-
 .../apache/camel/k/kotlin/dsl/IntegrationTest.kt   |   0
 .../camel/k/kotlin/extension/LogExtensionTest.kt   |   0
 .../src/test/resources/log4j2-test.xml             |   0
 .../src/test/resources/routes-new.kts              |   0
 .../src/test/resources/routes-with-bindings.kts    |   0
 .../routes-with-component-configuration.kts        |   0
 .../src/test/resources/routes-with-rest.kts        |   0
 .../src/test/resources/routes.kts                  |   0
 .../pom.xml                                        |   0
 .../apache/camel/k/spring/boot/Application.java    |  18 ++-
 .../services/org.apache.camel.k.jvm.RoutesLoader   |   1 -
 .../java/org/apache/camel/k/jvm/RoutesLoaders.java | 179 ---------------------
 .../services/org.apache.camel.k.jvm.RoutesLoader   |   4 -
 .../services/javax.script.ScriptEngineFactory      |   1 -
 .../services/org.apache.camel.k.jvm.RoutesLoader   |   1 -
 runtime/pom.xml                                    |  13 +-
 84 files changed, 428 insertions(+), 384 deletions(-)
 copy runtime/{jvm => camel-k-runtime-core}/pom.xml (76%)
 rename runtime/{jvm/src/main/java/org/apache/camel/k/jvm => camel-k-runtime-core/src/main/java/org/apache/camel/k}/Constants.java (80%)
 rename runtime/{jvm/src/main/java/org/apache/camel/k/jvm => camel-k-runtime-core/src/main/java/org/apache/camel/k}/Language.java (86%)
 rename runtime/{jvm/src/main/java/org/apache/camel/k/jvm => camel-k-runtime-core/src/main/java/org/apache/camel/k}/RoutesLoader.java (97%)
 rename runtime/{jvm/src/main/java/org/apache/camel/k/jvm => camel-k-runtime-core/src/main/java/org/apache/camel/k}/RuntimeRegistry.java (96%)
 copy runtime/{camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttp.java => camel-k-runtime-core/src/main/java/org/apache/camel/k/RuntimeTrait.java} (78%)
 rename runtime/{jvm/src/main/java/org/apache/camel/k/jvm => camel-k-runtime-core/src/main/java/org/apache/camel/k}/Source.java (98%)
 rename runtime/{groovy => camel-k-runtime-groovy}/pom.xml (100%)
 rename runtime/{groovy => camel-k-runtime-groovy}/src/main/groovy/org/apache/camel/k/groovy/GroovyRoutesLoader.groovy (93%)
 rename runtime/{groovy => camel-k-runtime-groovy}/src/main/groovy/org/apache/camel/k/groovy/dsl/ComponentConfiguration.groovy (100%)
 rename runtime/{groovy => camel-k-runtime-groovy}/src/main/groovy/org/apache/camel/k/groovy/dsl/ComponentsConfiguration.groovy (100%)
 rename runtime/{groovy => camel-k-runtime-groovy}/src/main/groovy/org/apache/camel/k/groovy/dsl/ContextConfiguration.groovy (97%)
 rename runtime/{groovy => camel-k-runtime-groovy}/src/main/groovy/org/apache/camel/k/groovy/dsl/IntegrationConfiguration.groovy (98%)
 rename runtime/{groovy => camel-k-runtime-groovy}/src/main/groovy/org/apache/camel/k/groovy/dsl/RegistryConfiguration.groovy (96%)
 rename runtime/{groovy => camel-k-runtime-groovy}/src/main/groovy/org/apache/camel/k/groovy/dsl/RestConfiguration.groovy (100%)
 rename runtime/{groovy => camel-k-runtime-groovy}/src/main/groovy/org/apache/camel/k/groovy/extension/LogComponentExtension.groovy (100%)
 rename runtime/{groovy => camel-k-runtime-groovy}/src/main/resources/META-INF/services/org.codehaus.groovy.runtime.ExtensionModule (100%)
 copy runtime/{camel-knative/src/main/resources/META-INF/services/org/apache/camel/component/knative => camel-k-runtime-groovy/src/main/resources/META-INF/services/org/apache/camel/k/loader/groovy} (93%)
 rename runtime/{groovy => camel-k-runtime-groovy}/src/test/groovy/org/apache/camel/k/groovy/LoaderTest.groovy (88%)
 rename runtime/{groovy => camel-k-runtime-groovy}/src/test/groovy/org/apache/camel/k/groovy/dsl/IntegrationTest.groovy (100%)
 rename runtime/{groovy => camel-k-runtime-groovy}/src/test/groovy/org/apache/camel/k/groovy/dsl/extension/LogExtensionTest.groovy (100%)
 rename runtime/{groovy => camel-k-runtime-groovy}/src/test/resources/log4j2-test.xml (100%)
 rename runtime/{groovy => camel-k-runtime-groovy}/src/test/resources/routes-with-bindings.groovy (100%)
 rename runtime/{groovy => camel-k-runtime-groovy}/src/test/resources/routes-with-component-configuration.groovy (100%)
 rename runtime/{groovy => camel-k-runtime-groovy}/src/test/resources/routes-with-rest.groovy (100%)
 rename runtime/{groovy => camel-k-runtime-groovy}/src/test/resources/routes.groovy (100%)
 rename runtime/{jvm => camel-k-runtime-jvm}/pom.xml (90%)
 rename runtime/{jvm => camel-k-runtime-jvm}/src/main/java/org/apache/camel/k/jvm/Application.java (83%)
 rename runtime/{jvm => camel-k-runtime-jvm}/src/main/java/org/apache/camel/k/jvm/Runtime.java (94%)
 rename runtime/{jvm => camel-k-runtime-jvm}/src/main/java/org/apache/camel/k/jvm/RuntimeSupport.java (72%)
 rename runtime/{jvm => camel-k-runtime-jvm}/src/main/java/org/apache/camel/k/jvm/SimpleRuntimeRegistry.java (98%)
 rename runtime/{jvm => camel-k-runtime-jvm}/src/main/java/org/apache/camel/k/jvm/URIResolver.java (97%)
 copy runtime/{jvm => camel-k-runtime-jvm}/src/main/java/org/apache/camel/k/jvm/dsl/Components.java (100%)
 create mode 100644 runtime/camel-k-runtime-jvm/src/main/java/org/apache/camel/k/jvm/loader/JavaClassLoader.java
 create mode 100644 runtime/camel-k-runtime-jvm/src/main/java/org/apache/camel/k/jvm/loader/JavaScriptLoader.java
 create mode 100644 runtime/camel-k-runtime-jvm/src/main/java/org/apache/camel/k/jvm/loader/JavaSourceLoader.java
 create mode 100644 runtime/camel-k-runtime-jvm/src/main/java/org/apache/camel/k/jvm/loader/XmlLoader.java
 copy runtime/{camel-knative/src/main/resources/META-INF/services/org/apache/camel/component/knative => camel-k-runtime-jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/java-class} (93%)
 copy runtime/{camel-knative/src/main/resources/META-INF/services/org/apache/camel/component/knative => camel-k-runtime-jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/java-source} (93%)
 copy runtime/{camel-knative/src/main/resources/META-INF/services/org/apache/camel/component/knative => camel-k-runtime-jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/js} (93%)
 copy runtime/{camel-knative/src/main/resources/META-INF/services/org/apache/camel/component/knative => camel-k-runtime-jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/xml} (93%)
 rename runtime/{jvm => camel-k-runtime-jvm}/src/main/resources/log4j2.properties (100%)
 rename runtime/{jvm => camel-k-runtime-jvm}/src/test/java/org/apache/camel/k/jvm/PropertiesTest.java (55%)
 rename runtime/{jvm => camel-k-runtime-jvm}/src/test/java/org/apache/camel/k/jvm/RoutesLoadersTest.java (82%)
 rename runtime/{jvm => camel-k-runtime-jvm}/src/test/java/org/apache/camel/k/jvm/RuntimeTest.java (100%)
 rename runtime/{jvm/src/main/java/org/apache/camel/k/jvm/dsl/Components.java => camel-k-runtime-jvm/src/test/java/org/apache/camel/k/jvm/RuntimeTestSupport.java} (52%)
 rename runtime/{jvm => camel-k-runtime-jvm}/src/test/resources/MyRoutes.java (100%)
 rename runtime/{jvm => camel-k-runtime-jvm}/src/test/resources/MyRoutesWithNestedClass.java (100%)
 rename runtime/{jvm => camel-k-runtime-jvm}/src/test/resources/conf.d/001/conf.properties (100%)
 rename runtime/{jvm => camel-k-runtime-jvm}/src/test/resources/conf.d/002/conf.properties (100%)
 rename runtime/{jvm => camel-k-runtime-jvm}/src/test/resources/conf.properties (100%)
 rename runtime/{jvm => camel-k-runtime-jvm}/src/test/resources/log4j2-test.xml (100%)
 rename runtime/{jvm => camel-k-runtime-jvm}/src/test/resources/r1.js (100%)
 rename runtime/{jvm => camel-k-runtime-jvm}/src/test/resources/r2.mytype (100%)
 rename runtime/{jvm => camel-k-runtime-jvm}/src/test/resources/routes-compressed.js.gz.b64 (100%)
 rename runtime/{jvm => camel-k-runtime-jvm}/src/test/resources/routes.js (100%)
 rename runtime/{jvm => camel-k-runtime-jvm}/src/test/resources/routes.mytype (100%)
 rename runtime/{jvm => camel-k-runtime-jvm}/src/test/resources/routes.xml (100%)
 rename runtime/{kotlin => camel-k-runtime-kotlin}/pom.xml (100%)
 rename runtime/{kotlin => camel-k-runtime-kotlin}/src/main/kotlin/org/apache/camel/k/kotlin/KotlinRoutesLoader.kt (96%)
 rename runtime/{kotlin => camel-k-runtime-kotlin}/src/main/kotlin/org/apache/camel/k/kotlin/dsl/ComponentsConfiguration.kt (100%)
 rename runtime/{kotlin => camel-k-runtime-kotlin}/src/main/kotlin/org/apache/camel/k/kotlin/dsl/ContextConfiguration.kt (96%)
 rename runtime/{kotlin => camel-k-runtime-kotlin}/src/main/kotlin/org/apache/camel/k/kotlin/dsl/IntegrationConfiguration.kt (97%)
 rename runtime/{kotlin => camel-k-runtime-kotlin}/src/main/kotlin/org/apache/camel/k/kotlin/dsl/RegistryConfiguration.kt (95%)
 rename runtime/{kotlin => camel-k-runtime-kotlin}/src/main/kotlin/org/apache/camel/k/kotlin/dsl/RestConfiguration.kt (100%)
 rename runtime/{kotlin => camel-k-runtime-kotlin}/src/main/kotlin/org/apache/camel/k/kotlin/extension/LogComponentExtensions.kt (100%)
 copy runtime/{camel-knative/src/main/resources/META-INF/services/org/apache/camel/component/knative => camel-k-runtime-kotlin/src/main/resources/META-INF/services/org/apache/camel/k/loader/kotlin} (93%)
 rename runtime/{kotlin => camel-k-runtime-kotlin}/src/test/kotlin/org/apache/camel/k/kotlin/LoaderTest.kt (89%)
 rename runtime/{kotlin => camel-k-runtime-kotlin}/src/test/kotlin/org/apache/camel/k/kotlin/dsl/IntegrationTest.kt (100%)
 rename runtime/{kotlin => camel-k-runtime-kotlin}/src/test/kotlin/org/apache/camel/k/kotlin/extension/LogExtensionTest.kt (100%)
 rename runtime/{kotlin => camel-k-runtime-kotlin}/src/test/resources/log4j2-test.xml (100%)
 rename runtime/{kotlin => camel-k-runtime-kotlin}/src/test/resources/routes-new.kts (100%)
 rename runtime/{kotlin => camel-k-runtime-kotlin}/src/test/resources/routes-with-bindings.kts (100%)
 rename runtime/{kotlin => camel-k-runtime-kotlin}/src/test/resources/routes-with-component-configuration.kts (100%)
 rename runtime/{kotlin => camel-k-runtime-kotlin}/src/test/resources/routes-with-rest.kts (100%)
 rename runtime/{kotlin => camel-k-runtime-kotlin}/src/test/resources/routes.kts (100%)
 rename runtime/{spring-boot => camel-k-runtime-spring-boot}/pom.xml (100%)
 rename runtime/{spring-boot => camel-k-runtime-spring-boot}/src/main/java/org/apache/camel/k/spring/boot/Application.java (91%)
 delete mode 100644 runtime/groovy/src/main/resources/META-INF/services/org.apache.camel.k.jvm.RoutesLoader
 delete mode 100644 runtime/jvm/src/main/java/org/apache/camel/k/jvm/RoutesLoaders.java
 delete mode 100644 runtime/jvm/src/main/resources/META-INF/services/org.apache.camel.k.jvm.RoutesLoader
 delete mode 100644 runtime/kotlin/src/main/resources/META-INF/services/javax.script.ScriptEngineFactory
 delete mode 100644 runtime/kotlin/src/main/resources/META-INF/services/org.apache.camel.k.jvm.RoutesLoader


[camel-k] 02/03: runtime: use camel built-in service loader to find routes loaders

Posted by nf...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nferraro pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit 4a14f8ce126dbdd2accc18480343970e82a3e25c
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Thu Dec 13 14:03:09 2018 +0100

    runtime: use camel built-in service loader to find routes loaders
---
 .../src/main/java/org/apache/camel/k/Language.java |  16 +-
 .../services/org.apache.camel.k.RoutesLoader       |   1 -
 .../services/org/apache/camel/k/loader/groovy      |  18 ++
 .../org/apache/camel/k/groovy/LoaderTest.groovy    |   5 +-
 .../java/org/apache/camel/k/jvm/RoutesLoaders.java | 184 ---------------------
 .../main/java/org/apache/camel/k/jvm/Runtime.java  |   3 +-
 .../org/apache/camel/k/jvm/RuntimeSupport.java     |  16 ++
 .../apache/camel/k/jvm/loader/JavaClassLoader.java |  34 ++++
 .../camel/k/jvm/loader/JavaScriptLoader.java       |  58 +++++++
 .../camel/k/jvm/loader/JavaSourceLoader.java       |  45 +++++
 .../org/apache/camel/k/jvm/loader/XmlLoader.java   |  50 ++++++
 .../services/org.apache.camel.k.RoutesLoader       |   4 -
 .../services/org/apache/camel/k/loader/java-class  |  18 ++
 .../services/org/apache/camel/k/loader/java-source |  18 ++
 .../META-INF/services/org/apache/camel/k/loader/js |  18 ++
 .../services/org/apache/camel/k/loader/xml         |  18 ++
 .../org/apache/camel/k/jvm/RoutesLoadersTest.java  |  33 ++--
 .../services/javax.script.ScriptEngineFactory      |   1 -
 .../services/org.apache.camel.k.RoutesLoader       |   1 -
 .../services/org/apache/camel/k/loader/kotlin      |  18 ++
 .../kotlin/org/apache/camel/k/kotlin/LoaderTest.kt |   7 +-
 .../apache/camel/k/spring/boot/Application.java    |   3 +-
 22 files changed, 355 insertions(+), 214 deletions(-)

diff --git a/runtime/core/src/main/java/org/apache/camel/k/Language.java b/runtime/core/src/main/java/org/apache/camel/k/Language.java
index bfeffa5..c338bd6 100644
--- a/runtime/core/src/main/java/org/apache/camel/k/Language.java
+++ b/runtime/core/src/main/java/org/apache/camel/k/Language.java
@@ -20,39 +20,53 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
+import org.apache.camel.util.ObjectHelper;
 import org.apache.commons.lang3.StringUtils;
 
 public enum Language {
     Unknown(
+        "unknown",
         Collections.emptyList(),
         Collections.emptyList()),
     JavaClass(
+        "java-class",
         Collections.singletonList("class"),
         Collections.singletonList("class")),
     JavaSource(
+        "java-source",
         Collections.singletonList("java"),
         Collections.singletonList("java")),
     JavaScript(
+        "js",
         Arrays.asList("js", "javascript"),
         Collections.singletonList("js")),
     Groovy(
+        "groovy",
         Collections.singletonList("groovy"),
         Collections.singletonList("groovy")),
     Xml(
+        "xml",
         Collections.singletonList("xml"),
         Collections.singletonList("xml")),
     Kotlin(
+        "kotlin",
         Arrays.asList("kotlin", "kts"),
         Collections.singletonList("kts"));
 
+    private final String id;
     private final List<String> names;
     private final List<String> extensions;
 
-    Language(List<String> names, List<String> extensions) {
+    Language(String id, List<String> names, List<String> extensions) {
+        this.id = ObjectHelper.notNull(id, "id");
         this.names = names;
         this.extensions = extensions;
     }
 
+    public String getId() {
+        return id;
+    }
+
     public List<String> getNames() {
         return names;
     }
diff --git a/runtime/groovy/src/main/resources/META-INF/services/org.apache.camel.k.RoutesLoader b/runtime/groovy/src/main/resources/META-INF/services/org.apache.camel.k.RoutesLoader
deleted file mode 100644
index db214e0..0000000
--- a/runtime/groovy/src/main/resources/META-INF/services/org.apache.camel.k.RoutesLoader
+++ /dev/null
@@ -1 +0,0 @@
-org.apache.camel.k.groovy.GroovyRoutesLoader
\ No newline at end of file
diff --git a/runtime/groovy/src/main/resources/META-INF/services/org/apache/camel/k/loader/groovy b/runtime/groovy/src/main/resources/META-INF/services/org/apache/camel/k/loader/groovy
new file mode 100644
index 0000000..ba7720a
--- /dev/null
+++ b/runtime/groovy/src/main/resources/META-INF/services/org/apache/camel/k/loader/groovy
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+
+class=org.apache.camel.k.groovy.GroovyRoutesLoader
\ No newline at end of file
diff --git a/runtime/groovy/src/test/groovy/org/apache/camel/k/groovy/LoaderTest.groovy b/runtime/groovy/src/test/groovy/org/apache/camel/k/groovy/LoaderTest.groovy
index a9c8a0a..0bc194f 100644
--- a/runtime/groovy/src/test/groovy/org/apache/camel/k/groovy/LoaderTest.groovy
+++ b/runtime/groovy/src/test/groovy/org/apache/camel/k/groovy/LoaderTest.groovy
@@ -16,7 +16,8 @@
  */
 package org.apache.camel.k.groovy
 
-import org.apache.camel.k.jvm.RoutesLoaders
+import org.apache.camel.impl.DefaultCamelContext
+import org.apache.camel.k.jvm.RuntimeSupport
 import org.apache.camel.k.jvm.SimpleRuntimeRegistry
 import org.apache.camel.k.Source
 import org.apache.camel.model.ToDefinition
@@ -29,7 +30,7 @@ class LoaderTest extends Specification {
             def source = Source.create("classpath:routes.groovy")
 
         when:
-            def loader = RoutesLoaders.loaderFor(source)
+            def loader = RuntimeSupport.loaderFor(new DefaultCamelContext(), source)
             def builder = loader.load(new SimpleRuntimeRegistry(), source)
 
         then:
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RoutesLoaders.java b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RoutesLoaders.java
deleted file mode 100644
index 5702931..0000000
--- a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RoutesLoaders.java
+++ /dev/null
@@ -1,184 +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.
- */
-package org.apache.camel.k.jvm;
-
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.nio.charset.StandardCharsets;
-import java.util.Collections;
-import java.util.List;
-import java.util.ServiceLoader;
-import java.util.function.Function;
-import java.util.function.Supplier;
-import javax.script.Bindings;
-import javax.script.ScriptEngine;
-import javax.script.ScriptEngineManager;
-import javax.script.SimpleBindings;
-import javax.xml.bind.UnmarshalException;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.k.Constants;
-import org.apache.camel.k.Language;
-import org.apache.camel.k.RoutesLoader;
-import org.apache.camel.k.RuntimeRegistry;
-import org.apache.camel.k.Source;
-import org.apache.camel.k.jvm.dsl.Components;
-import org.apache.camel.model.RouteDefinition;
-import org.apache.camel.model.rest.RestConfigurationDefinition;
-import org.apache.camel.model.rest.RestDefinition;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.joor.Reflect;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public final class RoutesLoaders {
-    private static final Logger LOGGER = LoggerFactory.getLogger(RoutesLoaders.class);
-
-    private RoutesLoaders() {
-    }
-
-    public static class JavaClass implements RoutesLoader {
-        @Override
-        public List<Language> getSupportedLanguages() {
-            return Collections.singletonList(Language.JavaClass);
-        }
-
-        @Override
-        public RouteBuilder load(RuntimeRegistry registry, Source source) throws Exception {
-            String path = source.getLocation();
-            path = StringUtils.removeStart(path, Constants.SCHEME_CLASSPATH);
-            path = StringUtils.removeEnd(path, ".class");
-
-            Class<?> type = Class.forName(path);
-
-            if (!RouteBuilder.class.isAssignableFrom(type)) {
-                throw new IllegalStateException("The class provided (" + path + ") is not a org.apache.camel.builder.RouteBuilder");
-            }
-
-            return (RouteBuilder)type.newInstance();
-        }
-    }
-
-    public static class JavaSource implements RoutesLoader {
-        @Override
-        public List<Language> getSupportedLanguages() {
-            return Collections.singletonList(Language.JavaSource);
-        }
-
-        @Override
-        public RouteBuilder load(RuntimeRegistry registry, Source source) throws Exception {
-            return new RouteBuilder() {
-                @Override
-                public void configure() throws Exception {
-                    try (InputStream is = URIResolver.resolve(getContext(), source)) {
-                        String name = StringUtils.substringAfter(source.getLocation(), ":");
-                        name = StringUtils.removeEnd(name, ".java");
-
-                        if (name.contains("/")) {
-                            name = StringUtils.substringAfterLast(name, "/");
-                        }
-
-                        // Wrap routes builder
-                        includeRoutes(
-                            Reflect.compile(name, IOUtils.toString(is, StandardCharsets.UTF_8)).create().get()
-                        );
-                    }
-                }
-            };
-        }
-    }
-
-    public static class JavaScript implements RoutesLoader {
-        @Override
-        public List<Language> getSupportedLanguages() {
-            return Collections.singletonList(Language.JavaScript);
-        }
-
-        @Override
-        public RouteBuilder load(RuntimeRegistry registry, Source source) throws Exception {
-            return new RouteBuilder() {
-                @Override
-                public void configure() throws Exception {
-                    final CamelContext context = getContext();
-                    final ScriptEngineManager manager = new ScriptEngineManager();
-                    final ScriptEngine engine = manager.getEngineByName("nashorn");
-                    final Bindings bindings = new SimpleBindings();
-
-                    // Exposed to the underlying script, but maybe better to have
-                    // a nice dsl
-                    bindings.put("builder", this);
-                    bindings.put("context", context);
-                    bindings.put("components", new Components(context));
-                    bindings.put("registry", registry);
-                    bindings.put("from", (Function<String, RouteDefinition>) uri -> from(uri));
-                    bindings.put("rest", (Supplier<RestDefinition>) () -> rest());
-                    bindings.put("restConfiguration", (Supplier<RestConfigurationDefinition>) () -> restConfiguration());
-
-                    try (InputStream is = URIResolver.resolve(context, source)) {
-                        engine.eval(new InputStreamReader(is), bindings);
-                    }
-                }
-            };
-        }
-    }
-
-    public static class Xml implements RoutesLoader {
-        @Override
-        public List<Language> getSupportedLanguages() {
-            return Collections.singletonList(Language.Xml);
-        }
-
-        @Override
-        public RouteBuilder load(RuntimeRegistry registry, Source source) throws Exception {
-            return new RouteBuilder() {
-                @Override
-                public void configure() throws Exception {
-                    try (InputStream is = URIResolver.resolve(getContext(), source)) {
-                        try {
-                            setRouteCollection(
-                                getContext().loadRoutesDefinition(is)
-                            );
-                        } catch (UnmarshalException e) {
-                            LOGGER.debug("Unable to load RoutesDefinition: {}", e.getMessage());
-                        }
-
-                        try {
-                            setRestCollection(
-                                getContext().loadRestsDefinition(is)
-                            );
-                        } catch (UnmarshalException e) {
-                            LOGGER.debug("Unable to load RestsDefinition: {}", e.getMessage());
-                        }
-                    }
-                }
-            };
-        }
-    }
-
-
-    public static RoutesLoader loaderFor(Source source) {
-        for (RoutesLoader loader: ServiceLoader.load(RoutesLoader.class)) {
-            if (loader.getSupportedLanguages().contains(source.getLanguage())) {
-                return loader;
-            }
-        }
-
-        throw new IllegalArgumentException("Unable to find loader for: " + source);
-    }
-}
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Runtime.java b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Runtime.java
index 287ba69..3923e85 100644
--- a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Runtime.java
+++ b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Runtime.java
@@ -20,6 +20,7 @@ import java.util.Map;
 import java.util.Properties;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
+
 import org.apache.camel.CamelContext;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
@@ -46,7 +47,7 @@ public final class Runtime extends MainSupport {
     public void load(String[] routes) throws Exception {
         for (String route: routes) {
             final Source source = Source.create(route);
-            final RoutesLoader loader = RoutesLoaders.loaderFor(source);
+            final RoutesLoader loader = RuntimeSupport.loaderFor(getCamelContext(), source);
             final RouteBuilder builder = loader.load(registry, source);
 
             if (builder == null) {
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RuntimeSupport.java b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RuntimeSupport.java
index d6a005c..b3192b6 100644
--- a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RuntimeSupport.java
+++ b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RuntimeSupport.java
@@ -32,7 +32,9 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.NoFactoryAvailableException;
 import org.apache.camel.component.properties.PropertiesComponent;
 import org.apache.camel.k.Constants;
+import org.apache.camel.k.RoutesLoader;
 import org.apache.camel.k.RuntimeTrait;
+import org.apache.camel.k.Source;
 import org.apache.camel.spi.FactoryFinder;
 import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.ObjectHelper;
@@ -180,4 +182,18 @@ public final class RuntimeSupport {
                 }
             );
     }
+
+    public static RoutesLoader loaderFor(CamelContext context, Source source) {
+        final FactoryFinder finder;
+        final RoutesLoader loader;
+
+        try {
+            finder = context.getFactoryFinder(Constants.ROUTES_LOADER_RESOURCE_PATH);
+            loader = (RoutesLoader)finder.newInstance(source.getLanguage().getId());
+        } catch (NoFactoryAvailableException e) {
+            throw new IllegalArgumentException("Unable to find loader for: " + source, e);
+        }
+
+        return loader;
+    }
 }
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/loader/JavaClassLoader.java b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/loader/JavaClassLoader.java
new file mode 100644
index 0000000..bf73a82
--- /dev/null
+++ b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/loader/JavaClassLoader.java
@@ -0,0 +1,34 @@
+package org.apache.camel.k.jvm.loader;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.k.Constants;
+import org.apache.camel.k.Language;
+import org.apache.camel.k.RoutesLoader;
+import org.apache.camel.k.RuntimeRegistry;
+import org.apache.camel.k.Source;
+import org.apache.commons.lang3.StringUtils;
+
+public class JavaClassLoader implements RoutesLoader {
+    @Override
+    public List<Language> getSupportedLanguages() {
+        return Collections.singletonList(Language.JavaClass);
+    }
+
+    @Override
+    public RouteBuilder load(RuntimeRegistry registry, Source source) throws Exception {
+        String path = source.getLocation();
+        path = StringUtils.removeStart(path, Constants.SCHEME_CLASSPATH);
+        path = StringUtils.removeEnd(path, ".class");
+
+        Class<?> type = Class.forName(path);
+
+        if (!RouteBuilder.class.isAssignableFrom(type)) {
+            throw new IllegalStateException("The class provided (" + path + ") is not a org.apache.camel.builder.RouteBuilder");
+        }
+
+        return (RouteBuilder)type.newInstance();
+    }
+}
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/loader/JavaScriptLoader.java b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/loader/JavaScriptLoader.java
new file mode 100644
index 0000000..650a4d1
--- /dev/null
+++ b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/loader/JavaScriptLoader.java
@@ -0,0 +1,58 @@
+package org.apache.camel.k.jvm.loader;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.Collections;
+import java.util.List;
+import java.util.function.Function;
+import java.util.function.Supplier;
+import javax.script.Bindings;
+import javax.script.ScriptEngine;
+import javax.script.ScriptEngineManager;
+import javax.script.SimpleBindings;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.k.Language;
+import org.apache.camel.k.RoutesLoader;
+import org.apache.camel.k.RuntimeRegistry;
+import org.apache.camel.k.Source;
+import org.apache.camel.k.jvm.URIResolver;
+import org.apache.camel.k.jvm.dsl.Components;
+import org.apache.camel.model.RouteDefinition;
+import org.apache.camel.model.rest.RestConfigurationDefinition;
+import org.apache.camel.model.rest.RestDefinition;
+
+public class JavaScriptLoader implements RoutesLoader {
+    @Override
+    public List<Language> getSupportedLanguages() {
+        return Collections.singletonList(Language.JavaScript);
+    }
+
+    @Override
+    public RouteBuilder load(RuntimeRegistry registry, Source source) throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                final CamelContext context = getContext();
+                final ScriptEngineManager manager = new ScriptEngineManager();
+                final ScriptEngine engine = manager.getEngineByName("nashorn");
+                final Bindings bindings = new SimpleBindings();
+
+                // Exposed to the underlying script, but maybe better to have
+                // a nice dsl
+                bindings.put("builder", this);
+                bindings.put("context", context);
+                bindings.put("components", new Components(context));
+                bindings.put("registry", registry);
+                bindings.put("from", (Function<String, RouteDefinition>) uri -> from(uri));
+                bindings.put("rest", (Supplier<RestDefinition>) () -> rest());
+                bindings.put("restConfiguration", (Supplier<RestConfigurationDefinition>) () -> restConfiguration());
+
+                try (InputStream is = URIResolver.resolve(context, source)) {
+                    engine.eval(new InputStreamReader(is), bindings);
+                }
+            }
+        };
+    }
+}
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/loader/JavaSourceLoader.java b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/loader/JavaSourceLoader.java
new file mode 100644
index 0000000..767a6d4
--- /dev/null
+++ b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/loader/JavaSourceLoader.java
@@ -0,0 +1,45 @@
+package org.apache.camel.k.jvm.loader;
+
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.k.Language;
+import org.apache.camel.k.RoutesLoader;
+import org.apache.camel.k.RuntimeRegistry;
+import org.apache.camel.k.Source;
+import org.apache.camel.k.jvm.URIResolver;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.joor.Reflect;
+
+public class JavaSourceLoader implements RoutesLoader {
+    @Override
+    public List<Language> getSupportedLanguages() {
+        return Collections.singletonList(Language.JavaSource);
+    }
+
+    @Override
+    public RouteBuilder load(RuntimeRegistry registry, Source source) throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                try (InputStream is = URIResolver.resolve(getContext(), source)) {
+                    String name = StringUtils.substringAfter(source.getLocation(), ":");
+                    name = StringUtils.removeEnd(name, ".java");
+
+                    if (name.contains("/")) {
+                        name = StringUtils.substringAfterLast(name, "/");
+                    }
+
+                    // Wrap routes builder
+                    includeRoutes(
+                        Reflect.compile(name, IOUtils.toString(is, StandardCharsets.UTF_8)).create().get()
+                    );
+                }
+            }
+        };
+    }
+}
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/loader/XmlLoader.java b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/loader/XmlLoader.java
new file mode 100644
index 0000000..7532f14
--- /dev/null
+++ b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/loader/XmlLoader.java
@@ -0,0 +1,50 @@
+package org.apache.camel.k.jvm.loader;
+
+import java.io.InputStream;
+import java.util.Collections;
+import java.util.List;
+import javax.xml.bind.UnmarshalException;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.k.Language;
+import org.apache.camel.k.RoutesLoader;
+import org.apache.camel.k.RuntimeRegistry;
+import org.apache.camel.k.Source;
+import org.apache.camel.k.jvm.URIResolver;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class XmlLoader implements RoutesLoader {
+    private static final Logger LOGGER = LoggerFactory.getLogger(XmlLoader.class);
+
+    @Override
+    public List<Language> getSupportedLanguages() {
+        return Collections.singletonList(Language.Xml);
+    }
+
+    @Override
+    public RouteBuilder load(RuntimeRegistry registry, Source source) throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                try (InputStream is = URIResolver.resolve(getContext(), source)) {
+                    try {
+                        setRouteCollection(
+                            getContext().loadRoutesDefinition(is)
+                        );
+                    } catch (UnmarshalException e) {
+                        LOGGER.debug("Unable to load RoutesDefinition: {}", e.getMessage());
+                    }
+
+                    try {
+                        setRestCollection(
+                            getContext().loadRestsDefinition(is)
+                        );
+                    } catch (UnmarshalException e) {
+                        LOGGER.debug("Unable to load RestsDefinition: {}", e.getMessage());
+                    }
+                }
+            }
+        };
+    }
+}
diff --git a/runtime/jvm/src/main/resources/META-INF/services/org.apache.camel.k.RoutesLoader b/runtime/jvm/src/main/resources/META-INF/services/org.apache.camel.k.RoutesLoader
deleted file mode 100644
index 5a57927..0000000
--- a/runtime/jvm/src/main/resources/META-INF/services/org.apache.camel.k.RoutesLoader
+++ /dev/null
@@ -1,4 +0,0 @@
-org.apache.camel.k.jvm.RoutesLoaders$JavaClass
-org.apache.camel.k.jvm.RoutesLoaders$JavaSource
-org.apache.camel.k.jvm.RoutesLoaders$JavaScript
-org.apache.camel.k.jvm.RoutesLoaders$Xml
diff --git a/runtime/jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/java-class b/runtime/jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/java-class
new file mode 100644
index 0000000..2d85f95
--- /dev/null
+++ b/runtime/jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/java-class
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+
+class=org.apache.camel.k.jvm.loader.JavaClassLoader
\ No newline at end of file
diff --git a/runtime/jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/java-source b/runtime/jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/java-source
new file mode 100644
index 0000000..3bf8297
--- /dev/null
+++ b/runtime/jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/java-source
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+
+class=org.apache.camel.k.jvm.loader.JavaSourceLoader
\ No newline at end of file
diff --git a/runtime/jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/js b/runtime/jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/js
new file mode 100644
index 0000000..45227e8
--- /dev/null
+++ b/runtime/jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/js
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+
+class=org.apache.camel.k.jvm.loader.JavaScriptLoader
\ No newline at end of file
diff --git a/runtime/jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/xml b/runtime/jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/xml
new file mode 100644
index 0000000..e30ce1e
--- /dev/null
+++ b/runtime/jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/xml
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+
+class=org.apache.camel.k.jvm.loader.XmlLoader
\ No newline at end of file
diff --git a/runtime/jvm/src/test/java/org/apache/camel/k/jvm/RoutesLoadersTest.java b/runtime/jvm/src/test/java/org/apache/camel/k/jvm/RoutesLoadersTest.java
index cd32327..cc3b7c3 100644
--- a/runtime/jvm/src/test/java/org/apache/camel/k/jvm/RoutesLoadersTest.java
+++ b/runtime/jvm/src/test/java/org/apache/camel/k/jvm/RoutesLoadersTest.java
@@ -19,8 +19,13 @@ package org.apache.camel.k.jvm;
 import java.util.List;
 
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.k.RoutesLoader;
 import org.apache.camel.k.Source;
+import org.apache.camel.k.jvm.loader.JavaClassLoader;
+import org.apache.camel.k.jvm.loader.JavaScriptLoader;
+import org.apache.camel.k.jvm.loader.JavaSourceLoader;
+import org.apache.camel.k.jvm.loader.XmlLoader;
 import org.apache.camel.model.ProcessDefinition;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.model.SetBodyDefinition;
@@ -35,10 +40,10 @@ public class RoutesLoadersTest {
     @Test
     public void testLoadClass() throws Exception {
         Source source = Source.create("classpath:" + MyRoutes.class.getName() + ".class");
-        RoutesLoader loader = RoutesLoaders.loaderFor(source);
+        RoutesLoader loader = RuntimeSupport.loaderFor(new DefaultCamelContext(), source);
         RouteBuilder builder = loader.load(new SimpleRuntimeRegistry(), source);
 
-        assertThat(loader).isInstanceOf(RoutesLoaders.JavaClass.class);
+        assertThat(loader).isInstanceOf(JavaClassLoader.class);
         assertThat(builder).isNotNull();
 
         builder.configure();
@@ -52,10 +57,10 @@ public class RoutesLoadersTest {
     @Test
     public void testLoadJava() throws Exception {
         Source source = Source.create("classpath:MyRoutes.java");
-        RoutesLoader loader = RoutesLoaders.loaderFor(source);
+        RoutesLoader loader = RuntimeSupport.loaderFor(new DefaultCamelContext(), source);
         RouteBuilder builder = loader.load(new SimpleRuntimeRegistry(), source);
 
-        assertThat(loader).isInstanceOf(RoutesLoaders.JavaSource.class);
+        assertThat(loader).isInstanceOf(JavaSourceLoader.class);
         assertThat(builder).isNotNull();
 
         builder.configure();
@@ -69,10 +74,10 @@ public class RoutesLoadersTest {
     @Test
     public void testLoadJavaWithNestedClass() throws Exception {
         Source source = Source.create("classpath:MyRoutesWithNestedClass.java");
-        RoutesLoader loader = RoutesLoaders.loaderFor(source);
+        RoutesLoader loader = RuntimeSupport.loaderFor(new DefaultCamelContext(), source);
         RouteBuilder builder = loader.load(new SimpleRuntimeRegistry(), source);
 
-        assertThat(loader).isInstanceOf(RoutesLoaders.JavaSource.class);
+        assertThat(loader).isInstanceOf(JavaSourceLoader.class);
         assertThat(builder).isNotNull();
 
         builder.configure();
@@ -88,10 +93,10 @@ public class RoutesLoadersTest {
     @Test
     public void testLoadJavaScript() throws Exception {
         Source source = Source.create("classpath:routes.js");
-        RoutesLoader loader = RoutesLoaders.loaderFor(source);
+        RoutesLoader loader = RuntimeSupport.loaderFor(new DefaultCamelContext(), source);
         RouteBuilder builder = loader.load(new SimpleRuntimeRegistry(), source);
 
-        assertThat(loader).isInstanceOf(RoutesLoaders.JavaScript.class);
+        assertThat(loader).isInstanceOf(JavaScriptLoader.class);
         assertThat(builder).isNotNull();
 
         builder.configure();
@@ -105,10 +110,10 @@ public class RoutesLoadersTest {
     @Test
     public void testLoadCompressedRoute() throws Exception {
         Source source = Source.create("classpath:routes-compressed.js.gz.b64?language=js&compression=true");
-        RoutesLoader loader = RoutesLoaders.loaderFor(source);
+        RoutesLoader loader = RuntimeSupport.loaderFor(new DefaultCamelContext(), source);
         RouteBuilder builder = loader.load(new SimpleRuntimeRegistry(), source);
 
-        assertThat(loader).isInstanceOf(RoutesLoaders.JavaScript.class);
+        assertThat(loader).isInstanceOf(JavaScriptLoader.class);
         assertThat(builder).isNotNull();
 
         builder.configure();
@@ -122,10 +127,10 @@ public class RoutesLoadersTest {
     @Test
     public void testLoadJavaScriptWithCustomExtension() throws Exception {
         Source source = Source.create("classpath:routes.mytype?language=js");
-        RoutesLoader loader = RoutesLoaders.loaderFor(source);
+        RoutesLoader loader = RuntimeSupport.loaderFor(new DefaultCamelContext(), source);
         RouteBuilder builder = loader.load(new SimpleRuntimeRegistry(), source);
 
-        assertThat(loader).isInstanceOf(RoutesLoaders.JavaScript.class);
+        assertThat(loader).isInstanceOf(JavaScriptLoader.class);
         assertThat(builder).isNotNull();
 
         builder.configure();
@@ -139,10 +144,10 @@ public class RoutesLoadersTest {
     @Test
     public void testLoadXml() throws Exception {
         Source source = Source.create("classpath:routes.xml");
-        RoutesLoader loader = RoutesLoaders.loaderFor(source);
+        RoutesLoader loader = RuntimeSupport.loaderFor(new DefaultCamelContext(), source);
         RouteBuilder builder = loader.load(new SimpleRuntimeRegistry(), source);
 
-        assertThat(loader).isInstanceOf(RoutesLoaders.Xml.class);
+        assertThat(loader).isInstanceOf(XmlLoader.class);
         assertThat(builder).isNotNull();
 
         builder.configure();
diff --git a/runtime/kotlin/src/main/resources/META-INF/services/javax.script.ScriptEngineFactory b/runtime/kotlin/src/main/resources/META-INF/services/javax.script.ScriptEngineFactory
deleted file mode 100644
index f8f5900..0000000
--- a/runtime/kotlin/src/main/resources/META-INF/services/javax.script.ScriptEngineFactory
+++ /dev/null
@@ -1 +0,0 @@
-org.jetbrains.kotlin.script.jsr223.KotlinJsr223JvmLocalScriptEngineFactory
\ No newline at end of file
diff --git a/runtime/kotlin/src/main/resources/META-INF/services/org.apache.camel.k.RoutesLoader b/runtime/kotlin/src/main/resources/META-INF/services/org.apache.camel.k.RoutesLoader
deleted file mode 100644
index 83c3f09..0000000
--- a/runtime/kotlin/src/main/resources/META-INF/services/org.apache.camel.k.RoutesLoader
+++ /dev/null
@@ -1 +0,0 @@
-org.apache.camel.k.kotlin.KotlinRoutesLoader
\ No newline at end of file
diff --git a/runtime/kotlin/src/main/resources/META-INF/services/org/apache/camel/k/loader/kotlin b/runtime/kotlin/src/main/resources/META-INF/services/org/apache/camel/k/loader/kotlin
new file mode 100644
index 0000000..d4bcde1
--- /dev/null
+++ b/runtime/kotlin/src/main/resources/META-INF/services/org/apache/camel/k/loader/kotlin
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+
+class=org.apache.camel.k.kotlin.KotlinRoutesLoader
\ No newline at end of file
diff --git a/runtime/kotlin/src/test/kotlin/org/apache/camel/k/kotlin/LoaderTest.kt b/runtime/kotlin/src/test/kotlin/org/apache/camel/k/kotlin/LoaderTest.kt
index c9fb931..c0f86c6 100644
--- a/runtime/kotlin/src/test/kotlin/org/apache/camel/k/kotlin/LoaderTest.kt
+++ b/runtime/kotlin/src/test/kotlin/org/apache/camel/k/kotlin/LoaderTest.kt
@@ -16,9 +16,10 @@
  */
 package org.apache.camel.k.kotlin
 
-import org.apache.camel.k.jvm.RoutesLoaders
-import org.apache.camel.k.jvm.SimpleRuntimeRegistry
+import org.apache.camel.impl.DefaultCamelContext
 import org.apache.camel.k.Source
+import org.apache.camel.k.jvm.RuntimeSupport
+import org.apache.camel.k.jvm.SimpleRuntimeRegistry
 import org.apache.camel.model.ProcessDefinition
 import org.apache.camel.model.ToDefinition
 import org.assertj.core.api.Assertions.assertThat
@@ -29,7 +30,7 @@ class LoaderTest {
     @Test
     fun `load route from classpath`() {
         var source = Source.create("classpath:routes.kts")
-        val loader = RoutesLoaders.loaderFor(source)
+        val loader = RuntimeSupport.loaderFor(DefaultCamelContext(), source)
         val builder = loader.load(SimpleRuntimeRegistry(), source)
 
         assertThat(loader).isInstanceOf(KotlinRoutesLoader::class.java)
diff --git a/runtime/spring-boot/src/main/java/org/apache/camel/k/spring/boot/Application.java b/runtime/spring-boot/src/main/java/org/apache/camel/k/spring/boot/Application.java
index eaf7c2b..427dd9e 100644
--- a/runtime/spring-boot/src/main/java/org/apache/camel/k/spring/boot/Application.java
+++ b/runtime/spring-boot/src/main/java/org/apache/camel/k/spring/boot/Application.java
@@ -25,7 +25,6 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.k.RuntimeRegistry;
 import org.apache.camel.k.Constants;
 import org.apache.camel.k.RoutesLoader;
-import org.apache.camel.k.jvm.RoutesLoaders;
 import org.apache.camel.k.jvm.RuntimeSupport;
 import org.apache.camel.k.Source;
 import org.apache.camel.spi.Registry;
@@ -95,7 +94,7 @@ public class Application {
                 try {
                     for (String route : routes.split(",")) {
                         final Source source = Source.create(route);
-                        final RoutesLoader loader = RoutesLoaders.loaderFor(source);
+                        final RoutesLoader loader = RuntimeSupport.loaderFor(context, source);
                         final RouteBuilder builder = loader.load(registry, source);
 
                         if (builder == null) {


[camel-k] 03/03: runtime: refactor project layout

Posted by nf...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nferraro pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit 1331a29ef16bee1261f21b399fce48981272ac2c
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Thu Dec 13 14:13:26 2018 +0100

    runtime: refactor project layout
---
 runtime/{core => camel-k-runtime-core}/pom.xml                 |  0
 .../src/main/java/org/apache/camel/k/Constants.java            |  0
 .../src/main/java/org/apache/camel/k/Language.java             |  0
 .../src/main/java/org/apache/camel/k/RoutesLoader.java         |  0
 .../src/main/java/org/apache/camel/k/RuntimeRegistry.java      |  0
 .../src/main/java/org/apache/camel/k/RuntimeTrait.java         |  0
 .../src/main/java/org/apache/camel/k/Source.java               |  0
 runtime/{groovy => camel-k-runtime-groovy}/pom.xml             |  0
 .../groovy/org/apache/camel/k/groovy/GroovyRoutesLoader.groovy |  0
 .../apache/camel/k/groovy/dsl/ComponentConfiguration.groovy    |  0
 .../apache/camel/k/groovy/dsl/ComponentsConfiguration.groovy   |  0
 .../org/apache/camel/k/groovy/dsl/ContextConfiguration.groovy  |  0
 .../apache/camel/k/groovy/dsl/IntegrationConfiguration.groovy  |  0
 .../org/apache/camel/k/groovy/dsl/RegistryConfiguration.groovy |  0
 .../org/apache/camel/k/groovy/dsl/RestConfiguration.groovy     |  0
 .../camel/k/groovy/extension/LogComponentExtension.groovy      |  0
 .../services/org.codehaus.groovy.runtime.ExtensionModule       |  0
 .../META-INF/services/org/apache/camel/k/loader/groovy         |  0
 .../test/groovy/org/apache/camel/k/groovy/LoaderTest.groovy    |  0
 .../org/apache/camel/k/groovy/dsl/IntegrationTest.groovy       |  0
 .../camel/k/groovy/dsl/extension/LogExtensionTest.groovy       |  0
 .../src/test/resources/log4j2-test.xml                         |  0
 .../src/test/resources/routes-with-bindings.groovy             |  0
 .../test/resources/routes-with-component-configuration.groovy  |  0
 .../src/test/resources/routes-with-rest.groovy                 |  0
 .../src/test/resources/routes.groovy                           |  0
 runtime/{jvm => camel-k-runtime-jvm}/pom.xml                   |  0
 .../src/main/java/org/apache/camel/k/jvm/Application.java      |  0
 .../src/main/java/org/apache/camel/k/jvm/Runtime.java          |  0
 .../src/main/java/org/apache/camel/k/jvm/RuntimeSupport.java   |  0
 .../java/org/apache/camel/k/jvm/SimpleRuntimeRegistry.java     |  0
 .../src/main/java/org/apache/camel/k/jvm/URIResolver.java      |  0
 .../src/main/java/org/apache/camel/k/jvm/dsl/Components.java   |  0
 .../java/org/apache/camel/k/jvm/loader/JavaClassLoader.java    |  0
 .../java/org/apache/camel/k/jvm/loader/JavaScriptLoader.java   |  0
 .../java/org/apache/camel/k/jvm/loader/JavaSourceLoader.java   |  0
 .../src/main/java/org/apache/camel/k/jvm/loader/XmlLoader.java |  0
 .../META-INF/services/org/apache/camel/k/loader/java-class     |  0
 .../META-INF/services/org/apache/camel/k/loader/java-source    |  0
 .../resources/META-INF/services/org/apache/camel/k/loader/js   |  0
 .../resources/META-INF/services/org/apache/camel/k/loader/xml  |  0
 .../src/main/resources/log4j2.properties                       |  0
 .../src/test/java/org/apache/camel/k/jvm/PropertiesTest.java   |  0
 .../test/java/org/apache/camel/k/jvm/RoutesLoadersTest.java    |  0
 .../src/test/java/org/apache/camel/k/jvm/RuntimeTest.java      |  0
 .../test/java/org/apache/camel/k/jvm/RuntimeTestSupport.java   |  0
 .../src/test/resources/MyRoutes.java                           |  0
 .../src/test/resources/MyRoutesWithNestedClass.java            |  0
 .../src/test/resources/conf.d/001/conf.properties              |  0
 .../src/test/resources/conf.d/002/conf.properties              |  0
 .../src/test/resources/conf.properties                         |  0
 .../src/test/resources/log4j2-test.xml                         |  0
 runtime/{jvm => camel-k-runtime-jvm}/src/test/resources/r1.js  |  0
 .../{jvm => camel-k-runtime-jvm}/src/test/resources/r2.mytype  |  0
 .../src/test/resources/routes-compressed.js.gz.b64             |  0
 .../{jvm => camel-k-runtime-jvm}/src/test/resources/routes.js  |  0
 .../src/test/resources/routes.mytype                           |  0
 .../{jvm => camel-k-runtime-jvm}/src/test/resources/routes.xml |  0
 runtime/{kotlin => camel-k-runtime-kotlin}/pom.xml             |  0
 .../kotlin/org/apache/camel/k/kotlin/KotlinRoutesLoader.kt     |  0
 .../org/apache/camel/k/kotlin/dsl/ComponentsConfiguration.kt   |  0
 .../org/apache/camel/k/kotlin/dsl/ContextConfiguration.kt      |  0
 .../org/apache/camel/k/kotlin/dsl/IntegrationConfiguration.kt  |  0
 .../org/apache/camel/k/kotlin/dsl/RegistryConfiguration.kt     |  0
 .../kotlin/org/apache/camel/k/kotlin/dsl/RestConfiguration.kt  |  0
 .../apache/camel/k/kotlin/extension/LogComponentExtensions.kt  |  0
 .../META-INF/services/org/apache/camel/k/loader/kotlin         |  0
 .../src/test/kotlin/org/apache/camel/k/kotlin/LoaderTest.kt    |  0
 .../kotlin/org/apache/camel/k/kotlin/dsl/IntegrationTest.kt    |  0
 .../org/apache/camel/k/kotlin/extension/LogExtensionTest.kt    |  0
 .../src/test/resources/log4j2-test.xml                         |  0
 .../src/test/resources/routes-new.kts                          |  0
 .../src/test/resources/routes-with-bindings.kts                |  0
 .../src/test/resources/routes-with-component-configuration.kts |  0
 .../src/test/resources/routes-with-rest.kts                    |  0
 .../src/test/resources/routes.kts                              |  0
 runtime/{spring-boot => camel-k-runtime-spring-boot}/pom.xml   |  0
 .../main/java/org/apache/camel/k/spring/boot/Application.java  |  0
 runtime/pom.xml                                                | 10 +++++-----
 79 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/runtime/core/pom.xml b/runtime/camel-k-runtime-core/pom.xml
similarity index 100%
rename from runtime/core/pom.xml
rename to runtime/camel-k-runtime-core/pom.xml
diff --git a/runtime/core/src/main/java/org/apache/camel/k/Constants.java b/runtime/camel-k-runtime-core/src/main/java/org/apache/camel/k/Constants.java
similarity index 100%
rename from runtime/core/src/main/java/org/apache/camel/k/Constants.java
rename to runtime/camel-k-runtime-core/src/main/java/org/apache/camel/k/Constants.java
diff --git a/runtime/core/src/main/java/org/apache/camel/k/Language.java b/runtime/camel-k-runtime-core/src/main/java/org/apache/camel/k/Language.java
similarity index 100%
rename from runtime/core/src/main/java/org/apache/camel/k/Language.java
rename to runtime/camel-k-runtime-core/src/main/java/org/apache/camel/k/Language.java
diff --git a/runtime/core/src/main/java/org/apache/camel/k/RoutesLoader.java b/runtime/camel-k-runtime-core/src/main/java/org/apache/camel/k/RoutesLoader.java
similarity index 100%
rename from runtime/core/src/main/java/org/apache/camel/k/RoutesLoader.java
rename to runtime/camel-k-runtime-core/src/main/java/org/apache/camel/k/RoutesLoader.java
diff --git a/runtime/core/src/main/java/org/apache/camel/k/RuntimeRegistry.java b/runtime/camel-k-runtime-core/src/main/java/org/apache/camel/k/RuntimeRegistry.java
similarity index 100%
rename from runtime/core/src/main/java/org/apache/camel/k/RuntimeRegistry.java
rename to runtime/camel-k-runtime-core/src/main/java/org/apache/camel/k/RuntimeRegistry.java
diff --git a/runtime/core/src/main/java/org/apache/camel/k/RuntimeTrait.java b/runtime/camel-k-runtime-core/src/main/java/org/apache/camel/k/RuntimeTrait.java
similarity index 100%
rename from runtime/core/src/main/java/org/apache/camel/k/RuntimeTrait.java
rename to runtime/camel-k-runtime-core/src/main/java/org/apache/camel/k/RuntimeTrait.java
diff --git a/runtime/core/src/main/java/org/apache/camel/k/Source.java b/runtime/camel-k-runtime-core/src/main/java/org/apache/camel/k/Source.java
similarity index 100%
rename from runtime/core/src/main/java/org/apache/camel/k/Source.java
rename to runtime/camel-k-runtime-core/src/main/java/org/apache/camel/k/Source.java
diff --git a/runtime/groovy/pom.xml b/runtime/camel-k-runtime-groovy/pom.xml
similarity index 100%
rename from runtime/groovy/pom.xml
rename to runtime/camel-k-runtime-groovy/pom.xml
diff --git a/runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/GroovyRoutesLoader.groovy b/runtime/camel-k-runtime-groovy/src/main/groovy/org/apache/camel/k/groovy/GroovyRoutesLoader.groovy
similarity index 100%
rename from runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/GroovyRoutesLoader.groovy
rename to runtime/camel-k-runtime-groovy/src/main/groovy/org/apache/camel/k/groovy/GroovyRoutesLoader.groovy
diff --git a/runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/ComponentConfiguration.groovy b/runtime/camel-k-runtime-groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/ComponentConfiguration.groovy
similarity index 100%
rename from runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/ComponentConfiguration.groovy
rename to runtime/camel-k-runtime-groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/ComponentConfiguration.groovy
diff --git a/runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/ComponentsConfiguration.groovy b/runtime/camel-k-runtime-groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/ComponentsConfiguration.groovy
similarity index 100%
rename from runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/ComponentsConfiguration.groovy
rename to runtime/camel-k-runtime-groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/ComponentsConfiguration.groovy
diff --git a/runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/ContextConfiguration.groovy b/runtime/camel-k-runtime-groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/ContextConfiguration.groovy
similarity index 100%
rename from runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/ContextConfiguration.groovy
rename to runtime/camel-k-runtime-groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/ContextConfiguration.groovy
diff --git a/runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/IntegrationConfiguration.groovy b/runtime/camel-k-runtime-groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/IntegrationConfiguration.groovy
similarity index 100%
rename from runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/IntegrationConfiguration.groovy
rename to runtime/camel-k-runtime-groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/IntegrationConfiguration.groovy
diff --git a/runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/RegistryConfiguration.groovy b/runtime/camel-k-runtime-groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/RegistryConfiguration.groovy
similarity index 100%
rename from runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/RegistryConfiguration.groovy
rename to runtime/camel-k-runtime-groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/RegistryConfiguration.groovy
diff --git a/runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/RestConfiguration.groovy b/runtime/camel-k-runtime-groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/RestConfiguration.groovy
similarity index 100%
rename from runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/RestConfiguration.groovy
rename to runtime/camel-k-runtime-groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/RestConfiguration.groovy
diff --git a/runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/extension/LogComponentExtension.groovy b/runtime/camel-k-runtime-groovy/src/main/groovy/org/apache/camel/k/groovy/extension/LogComponentExtension.groovy
similarity index 100%
rename from runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/extension/LogComponentExtension.groovy
rename to runtime/camel-k-runtime-groovy/src/main/groovy/org/apache/camel/k/groovy/extension/LogComponentExtension.groovy
diff --git a/runtime/groovy/src/main/resources/META-INF/services/org.codehaus.groovy.runtime.ExtensionModule b/runtime/camel-k-runtime-groovy/src/main/resources/META-INF/services/org.codehaus.groovy.runtime.ExtensionModule
similarity index 100%
rename from runtime/groovy/src/main/resources/META-INF/services/org.codehaus.groovy.runtime.ExtensionModule
rename to runtime/camel-k-runtime-groovy/src/main/resources/META-INF/services/org.codehaus.groovy.runtime.ExtensionModule
diff --git a/runtime/groovy/src/main/resources/META-INF/services/org/apache/camel/k/loader/groovy b/runtime/camel-k-runtime-groovy/src/main/resources/META-INF/services/org/apache/camel/k/loader/groovy
similarity index 100%
rename from runtime/groovy/src/main/resources/META-INF/services/org/apache/camel/k/loader/groovy
rename to runtime/camel-k-runtime-groovy/src/main/resources/META-INF/services/org/apache/camel/k/loader/groovy
diff --git a/runtime/groovy/src/test/groovy/org/apache/camel/k/groovy/LoaderTest.groovy b/runtime/camel-k-runtime-groovy/src/test/groovy/org/apache/camel/k/groovy/LoaderTest.groovy
similarity index 100%
rename from runtime/groovy/src/test/groovy/org/apache/camel/k/groovy/LoaderTest.groovy
rename to runtime/camel-k-runtime-groovy/src/test/groovy/org/apache/camel/k/groovy/LoaderTest.groovy
diff --git a/runtime/groovy/src/test/groovy/org/apache/camel/k/groovy/dsl/IntegrationTest.groovy b/runtime/camel-k-runtime-groovy/src/test/groovy/org/apache/camel/k/groovy/dsl/IntegrationTest.groovy
similarity index 100%
rename from runtime/groovy/src/test/groovy/org/apache/camel/k/groovy/dsl/IntegrationTest.groovy
rename to runtime/camel-k-runtime-groovy/src/test/groovy/org/apache/camel/k/groovy/dsl/IntegrationTest.groovy
diff --git a/runtime/groovy/src/test/groovy/org/apache/camel/k/groovy/dsl/extension/LogExtensionTest.groovy b/runtime/camel-k-runtime-groovy/src/test/groovy/org/apache/camel/k/groovy/dsl/extension/LogExtensionTest.groovy
similarity index 100%
rename from runtime/groovy/src/test/groovy/org/apache/camel/k/groovy/dsl/extension/LogExtensionTest.groovy
rename to runtime/camel-k-runtime-groovy/src/test/groovy/org/apache/camel/k/groovy/dsl/extension/LogExtensionTest.groovy
diff --git a/runtime/groovy/src/test/resources/log4j2-test.xml b/runtime/camel-k-runtime-groovy/src/test/resources/log4j2-test.xml
similarity index 100%
rename from runtime/groovy/src/test/resources/log4j2-test.xml
rename to runtime/camel-k-runtime-groovy/src/test/resources/log4j2-test.xml
diff --git a/runtime/groovy/src/test/resources/routes-with-bindings.groovy b/runtime/camel-k-runtime-groovy/src/test/resources/routes-with-bindings.groovy
similarity index 100%
rename from runtime/groovy/src/test/resources/routes-with-bindings.groovy
rename to runtime/camel-k-runtime-groovy/src/test/resources/routes-with-bindings.groovy
diff --git a/runtime/groovy/src/test/resources/routes-with-component-configuration.groovy b/runtime/camel-k-runtime-groovy/src/test/resources/routes-with-component-configuration.groovy
similarity index 100%
rename from runtime/groovy/src/test/resources/routes-with-component-configuration.groovy
rename to runtime/camel-k-runtime-groovy/src/test/resources/routes-with-component-configuration.groovy
diff --git a/runtime/groovy/src/test/resources/routes-with-rest.groovy b/runtime/camel-k-runtime-groovy/src/test/resources/routes-with-rest.groovy
similarity index 100%
rename from runtime/groovy/src/test/resources/routes-with-rest.groovy
rename to runtime/camel-k-runtime-groovy/src/test/resources/routes-with-rest.groovy
diff --git a/runtime/groovy/src/test/resources/routes.groovy b/runtime/camel-k-runtime-groovy/src/test/resources/routes.groovy
similarity index 100%
rename from runtime/groovy/src/test/resources/routes.groovy
rename to runtime/camel-k-runtime-groovy/src/test/resources/routes.groovy
diff --git a/runtime/jvm/pom.xml b/runtime/camel-k-runtime-jvm/pom.xml
similarity index 100%
rename from runtime/jvm/pom.xml
rename to runtime/camel-k-runtime-jvm/pom.xml
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Application.java b/runtime/camel-k-runtime-jvm/src/main/java/org/apache/camel/k/jvm/Application.java
similarity index 100%
rename from runtime/jvm/src/main/java/org/apache/camel/k/jvm/Application.java
rename to runtime/camel-k-runtime-jvm/src/main/java/org/apache/camel/k/jvm/Application.java
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Runtime.java b/runtime/camel-k-runtime-jvm/src/main/java/org/apache/camel/k/jvm/Runtime.java
similarity index 100%
rename from runtime/jvm/src/main/java/org/apache/camel/k/jvm/Runtime.java
rename to runtime/camel-k-runtime-jvm/src/main/java/org/apache/camel/k/jvm/Runtime.java
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RuntimeSupport.java b/runtime/camel-k-runtime-jvm/src/main/java/org/apache/camel/k/jvm/RuntimeSupport.java
similarity index 100%
rename from runtime/jvm/src/main/java/org/apache/camel/k/jvm/RuntimeSupport.java
rename to runtime/camel-k-runtime-jvm/src/main/java/org/apache/camel/k/jvm/RuntimeSupport.java
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/SimpleRuntimeRegistry.java b/runtime/camel-k-runtime-jvm/src/main/java/org/apache/camel/k/jvm/SimpleRuntimeRegistry.java
similarity index 100%
rename from runtime/jvm/src/main/java/org/apache/camel/k/jvm/SimpleRuntimeRegistry.java
rename to runtime/camel-k-runtime-jvm/src/main/java/org/apache/camel/k/jvm/SimpleRuntimeRegistry.java
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/URIResolver.java b/runtime/camel-k-runtime-jvm/src/main/java/org/apache/camel/k/jvm/URIResolver.java
similarity index 100%
rename from runtime/jvm/src/main/java/org/apache/camel/k/jvm/URIResolver.java
rename to runtime/camel-k-runtime-jvm/src/main/java/org/apache/camel/k/jvm/URIResolver.java
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/dsl/Components.java b/runtime/camel-k-runtime-jvm/src/main/java/org/apache/camel/k/jvm/dsl/Components.java
similarity index 100%
rename from runtime/jvm/src/main/java/org/apache/camel/k/jvm/dsl/Components.java
rename to runtime/camel-k-runtime-jvm/src/main/java/org/apache/camel/k/jvm/dsl/Components.java
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/loader/JavaClassLoader.java b/runtime/camel-k-runtime-jvm/src/main/java/org/apache/camel/k/jvm/loader/JavaClassLoader.java
similarity index 100%
rename from runtime/jvm/src/main/java/org/apache/camel/k/jvm/loader/JavaClassLoader.java
rename to runtime/camel-k-runtime-jvm/src/main/java/org/apache/camel/k/jvm/loader/JavaClassLoader.java
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/loader/JavaScriptLoader.java b/runtime/camel-k-runtime-jvm/src/main/java/org/apache/camel/k/jvm/loader/JavaScriptLoader.java
similarity index 100%
rename from runtime/jvm/src/main/java/org/apache/camel/k/jvm/loader/JavaScriptLoader.java
rename to runtime/camel-k-runtime-jvm/src/main/java/org/apache/camel/k/jvm/loader/JavaScriptLoader.java
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/loader/JavaSourceLoader.java b/runtime/camel-k-runtime-jvm/src/main/java/org/apache/camel/k/jvm/loader/JavaSourceLoader.java
similarity index 100%
rename from runtime/jvm/src/main/java/org/apache/camel/k/jvm/loader/JavaSourceLoader.java
rename to runtime/camel-k-runtime-jvm/src/main/java/org/apache/camel/k/jvm/loader/JavaSourceLoader.java
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/loader/XmlLoader.java b/runtime/camel-k-runtime-jvm/src/main/java/org/apache/camel/k/jvm/loader/XmlLoader.java
similarity index 100%
rename from runtime/jvm/src/main/java/org/apache/camel/k/jvm/loader/XmlLoader.java
rename to runtime/camel-k-runtime-jvm/src/main/java/org/apache/camel/k/jvm/loader/XmlLoader.java
diff --git a/runtime/jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/java-class b/runtime/camel-k-runtime-jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/java-class
similarity index 100%
rename from runtime/jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/java-class
rename to runtime/camel-k-runtime-jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/java-class
diff --git a/runtime/jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/java-source b/runtime/camel-k-runtime-jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/java-source
similarity index 100%
rename from runtime/jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/java-source
rename to runtime/camel-k-runtime-jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/java-source
diff --git a/runtime/jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/js b/runtime/camel-k-runtime-jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/js
similarity index 100%
rename from runtime/jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/js
rename to runtime/camel-k-runtime-jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/js
diff --git a/runtime/jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/xml b/runtime/camel-k-runtime-jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/xml
similarity index 100%
rename from runtime/jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/xml
rename to runtime/camel-k-runtime-jvm/src/main/resources/META-INF/services/org/apache/camel/k/loader/xml
diff --git a/runtime/jvm/src/main/resources/log4j2.properties b/runtime/camel-k-runtime-jvm/src/main/resources/log4j2.properties
similarity index 100%
rename from runtime/jvm/src/main/resources/log4j2.properties
rename to runtime/camel-k-runtime-jvm/src/main/resources/log4j2.properties
diff --git a/runtime/jvm/src/test/java/org/apache/camel/k/jvm/PropertiesTest.java b/runtime/camel-k-runtime-jvm/src/test/java/org/apache/camel/k/jvm/PropertiesTest.java
similarity index 100%
rename from runtime/jvm/src/test/java/org/apache/camel/k/jvm/PropertiesTest.java
rename to runtime/camel-k-runtime-jvm/src/test/java/org/apache/camel/k/jvm/PropertiesTest.java
diff --git a/runtime/jvm/src/test/java/org/apache/camel/k/jvm/RoutesLoadersTest.java b/runtime/camel-k-runtime-jvm/src/test/java/org/apache/camel/k/jvm/RoutesLoadersTest.java
similarity index 100%
rename from runtime/jvm/src/test/java/org/apache/camel/k/jvm/RoutesLoadersTest.java
rename to runtime/camel-k-runtime-jvm/src/test/java/org/apache/camel/k/jvm/RoutesLoadersTest.java
diff --git a/runtime/jvm/src/test/java/org/apache/camel/k/jvm/RuntimeTest.java b/runtime/camel-k-runtime-jvm/src/test/java/org/apache/camel/k/jvm/RuntimeTest.java
similarity index 100%
rename from runtime/jvm/src/test/java/org/apache/camel/k/jvm/RuntimeTest.java
rename to runtime/camel-k-runtime-jvm/src/test/java/org/apache/camel/k/jvm/RuntimeTest.java
diff --git a/runtime/jvm/src/test/java/org/apache/camel/k/jvm/RuntimeTestSupport.java b/runtime/camel-k-runtime-jvm/src/test/java/org/apache/camel/k/jvm/RuntimeTestSupport.java
similarity index 100%
rename from runtime/jvm/src/test/java/org/apache/camel/k/jvm/RuntimeTestSupport.java
rename to runtime/camel-k-runtime-jvm/src/test/java/org/apache/camel/k/jvm/RuntimeTestSupport.java
diff --git a/runtime/jvm/src/test/resources/MyRoutes.java b/runtime/camel-k-runtime-jvm/src/test/resources/MyRoutes.java
similarity index 100%
rename from runtime/jvm/src/test/resources/MyRoutes.java
rename to runtime/camel-k-runtime-jvm/src/test/resources/MyRoutes.java
diff --git a/runtime/jvm/src/test/resources/MyRoutesWithNestedClass.java b/runtime/camel-k-runtime-jvm/src/test/resources/MyRoutesWithNestedClass.java
similarity index 100%
rename from runtime/jvm/src/test/resources/MyRoutesWithNestedClass.java
rename to runtime/camel-k-runtime-jvm/src/test/resources/MyRoutesWithNestedClass.java
diff --git a/runtime/jvm/src/test/resources/conf.d/001/conf.properties b/runtime/camel-k-runtime-jvm/src/test/resources/conf.d/001/conf.properties
similarity index 100%
rename from runtime/jvm/src/test/resources/conf.d/001/conf.properties
rename to runtime/camel-k-runtime-jvm/src/test/resources/conf.d/001/conf.properties
diff --git a/runtime/jvm/src/test/resources/conf.d/002/conf.properties b/runtime/camel-k-runtime-jvm/src/test/resources/conf.d/002/conf.properties
similarity index 100%
rename from runtime/jvm/src/test/resources/conf.d/002/conf.properties
rename to runtime/camel-k-runtime-jvm/src/test/resources/conf.d/002/conf.properties
diff --git a/runtime/jvm/src/test/resources/conf.properties b/runtime/camel-k-runtime-jvm/src/test/resources/conf.properties
similarity index 100%
rename from runtime/jvm/src/test/resources/conf.properties
rename to runtime/camel-k-runtime-jvm/src/test/resources/conf.properties
diff --git a/runtime/jvm/src/test/resources/log4j2-test.xml b/runtime/camel-k-runtime-jvm/src/test/resources/log4j2-test.xml
similarity index 100%
rename from runtime/jvm/src/test/resources/log4j2-test.xml
rename to runtime/camel-k-runtime-jvm/src/test/resources/log4j2-test.xml
diff --git a/runtime/jvm/src/test/resources/r1.js b/runtime/camel-k-runtime-jvm/src/test/resources/r1.js
similarity index 100%
rename from runtime/jvm/src/test/resources/r1.js
rename to runtime/camel-k-runtime-jvm/src/test/resources/r1.js
diff --git a/runtime/jvm/src/test/resources/r2.mytype b/runtime/camel-k-runtime-jvm/src/test/resources/r2.mytype
similarity index 100%
rename from runtime/jvm/src/test/resources/r2.mytype
rename to runtime/camel-k-runtime-jvm/src/test/resources/r2.mytype
diff --git a/runtime/jvm/src/test/resources/routes-compressed.js.gz.b64 b/runtime/camel-k-runtime-jvm/src/test/resources/routes-compressed.js.gz.b64
similarity index 100%
rename from runtime/jvm/src/test/resources/routes-compressed.js.gz.b64
rename to runtime/camel-k-runtime-jvm/src/test/resources/routes-compressed.js.gz.b64
diff --git a/runtime/jvm/src/test/resources/routes.js b/runtime/camel-k-runtime-jvm/src/test/resources/routes.js
similarity index 100%
rename from runtime/jvm/src/test/resources/routes.js
rename to runtime/camel-k-runtime-jvm/src/test/resources/routes.js
diff --git a/runtime/jvm/src/test/resources/routes.mytype b/runtime/camel-k-runtime-jvm/src/test/resources/routes.mytype
similarity index 100%
rename from runtime/jvm/src/test/resources/routes.mytype
rename to runtime/camel-k-runtime-jvm/src/test/resources/routes.mytype
diff --git a/runtime/jvm/src/test/resources/routes.xml b/runtime/camel-k-runtime-jvm/src/test/resources/routes.xml
similarity index 100%
rename from runtime/jvm/src/test/resources/routes.xml
rename to runtime/camel-k-runtime-jvm/src/test/resources/routes.xml
diff --git a/runtime/kotlin/pom.xml b/runtime/camel-k-runtime-kotlin/pom.xml
similarity index 100%
rename from runtime/kotlin/pom.xml
rename to runtime/camel-k-runtime-kotlin/pom.xml
diff --git a/runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/KotlinRoutesLoader.kt b/runtime/camel-k-runtime-kotlin/src/main/kotlin/org/apache/camel/k/kotlin/KotlinRoutesLoader.kt
similarity index 100%
rename from runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/KotlinRoutesLoader.kt
rename to runtime/camel-k-runtime-kotlin/src/main/kotlin/org/apache/camel/k/kotlin/KotlinRoutesLoader.kt
diff --git a/runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/ComponentsConfiguration.kt b/runtime/camel-k-runtime-kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/ComponentsConfiguration.kt
similarity index 100%
rename from runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/ComponentsConfiguration.kt
rename to runtime/camel-k-runtime-kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/ComponentsConfiguration.kt
diff --git a/runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/ContextConfiguration.kt b/runtime/camel-k-runtime-kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/ContextConfiguration.kt
similarity index 100%
rename from runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/ContextConfiguration.kt
rename to runtime/camel-k-runtime-kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/ContextConfiguration.kt
diff --git a/runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/IntegrationConfiguration.kt b/runtime/camel-k-runtime-kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/IntegrationConfiguration.kt
similarity index 100%
rename from runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/IntegrationConfiguration.kt
rename to runtime/camel-k-runtime-kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/IntegrationConfiguration.kt
diff --git a/runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/RegistryConfiguration.kt b/runtime/camel-k-runtime-kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/RegistryConfiguration.kt
similarity index 100%
rename from runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/RegistryConfiguration.kt
rename to runtime/camel-k-runtime-kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/RegistryConfiguration.kt
diff --git a/runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/RestConfiguration.kt b/runtime/camel-k-runtime-kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/RestConfiguration.kt
similarity index 100%
rename from runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/RestConfiguration.kt
rename to runtime/camel-k-runtime-kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/RestConfiguration.kt
diff --git a/runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/extension/LogComponentExtensions.kt b/runtime/camel-k-runtime-kotlin/src/main/kotlin/org/apache/camel/k/kotlin/extension/LogComponentExtensions.kt
similarity index 100%
rename from runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/extension/LogComponentExtensions.kt
rename to runtime/camel-k-runtime-kotlin/src/main/kotlin/org/apache/camel/k/kotlin/extension/LogComponentExtensions.kt
diff --git a/runtime/kotlin/src/main/resources/META-INF/services/org/apache/camel/k/loader/kotlin b/runtime/camel-k-runtime-kotlin/src/main/resources/META-INF/services/org/apache/camel/k/loader/kotlin
similarity index 100%
rename from runtime/kotlin/src/main/resources/META-INF/services/org/apache/camel/k/loader/kotlin
rename to runtime/camel-k-runtime-kotlin/src/main/resources/META-INF/services/org/apache/camel/k/loader/kotlin
diff --git a/runtime/kotlin/src/test/kotlin/org/apache/camel/k/kotlin/LoaderTest.kt b/runtime/camel-k-runtime-kotlin/src/test/kotlin/org/apache/camel/k/kotlin/LoaderTest.kt
similarity index 100%
rename from runtime/kotlin/src/test/kotlin/org/apache/camel/k/kotlin/LoaderTest.kt
rename to runtime/camel-k-runtime-kotlin/src/test/kotlin/org/apache/camel/k/kotlin/LoaderTest.kt
diff --git a/runtime/kotlin/src/test/kotlin/org/apache/camel/k/kotlin/dsl/IntegrationTest.kt b/runtime/camel-k-runtime-kotlin/src/test/kotlin/org/apache/camel/k/kotlin/dsl/IntegrationTest.kt
similarity index 100%
rename from runtime/kotlin/src/test/kotlin/org/apache/camel/k/kotlin/dsl/IntegrationTest.kt
rename to runtime/camel-k-runtime-kotlin/src/test/kotlin/org/apache/camel/k/kotlin/dsl/IntegrationTest.kt
diff --git a/runtime/kotlin/src/test/kotlin/org/apache/camel/k/kotlin/extension/LogExtensionTest.kt b/runtime/camel-k-runtime-kotlin/src/test/kotlin/org/apache/camel/k/kotlin/extension/LogExtensionTest.kt
similarity index 100%
rename from runtime/kotlin/src/test/kotlin/org/apache/camel/k/kotlin/extension/LogExtensionTest.kt
rename to runtime/camel-k-runtime-kotlin/src/test/kotlin/org/apache/camel/k/kotlin/extension/LogExtensionTest.kt
diff --git a/runtime/kotlin/src/test/resources/log4j2-test.xml b/runtime/camel-k-runtime-kotlin/src/test/resources/log4j2-test.xml
similarity index 100%
rename from runtime/kotlin/src/test/resources/log4j2-test.xml
rename to runtime/camel-k-runtime-kotlin/src/test/resources/log4j2-test.xml
diff --git a/runtime/kotlin/src/test/resources/routes-new.kts b/runtime/camel-k-runtime-kotlin/src/test/resources/routes-new.kts
similarity index 100%
rename from runtime/kotlin/src/test/resources/routes-new.kts
rename to runtime/camel-k-runtime-kotlin/src/test/resources/routes-new.kts
diff --git a/runtime/kotlin/src/test/resources/routes-with-bindings.kts b/runtime/camel-k-runtime-kotlin/src/test/resources/routes-with-bindings.kts
similarity index 100%
rename from runtime/kotlin/src/test/resources/routes-with-bindings.kts
rename to runtime/camel-k-runtime-kotlin/src/test/resources/routes-with-bindings.kts
diff --git a/runtime/kotlin/src/test/resources/routes-with-component-configuration.kts b/runtime/camel-k-runtime-kotlin/src/test/resources/routes-with-component-configuration.kts
similarity index 100%
rename from runtime/kotlin/src/test/resources/routes-with-component-configuration.kts
rename to runtime/camel-k-runtime-kotlin/src/test/resources/routes-with-component-configuration.kts
diff --git a/runtime/kotlin/src/test/resources/routes-with-rest.kts b/runtime/camel-k-runtime-kotlin/src/test/resources/routes-with-rest.kts
similarity index 100%
rename from runtime/kotlin/src/test/resources/routes-with-rest.kts
rename to runtime/camel-k-runtime-kotlin/src/test/resources/routes-with-rest.kts
diff --git a/runtime/kotlin/src/test/resources/routes.kts b/runtime/camel-k-runtime-kotlin/src/test/resources/routes.kts
similarity index 100%
rename from runtime/kotlin/src/test/resources/routes.kts
rename to runtime/camel-k-runtime-kotlin/src/test/resources/routes.kts
diff --git a/runtime/spring-boot/pom.xml b/runtime/camel-k-runtime-spring-boot/pom.xml
similarity index 100%
rename from runtime/spring-boot/pom.xml
rename to runtime/camel-k-runtime-spring-boot/pom.xml
diff --git a/runtime/spring-boot/src/main/java/org/apache/camel/k/spring/boot/Application.java b/runtime/camel-k-runtime-spring-boot/src/main/java/org/apache/camel/k/spring/boot/Application.java
similarity index 100%
rename from runtime/spring-boot/src/main/java/org/apache/camel/k/spring/boot/Application.java
rename to runtime/camel-k-runtime-spring-boot/src/main/java/org/apache/camel/k/spring/boot/Application.java
diff --git a/runtime/pom.xml b/runtime/pom.xml
index 460135c..014e40b 100644
--- a/runtime/pom.xml
+++ b/runtime/pom.xml
@@ -94,11 +94,11 @@
     </build>
 
     <modules>
-        <module>core</module>
-        <module>jvm</module>
-        <module>groovy</module>
-        <module>kotlin</module>
-        <module>spring-boot</module>
+        <module>camel-k-runtime-core</module>
+        <module>camel-k-runtime-jvm</module>
+        <module>camel-k-runtime-groovy</module>
+        <module>camel-k-runtime-kotlin</module>
+        <module>camel-k-runtime-spring-boot</module>
         <module>catalog-builder</module>
         <module>dependency-lister</module>
         <module>camel-knative-http</module>


[camel-k] 01/03: runtime: initial support for traits #287

Posted by nf...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nferraro pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit aa2890f6ce32ae3cada01b28c33be6e05e8a372d
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Thu Dec 13 01:49:30 2018 +0100

    runtime: initial support for traits #287
---
 runtime/{jvm => core}/pom.xml                      |  27 +----
 .../main/java/org/apache/camel/k}/Constants.java   |   5 +-
 .../main/java/org/apache/camel/k}/Language.java    |   2 +-
 .../java/org/apache/camel/k}/RoutesLoader.java     |   2 +-
 .../java/org/apache/camel/k}/RuntimeRegistry.java  |   6 +-
 .../java/org/apache/camel/k/RuntimeTrait.java}     |  19 ++--
 .../src/main/java/org/apache/camel/k}/Source.java  |   2 +-
 .../camel/k/groovy/GroovyRoutesLoader.groovy       |   4 +
 .../camel/k/groovy/dsl/ContextConfiguration.groovy |   2 +-
 .../k/groovy/dsl/IntegrationConfiguration.groovy   |   2 +-
 .../k/groovy/dsl/RegistryConfiguration.groovy      |   2 +-
 ...outesLoader => org.apache.camel.k.RoutesLoader} |   0
 .../org/apache/camel/k/groovy/LoaderTest.groovy    |   2 +-
 runtime/jvm/pom.xml                                |  14 +--
 .../java/org/apache/camel/k/jvm/Application.java   |  23 +++--
 .../java/org/apache/camel/k/jvm/RoutesLoaders.java |   5 +
 .../main/java/org/apache/camel/k/jvm/Runtime.java  |   4 +-
 .../org/apache/camel/k/jvm/RuntimeSupport.java     |  40 ++++++++
 .../apache/camel/k/jvm/SimpleRuntimeRegistry.java  |   1 +
 .../java/org/apache/camel/k/jvm/URIResolver.java   |   2 +
 ...outesLoader => org.apache.camel.k.RoutesLoader} |   0
 .../org/apache/camel/k/jvm/PropertiesTest.java     | 110 +++++++++------------
 .../org/apache/camel/k/jvm/RoutesLoadersTest.java  |   2 +
 .../apache/camel/k/jvm/RuntimeTestSupport.java}    |  42 ++++----
 .../apache/camel/k/kotlin/KotlinRoutesLoader.kt    |   4 +
 .../camel/k/kotlin/dsl/ContextConfiguration.kt     |   2 +-
 .../camel/k/kotlin/dsl/IntegrationConfiguration.kt |   2 +-
 .../camel/k/kotlin/dsl/RegistryConfiguration.kt    |   2 +-
 ...outesLoader => org.apache.camel.k.RoutesLoader} |   0
 .../kotlin/org/apache/camel/k/kotlin/LoaderTest.kt |   2 +-
 runtime/pom.xml                                    |   5 +-
 .../apache/camel/k/spring/boot/Application.java    |  15 ++-
 32 files changed, 179 insertions(+), 171 deletions(-)

diff --git a/runtime/jvm/pom.xml b/runtime/core/pom.xml
similarity index 76%
copy from runtime/jvm/pom.xml
copy to runtime/core/pom.xml
index b02dc3c..3577492 100644
--- a/runtime/jvm/pom.xml
+++ b/runtime/core/pom.xml
@@ -27,11 +27,7 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>camel-k-runtime-jvm</artifactId>
-
-    <properties>
-        <kotlin.version>1.2.71</kotlin.version>
-    </properties>
+    <artifactId>camel-k-runtime-core</artifactId>
 
     <dependencies>
 
@@ -51,27 +47,6 @@
             <version>${slf4j.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-core</artifactId>
-            <version>${log4j2.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <version>${log4j2.version}</version>
-            <scope>runtime</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.jooq</groupId>
-            <artifactId>joor-java-8</artifactId>
-            <version>${joor.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-            <version>${commons-io.version}</version>
-        </dependency>
-        <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
             <version>${commons-lang.version}</version>
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Constants.java b/runtime/core/src/main/java/org/apache/camel/k/Constants.java
similarity index 80%
rename from runtime/jvm/src/main/java/org/apache/camel/k/jvm/Constants.java
rename to runtime/core/src/main/java/org/apache/camel/k/Constants.java
index d3cb4b7..e00fed4 100644
--- a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Constants.java
+++ b/runtime/core/src/main/java/org/apache/camel/k/Constants.java
@@ -14,16 +14,19 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.k.jvm;
+package org.apache.camel.k;
 
 public final class Constants {
     public static final String ENV_CAMEL_K_ROUTES = "CAMEL_K_ROUTES";
     public static final String ENV_CAMEL_K_CONF = "CAMEL_K_CONF";
     public static final String ENV_CAMEL_K_CONF_D = "CAMEL_K_CONF_D";
+    public static final String ENV_CAMEL_K_TRAITS = "CAMEL_K_TRAITS";
     public static final String SCHEME_CLASSPATH = "classpath:";
     public static final String SCHEME_FILE = "file:";
     public static final String SCHEME_ENV = "env:";
     public static final String LOGGING_LEVEL_PREFIX = "logging.level.";
+    public static final String ROUTES_LOADER_RESOURCE_PATH = "META-INF/services/org/apache/camel/k/loader/";
+    public static final String RUNTIME_TRAIT_RESOURCE_PATH = "META-INF/services/org/apache/camel/k/trait/";
 
     private Constants() {
     }
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Language.java b/runtime/core/src/main/java/org/apache/camel/k/Language.java
similarity index 98%
rename from runtime/jvm/src/main/java/org/apache/camel/k/jvm/Language.java
rename to runtime/core/src/main/java/org/apache/camel/k/Language.java
index d041faa..bfeffa5 100644
--- a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Language.java
+++ b/runtime/core/src/main/java/org/apache/camel/k/Language.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.k.jvm;
+package org.apache.camel.k;
 
 import java.util.Arrays;
 import java.util.Collections;
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RoutesLoader.java b/runtime/core/src/main/java/org/apache/camel/k/RoutesLoader.java
similarity index 97%
rename from runtime/jvm/src/main/java/org/apache/camel/k/jvm/RoutesLoader.java
rename to runtime/core/src/main/java/org/apache/camel/k/RoutesLoader.java
index faac8ed..3026b92 100644
--- a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RoutesLoader.java
+++ b/runtime/core/src/main/java/org/apache/camel/k/RoutesLoader.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.k.jvm;
+package org.apache.camel.k;
 
 import java.util.List;
 
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RuntimeRegistry.java b/runtime/core/src/main/java/org/apache/camel/k/RuntimeRegistry.java
similarity index 96%
copy from runtime/jvm/src/main/java/org/apache/camel/k/jvm/RuntimeRegistry.java
copy to runtime/core/src/main/java/org/apache/camel/k/RuntimeRegistry.java
index 7e13a28..895fe33 100644
--- a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RuntimeRegistry.java
+++ b/runtime/core/src/main/java/org/apache/camel/k/RuntimeRegistry.java
@@ -14,17 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.k.jvm;
+package org.apache.camel.k;
 
 import java.util.Map;
 
 import org.apache.camel.spi.Registry;
 
 public interface RuntimeRegistry extends Registry {
-
-    /**
-     *
-     */
     void bind(String name, Object bean);
 
     @SuppressWarnings("deprecation")
diff --git a/runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/RegistryConfiguration.kt b/runtime/core/src/main/java/org/apache/camel/k/RuntimeTrait.java
similarity index 73%
copy from runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/RegistryConfiguration.kt
copy to runtime/core/src/main/java/org/apache/camel/k/RuntimeTrait.java
index f15f71a..275f53a 100644
--- a/runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/RegistryConfiguration.kt
+++ b/runtime/core/src/main/java/org/apache/camel/k/RuntimeTrait.java
@@ -1,3 +1,7 @@
+package org.apache.camel.k;
+
+import org.apache.camel.CamelContext;
+
 /**
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -6,7 +10,7 @@
  * (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
+ *      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,
@@ -14,12 +18,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.k.kotlin.dsl
-
-import org.apache.camel.k.jvm.RuntimeRegistry
 
-class RegistryConfiguration(val registry: RuntimeRegistry) {
-    fun bind(name: String, value: Any) {
-        registry.bind(name, value)
-    }
+@FunctionalInterface
+public interface RuntimeTrait {
+    /**
+     * Perform CamelContext customization.
+     */
+    void apply(CamelContext camelContext);
 }
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Source.java b/runtime/core/src/main/java/org/apache/camel/k/Source.java
similarity index 98%
rename from runtime/jvm/src/main/java/org/apache/camel/k/jvm/Source.java
rename to runtime/core/src/main/java/org/apache/camel/k/Source.java
index 8b00a4b..0726b07 100644
--- a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Source.java
+++ b/runtime/core/src/main/java/org/apache/camel/k/Source.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.k.jvm;
+package org.apache.camel.k;
 
 import java.util.Map;
 
diff --git a/runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/GroovyRoutesLoader.groovy b/runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/GroovyRoutesLoader.groovy
index 932f526..bb081d4 100644
--- a/runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/GroovyRoutesLoader.groovy
+++ b/runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/GroovyRoutesLoader.groovy
@@ -18,6 +18,10 @@ package org.apache.camel.k.groovy
 
 
 import org.apache.camel.builder.RouteBuilder
+import org.apache.camel.k.Language
+import org.apache.camel.k.RoutesLoader
+import org.apache.camel.k.RuntimeRegistry
+import org.apache.camel.k.Source
 import org.apache.camel.k.groovy.dsl.IntegrationConfiguration
 import org.apache.camel.k.jvm.*
 import org.codehaus.groovy.control.CompilerConfiguration
diff --git a/runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/ContextConfiguration.groovy b/runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/ContextConfiguration.groovy
index 405fe8c..d70dd04 100644
--- a/runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/ContextConfiguration.groovy
+++ b/runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/ContextConfiguration.groovy
@@ -17,7 +17,7 @@
 package org.apache.camel.k.groovy.dsl
 
 import org.apache.camel.CamelContext
-import org.apache.camel.k.jvm.RuntimeRegistry
+import org.apache.camel.k.RuntimeRegistry
 
 class ContextConfiguration {
     private final CamelContext context
diff --git a/runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/IntegrationConfiguration.groovy b/runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/IntegrationConfiguration.groovy
index 5b07bd5..fdc860a 100644
--- a/runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/IntegrationConfiguration.groovy
+++ b/runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/IntegrationConfiguration.groovy
@@ -21,7 +21,7 @@ import org.apache.camel.Exchange
 import org.apache.camel.Predicate
 import org.apache.camel.Processor
 import org.apache.camel.builder.RouteBuilder
-import org.apache.camel.k.jvm.RuntimeRegistry
+import org.apache.camel.k.RuntimeRegistry
 import org.apache.camel.k.jvm.dsl.Components
 import org.apache.camel.model.RouteDefinition
 
diff --git a/runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/RegistryConfiguration.groovy b/runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/RegistryConfiguration.groovy
index 0b7b23d..f695ec1 100644
--- a/runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/RegistryConfiguration.groovy
+++ b/runtime/groovy/src/main/groovy/org/apache/camel/k/groovy/dsl/RegistryConfiguration.groovy
@@ -16,7 +16,7 @@
  */
 package org.apache.camel.k.groovy.dsl
 
-import org.apache.camel.k.jvm.RuntimeRegistry
+import org.apache.camel.k.RuntimeRegistry
 
 class RegistryConfiguration {
     private final RuntimeRegistry registry
diff --git a/runtime/groovy/src/main/resources/META-INF/services/org.apache.camel.k.jvm.RoutesLoader b/runtime/groovy/src/main/resources/META-INF/services/org.apache.camel.k.RoutesLoader
similarity index 100%
rename from runtime/groovy/src/main/resources/META-INF/services/org.apache.camel.k.jvm.RoutesLoader
rename to runtime/groovy/src/main/resources/META-INF/services/org.apache.camel.k.RoutesLoader
diff --git a/runtime/groovy/src/test/groovy/org/apache/camel/k/groovy/LoaderTest.groovy b/runtime/groovy/src/test/groovy/org/apache/camel/k/groovy/LoaderTest.groovy
index ab3779c..a9c8a0a 100644
--- a/runtime/groovy/src/test/groovy/org/apache/camel/k/groovy/LoaderTest.groovy
+++ b/runtime/groovy/src/test/groovy/org/apache/camel/k/groovy/LoaderTest.groovy
@@ -18,7 +18,7 @@ package org.apache.camel.k.groovy
 
 import org.apache.camel.k.jvm.RoutesLoaders
 import org.apache.camel.k.jvm.SimpleRuntimeRegistry
-import org.apache.camel.k.jvm.Source
+import org.apache.camel.k.Source
 import org.apache.camel.model.ToDefinition
 import spock.lang.Specification
 
diff --git a/runtime/jvm/pom.xml b/runtime/jvm/pom.xml
index b02dc3c..aa48603 100644
--- a/runtime/jvm/pom.xml
+++ b/runtime/jvm/pom.xml
@@ -29,10 +29,6 @@
 
     <artifactId>camel-k-runtime-jvm</artifactId>
 
-    <properties>
-        <kotlin.version>1.2.71</kotlin.version>
-    </properties>
-
     <dependencies>
 
         <!-- ****************************** -->
@@ -42,13 +38,9 @@
         <!-- ****************************** -->
 
         <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-            <version>${slf4j.version}</version>
+            <groupId>org.apache.camel.k</groupId>
+            <artifactId>camel-k-runtime-core</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.logging.log4j</groupId>
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Application.java b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Application.java
index 917b566..682609c 100644
--- a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Application.java
+++ b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Application.java
@@ -16,11 +16,9 @@
  */
 package org.apache.camel.k.jvm;
 
-import java.util.Properties;
-
 import org.apache.camel.CamelContext;
 import org.apache.camel.Component;
-import org.apache.camel.component.properties.PropertiesComponent;
+import org.apache.camel.k.Constants;
 import org.apache.camel.main.MainListenerSupport;
 import org.apache.camel.support.LifecycleStrategySupport;
 import org.apache.camel.util.ObjectHelper;
@@ -65,20 +63,21 @@ public class Application {
     // *******************************
 
     static class ComponentPropertiesBinder extends MainListenerSupport {
+
         @Override
         public void configure(CamelContext context) {
-            final PropertiesComponent component = context.getComponent("properties", PropertiesComponent.class);
-            final Properties properties = component.getInitialProperties();
-
-            if (properties == null) {
-                throw new IllegalStateException("PropertiesComponent has no properties");
-            }
-
             // Configure the camel context using properties in the form:
             //
             //     camel.context.${name} = ${value}
             //
-            RuntimeSupport.bindProperties(properties, context, "camel.context.");
+            RuntimeSupport.bindProperties(context, context, "camel.context.");
+
+            // Programmatically apply the camel context.
+            //
+            // This is useful to configure services such as the ClusterService,
+            // RouteController, etc
+            //
+            RuntimeSupport.configureContext(context);
 
             context.addLifecycleStrategy(new LifecycleStrategySupport() {
                 @SuppressWarnings("unchecked")
@@ -90,7 +89,7 @@ public class Application {
                     //
                     //     camel.component.${scheme}.${name} = ${value}
                     //
-                    RuntimeSupport.bindProperties(properties, component, "camel.component." + name + ".");
+                    RuntimeSupport.bindProperties(context, component, "camel.component." + name + ".");
                 }
             });
         }
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RoutesLoaders.java b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RoutesLoaders.java
index 5f67078..5702931 100644
--- a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RoutesLoaders.java
+++ b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RoutesLoaders.java
@@ -32,6 +32,11 @@ import javax.xml.bind.UnmarshalException;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.k.Constants;
+import org.apache.camel.k.Language;
+import org.apache.camel.k.RoutesLoader;
+import org.apache.camel.k.RuntimeRegistry;
+import org.apache.camel.k.Source;
 import org.apache.camel.k.jvm.dsl.Components;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.model.rest.RestConfigurationDefinition;
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Runtime.java b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Runtime.java
index 1e05e70..287ba69 100644
--- a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Runtime.java
+++ b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Runtime.java
@@ -20,13 +20,15 @@ import java.util.Map;
 import java.util.Properties;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
-
 import org.apache.camel.CamelContext;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.properties.PropertiesComponent;
 import org.apache.camel.impl.CompositeRegistry;
 import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.k.RoutesLoader;
+import org.apache.camel.k.RuntimeRegistry;
+import org.apache.camel.k.Source;
 import org.apache.camel.main.MainSupport;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RuntimeSupport.java b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RuntimeSupport.java
index 936e4d1..d6a005c 100644
--- a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RuntimeSupport.java
+++ b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RuntimeSupport.java
@@ -28,6 +28,12 @@ import java.nio.file.attribute.BasicFileAttributes;
 import java.util.Objects;
 import java.util.Properties;
 
+import org.apache.camel.CamelContext;
+import org.apache.camel.NoFactoryAvailableException;
+import org.apache.camel.component.properties.PropertiesComponent;
+import org.apache.camel.k.Constants;
+import org.apache.camel.k.RuntimeTrait;
+import org.apache.camel.spi.FactoryFinder;
 import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.commons.io.FilenameUtils;
@@ -102,6 +108,29 @@ public final class RuntimeSupport {
         return properties;
     }
 
+    public static void configureContext(CamelContext context) {
+        try {
+            FactoryFinder finder = context.getFactoryFinder(Constants.RUNTIME_TRAIT_RESOURCE_PATH);
+            String traitIDs = System.getenv().getOrDefault(Constants.ENV_CAMEL_K_TRAITS, "");
+
+            for (String traitId: traitIDs.split(",", -1)) {
+                RuntimeTrait trait = (RuntimeTrait)finder.newInstance(traitId);
+
+                bindProperties(context, trait, "trait." + traitId);
+
+                trait.apply(context);
+            }
+        } catch (NoFactoryAvailableException e) {
+            // ignored
+        }
+
+        context.getRegistry().findByType(RuntimeTrait.class).forEach(
+            customizer -> {
+                customizer.apply(context);
+            }
+        );
+    }
+
     public static void configureLogging() {
         final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
         final Properties properties = loadProperties();
@@ -123,6 +152,17 @@ public final class RuntimeSupport {
         );
     }
 
+    public static void bindProperties(CamelContext context, Object target, String prefix) {
+        final PropertiesComponent component = context.getComponent("properties", PropertiesComponent.class);
+        final Properties properties = component.getInitialProperties();
+
+        if (properties == null) {
+            throw new IllegalStateException("PropertiesComponent has no properties");
+        }
+
+        bindProperties(properties, target, prefix);
+    }
+
     public static void bindProperties(Properties properties, Object target, String prefix) {
         properties.entrySet().stream()
             .filter(entry -> entry.getKey() instanceof String)
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/SimpleRuntimeRegistry.java b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/SimpleRuntimeRegistry.java
index 1035b9c..c62175f 100644
--- a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/SimpleRuntimeRegistry.java
+++ b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/SimpleRuntimeRegistry.java
@@ -24,6 +24,7 @@ import java.util.concurrent.ConcurrentMap;
 import java.util.stream.Collectors;
 
 import org.apache.camel.NoSuchBeanException;
+import org.apache.camel.k.RuntimeRegistry;
 
 public class SimpleRuntimeRegistry implements RuntimeRegistry {
     private final ConcurrentMap<String, Object> registry;
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/URIResolver.java b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/URIResolver.java
index c7ec4fe..30bee2e 100644
--- a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/URIResolver.java
+++ b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/URIResolver.java
@@ -24,6 +24,8 @@ import java.util.Base64;
 import java.util.zip.GZIPInputStream;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.k.Constants;
+import org.apache.camel.k.Source;
 import org.apache.camel.util.ResourceHelper;
 import org.apache.camel.util.StringHelper;
 
diff --git a/runtime/jvm/src/main/resources/META-INF/services/org.apache.camel.k.jvm.RoutesLoader b/runtime/jvm/src/main/resources/META-INF/services/org.apache.camel.k.RoutesLoader
similarity index 100%
rename from runtime/jvm/src/main/resources/META-INF/services/org.apache.camel.k.jvm.RoutesLoader
rename to runtime/jvm/src/main/resources/META-INF/services/org.apache.camel.k.RoutesLoader
diff --git a/runtime/jvm/src/test/java/org/apache/camel/k/jvm/PropertiesTest.java b/runtime/jvm/src/test/java/org/apache/camel/k/jvm/PropertiesTest.java
index 6ae8324..43e0d9c 100644
--- a/runtime/jvm/src/test/java/org/apache/camel/k/jvm/PropertiesTest.java
+++ b/runtime/jvm/src/test/java/org/apache/camel/k/jvm/PropertiesTest.java
@@ -19,12 +19,11 @@ package org.apache.camel.k.jvm;
 import java.util.Properties;
 import java.util.concurrent.ThreadLocalRandom;
 
-import org.apache.camel.CamelContext;
 import org.apache.camel.component.seda.SedaComponent;
-import org.apache.camel.main.MainListenerSupport;
-import org.apache.camel.main.MainSupport;
+import org.apache.camel.k.RuntimeTrait;
 import org.junit.jupiter.api.Test;
 
+import static org.apache.camel.k.jvm.RuntimeTestSupport.afterStart;
 import static org.assertj.core.api.Assertions.assertThat;
 
 public class PropertiesTest {
@@ -37,23 +36,13 @@ public class PropertiesTest {
         runtime.setProperties(properties);
         runtime.setDuration(5);
         runtime.addMainListener(new Application.ComponentPropertiesBinder());
-        runtime.addMainListener(new MainListenerSupport() {
-            @Override
-            public void afterStart(MainSupport main) {
-                try {
-                    CamelContext context = main.getCamelContexts().get(0);
-
-                    assertThat(context.resolvePropertyPlaceholders("{{root.key}}")).isEqualTo("root.value");
-                    assertThat(context.resolvePropertyPlaceholders("{{001.key}}")).isEqualTo("001.value");
-                    assertThat(context.resolvePropertyPlaceholders("{{002.key}}")).isEqualTo("002.value");
-                    assertThat(context.resolvePropertyPlaceholders("{{a.key}}")).isEqualTo("a.002");
-
-                    main.stop();
-                } catch (Exception e) {
-                    throw new RuntimeException(e);
-                }
-            }
-        });
+        runtime.addMainListener(afterStart((main, context) -> {
+            assertThat(context.resolvePropertyPlaceholders("{{root.key}}")).isEqualTo("root.value");
+            assertThat(context.resolvePropertyPlaceholders("{{001.key}}")).isEqualTo("001.value");
+            assertThat(context.resolvePropertyPlaceholders("{{002.key}}")).isEqualTo("002.value");
+            assertThat(context.resolvePropertyPlaceholders("{{a.key}}")).isEqualTo("a.002");
+            main.stop();
+        }));
 
         runtime.run();
     }
@@ -67,21 +56,12 @@ public class PropertiesTest {
             runtime.setProperties(System.getProperties());
             runtime.setDuration(5);
             runtime.addMainListener(new Application.ComponentPropertiesBinder());
-            runtime.addMainListener(new MainListenerSupport() {
-                @Override
-                public void afterStart(MainSupport main) {
-                    try {
-                        CamelContext context = main.getCamelContexts().get(0);
-                        String value = context.resolvePropertyPlaceholders("{{my.property}}");
-
-                        assertThat(value).isEqualTo("my.value");
-
-                        main.stop();
-                    } catch (Exception e) {
-                        throw new RuntimeException(e);
-                    }
-                }
-            });
+            runtime.addMainListener(afterStart((main, context) -> {
+                String value = context.resolvePropertyPlaceholders("{{my.property}}");
+
+                assertThat(value).isEqualTo("my.value");
+                main.stop();
+            }));
 
             runtime.run();
         } finally {
@@ -103,21 +83,11 @@ public class PropertiesTest {
             runtime.setDuration(5);
             runtime.getRegistry().bind("my-seda", new SedaComponent());
             runtime.addMainListener(new Application.ComponentPropertiesBinder());
-            runtime.addMainListener(new MainListenerSupport() {
-                @Override
-                public void afterStart(MainSupport main) {
-                    try {
-                        CamelContext context = main.getCamelContexts().get(0);
-
-                        assertThat(context.getComponent("seda", true)).hasFieldOrPropertyWithValue("queueSize", queueSize1);
-                        assertThat(context.getComponent("my-seda", true)).hasFieldOrPropertyWithValue("queueSize", queueSize2);
-
-                        main.stop();
-                    } catch (Exception e) {
-                        throw new RuntimeException(e);
-                    }
-                }
-            });
+            runtime.addMainListener(afterStart((main, context) -> {
+                assertThat(context.getComponent("seda", true)).hasFieldOrPropertyWithValue("queueSize", queueSize1);
+                assertThat(context.getComponent("my-seda", true)).hasFieldOrPropertyWithValue("queueSize", queueSize2);
+                main.stop();
+            }));
 
             runtime.run();
         } finally {
@@ -135,23 +105,12 @@ public class PropertiesTest {
             Runtime runtime = new Runtime();
             runtime.setProperties(System.getProperties());
             runtime.setDuration(5);
-            runtime.getRegistry().bind("my-seda", new SedaComponent());
             runtime.addMainListener(new Application.ComponentPropertiesBinder());
-            runtime.addMainListener(new MainListenerSupport() {
-                @Override
-                public void afterStart(MainSupport main) {
-                    try {
-                        CamelContext context = main.getCamelContexts().get(0);
-
-                        assertThat(context.isMessageHistory()).isFalse();
-                        assertThat(context.isLoadTypeConverters()).isFalse();
-
-                        main.stop();
-                    } catch (Exception e) {
-                        throw new RuntimeException(e);
-                    }
-                }
-            });
+            runtime.addMainListener(afterStart((main, context) -> {
+                assertThat(context.isMessageHistory()).isFalse();
+                assertThat(context.isLoadTypeConverters()).isFalse();
+                main.stop();
+            }));
 
             runtime.run();
         } finally {
@@ -159,4 +118,23 @@ public class PropertiesTest {
             System.getProperties().remove("camel.context.loadTypeConverters");
         }
     }
+
+    @Test
+    public void testContextTrait() throws Exception {
+        Runtime runtime = new Runtime();
+        runtime.setProperties(System.getProperties());
+        runtime.setDuration(5);
+        runtime.getRegistry().bind("c1", (RuntimeTrait) context -> {
+            context.setMessageHistory(false);
+            context.setLoadTypeConverters(false);
+        });
+        runtime.addMainListener(new Application.ComponentPropertiesBinder());
+        runtime.addMainListener(afterStart((main, context) -> {
+            assertThat(context.isMessageHistory()).isFalse();
+            assertThat(context.isLoadTypeConverters()).isFalse();
+            main.stop();
+        }));
+
+        runtime.run();
+    }
 }
diff --git a/runtime/jvm/src/test/java/org/apache/camel/k/jvm/RoutesLoadersTest.java b/runtime/jvm/src/test/java/org/apache/camel/k/jvm/RoutesLoadersTest.java
index d12539c..cd32327 100644
--- a/runtime/jvm/src/test/java/org/apache/camel/k/jvm/RoutesLoadersTest.java
+++ b/runtime/jvm/src/test/java/org/apache/camel/k/jvm/RoutesLoadersTest.java
@@ -19,6 +19,8 @@ package org.apache.camel.k.jvm;
 import java.util.List;
 
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.k.RoutesLoader;
+import org.apache.camel.k.Source;
 import org.apache.camel.model.ProcessDefinition;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.model.SetBodyDefinition;
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RuntimeRegistry.java b/runtime/jvm/src/test/java/org/apache/camel/k/jvm/RuntimeTestSupport.java
similarity index 52%
rename from runtime/jvm/src/main/java/org/apache/camel/k/jvm/RuntimeRegistry.java
rename to runtime/jvm/src/test/java/org/apache/camel/k/jvm/RuntimeTestSupport.java
index 7e13a28..d72dddd 100644
--- a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RuntimeRegistry.java
+++ b/runtime/jvm/src/test/java/org/apache/camel/k/jvm/RuntimeTestSupport.java
@@ -16,32 +16,26 @@
  */
 package org.apache.camel.k.jvm;
 
-import java.util.Map;
+import org.apache.camel.CamelContext;
+import org.apache.camel.main.MainListener;
+import org.apache.camel.main.MainListenerSupport;
+import org.apache.camel.main.MainSupport;
+import org.apache.camel.util.function.ThrowingBiConsumer;
 
-import org.apache.camel.spi.Registry;
-
-public interface RuntimeRegistry extends Registry {
-
-    /**
-     *
-     */
-    void bind(String name, Object bean);
-
-    @SuppressWarnings("deprecation")
-    @Override
-    default public Object lookup(String name) {
-        return lookupByName(name);
-    }
-
-    @SuppressWarnings("deprecation")
-    @Override
-    default public <T> T lookup(String name, Class<T> type) {
-        return lookupByNameAndType(name, type);
+public final class RuntimeTestSupport {
+    private RuntimeTestSupport() {
     }
 
-    @SuppressWarnings("deprecation")
-    @Override
-    default public <T> Map<String, T> lookupByType(Class<T> type) {
-        return findByTypeWithName(type);
+    public static MainListener afterStart(ThrowingBiConsumer<MainSupport, CamelContext, Exception> consumer) {
+        return new MainListenerSupport() {
+            @Override
+            public void afterStart(MainSupport main) {
+                try {
+                    consumer.accept(main, main.getCamelContexts().get(0));
+                } catch (Exception e) {
+                    throw new RuntimeException(e);
+                }
+            }
+        };
     }
 }
diff --git a/runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/KotlinRoutesLoader.kt b/runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/KotlinRoutesLoader.kt
index fba85d6..7902539 100644
--- a/runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/KotlinRoutesLoader.kt
+++ b/runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/KotlinRoutesLoader.kt
@@ -17,6 +17,10 @@
 package org.apache.camel.k.kotlin
 
 import org.apache.camel.builder.RouteBuilder
+import org.apache.camel.k.Language
+import org.apache.camel.k.RoutesLoader
+import org.apache.camel.k.RuntimeRegistry
+import org.apache.camel.k.Source
 import org.apache.camel.k.jvm.*
 import org.apache.camel.k.kotlin.dsl.IntegrationConfiguration
 import org.slf4j.Logger
diff --git a/runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/ContextConfiguration.kt b/runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/ContextConfiguration.kt
index 618d1c7..9dbf77f 100644
--- a/runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/ContextConfiguration.kt
+++ b/runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/ContextConfiguration.kt
@@ -17,7 +17,7 @@
 package org.apache.camel.k.kotlin.dsl
 
 import org.apache.camel.CamelContext
-import org.apache.camel.k.jvm.RuntimeRegistry
+import org.apache.camel.k.RuntimeRegistry
 
 class ContextConfiguration (val registry: RuntimeRegistry, val context: CamelContext) {
 
diff --git a/runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/IntegrationConfiguration.kt b/runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/IntegrationConfiguration.kt
index 52d20f4..926ad3a 100644
--- a/runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/IntegrationConfiguration.kt
+++ b/runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/IntegrationConfiguration.kt
@@ -20,7 +20,7 @@ import org.apache.camel.Exchange
 import org.apache.camel.Predicate
 import org.apache.camel.Processor
 import org.apache.camel.builder.RouteBuilder
-import org.apache.camel.k.jvm.RuntimeRegistry
+import org.apache.camel.k.RuntimeRegistry
 import org.apache.camel.model.RouteDefinition
 
 abstract class IntegrationConfiguration(
diff --git a/runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/RegistryConfiguration.kt b/runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/RegistryConfiguration.kt
index f15f71a..b3abc95 100644
--- a/runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/RegistryConfiguration.kt
+++ b/runtime/kotlin/src/main/kotlin/org/apache/camel/k/kotlin/dsl/RegistryConfiguration.kt
@@ -16,7 +16,7 @@
  */
 package org.apache.camel.k.kotlin.dsl
 
-import org.apache.camel.k.jvm.RuntimeRegistry
+import org.apache.camel.k.RuntimeRegistry
 
 class RegistryConfiguration(val registry: RuntimeRegistry) {
     fun bind(name: String, value: Any) {
diff --git a/runtime/kotlin/src/main/resources/META-INF/services/org.apache.camel.k.jvm.RoutesLoader b/runtime/kotlin/src/main/resources/META-INF/services/org.apache.camel.k.RoutesLoader
similarity index 100%
rename from runtime/kotlin/src/main/resources/META-INF/services/org.apache.camel.k.jvm.RoutesLoader
rename to runtime/kotlin/src/main/resources/META-INF/services/org.apache.camel.k.RoutesLoader
diff --git a/runtime/kotlin/src/test/kotlin/org/apache/camel/k/kotlin/LoaderTest.kt b/runtime/kotlin/src/test/kotlin/org/apache/camel/k/kotlin/LoaderTest.kt
index 0783b27..c9fb931 100644
--- a/runtime/kotlin/src/test/kotlin/org/apache/camel/k/kotlin/LoaderTest.kt
+++ b/runtime/kotlin/src/test/kotlin/org/apache/camel/k/kotlin/LoaderTest.kt
@@ -18,7 +18,7 @@ package org.apache.camel.k.kotlin
 
 import org.apache.camel.k.jvm.RoutesLoaders
 import org.apache.camel.k.jvm.SimpleRuntimeRegistry
-import org.apache.camel.k.jvm.Source
+import org.apache.camel.k.Source
 import org.apache.camel.model.ProcessDefinition
 import org.apache.camel.model.ToDefinition
 import org.assertj.core.api.Assertions.assertThat
diff --git a/runtime/pom.xml b/runtime/pom.xml
index 7e421b9..460135c 100644
--- a/runtime/pom.xml
+++ b/runtime/pom.xml
@@ -23,7 +23,7 @@
     <artifactId>camel-k-runtime-parent</artifactId>
     <version>0.1.1-SNAPSHOT</version>
     <packaging>pom</packaging>
-    
+
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <maven.compiler.source>1.8</maven.compiler.source>
@@ -92,8 +92,9 @@
             </plugins>
         </pluginManagement>
     </build>
-    
+
     <modules>
+        <module>core</module>
         <module>jvm</module>
         <module>groovy</module>
         <module>kotlin</module>
diff --git a/runtime/spring-boot/src/main/java/org/apache/camel/k/spring/boot/Application.java b/runtime/spring-boot/src/main/java/org/apache/camel/k/spring/boot/Application.java
index 0fe24ff..eaf7c2b 100644
--- a/runtime/spring-boot/src/main/java/org/apache/camel/k/spring/boot/Application.java
+++ b/runtime/spring-boot/src/main/java/org/apache/camel/k/spring/boot/Application.java
@@ -22,12 +22,12 @@ import java.util.Set;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.k.jvm.Constants;
-import org.apache.camel.k.jvm.RoutesLoader;
+import org.apache.camel.k.RuntimeRegistry;
+import org.apache.camel.k.Constants;
+import org.apache.camel.k.RoutesLoader;
 import org.apache.camel.k.jvm.RoutesLoaders;
-import org.apache.camel.k.jvm.RuntimeRegistry;
 import org.apache.camel.k.jvm.RuntimeSupport;
-import org.apache.camel.k.jvm.Source;
+import org.apache.camel.k.Source;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.spring.boot.CamelContextConfiguration;
 import org.apache.camel.util.ObjectHelper;
@@ -85,6 +85,13 @@ public class Application {
                     throw new IllegalStateException("No valid routes found in " + Constants.ENV_CAMEL_K_ROUTES + " environment variable");
                 }
 
+                // Programmatically apply the camel context.
+                //
+                // This is useful to configure services such as the ClusterService,
+                // RouteController, etc
+                //
+                RuntimeSupport.configureContext( context);
+
                 try {
                     for (String route : routes.split(",")) {
                         final Source source = Source.create(route);