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

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

commit 06742da5303f465f18ef1e464faa66022adb7617
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Wed Feb 5 14:24:37 2020 +0100

    CAMEL-14461: camel-core - Make RuntimeCatalog optional and in its own module
---
 apache-camel/pom.xml                               |   4 +
 apache-camel/src/main/descriptors/common-bin.xml   |   1 +
 catalog/camel-catalog-lucene/pom.xml               |   7 -
 .../catalog/lucene/CamelCatalogLuceneTest.java     |   2 +-
 catalog/camel-catalog-maven/pom.xml                |  19 ---
 catalog/camel-catalog-provider-karaf/pom.xml       |   4 -
 catalog/camel-catalog/pom.xml                      | 133 +------------------
 .../org/apache/camel/catalog/CamelCatalog.java     |   5 +
 .../catalog/CamelCatalogJSonSchemaResolver.java    |   2 +
 .../apache/camel/catalog/DefaultCamelCatalog.java  |  10 +-
 .../org/apache/camel/catalog/CamelCatalogTest.java |   4 +
 .../java/org/apache/camel/maven/ValidateMojo.java  |   6 +-
 components/camel-file/pom.xml                      |   6 +
 .../file/GenericFileSendDynamicAware.java          |   5 +-
 components/camel-ftp/pom.xml                       |   2 +-
 components/camel-http-base/pom.xml                 |   6 +
 .../camel/http/base/HttpSendDynamicAware.java      |   5 +-
 .../rest/RestComponentVerifierExtension.java       |   3 +-
 .../org/apache/camel/ExtendedCamelContext.java     |  11 ++
 .../camel/runtimecatalog/RuntimeCamelCatalog.java  |  10 +-
 core/camel-base/pom.xml                            |   4 -
 .../camel/impl/engine/AbstractCamelContext.java    |  21 +++
 .../impl/engine/RuntimeCamelCatalogResolver.java   |  76 +++++++++++
 .../camel-core-catalog}/pom.xml                    |  84 ++++++------
 .../camel/catalog}/AbstractCamelCatalog.java       |   2 +-
 .../catalog}/CamelContextJSonSchemaResolver.java   |   2 +-
 .../org/apache/camel/catalog}/CatalogHelper.java   |   2 +-
 .../camel/catalog}/DefaultRuntimeCamelCatalog.java |  36 +++--
 .../main/java/org/apache/camel/catalog}/Pair.java  |   2 +-
 .../apache/camel/catalog}/SuggestionStrategy.java  |   2 +-
 .../camel/catalog}/TimePatternConverter.java       |   2 +-
 .../java/org/apache/camel/catalog}/URISupport.java |   2 +-
 .../camel/catalog}/UnsafeUriCharactersEncoder.java |   2 +-
 .../services/org/apache/camel/runtime-camelcatalog |  18 +++
 core/camel-core-engine/pom.xml                     |   8 --
 .../camel/impl/AbstractModelCamelContext.java      |   5 -
 .../org/apache/camel/impl/DefaultCamelContext.java |   7 +-
 .../core/xml/AbstractCamelContextFactoryBean.java  |   7 -
 core/camel-core/pom.xml                            |   7 +
 .../impl => catalog}/RuntimeCamelCatalogTest.java  |  15 +--
 .../camel/impl/MultipleLifecycleStrategyTest.java  |   2 +-
 .../impl/AbstractCamelCatalogTest.java             | 146 ---------------------
 .../mbean/ManagedRuntimeCamelCatalogMBean.java     |  35 -----
 .../management/JmxManagementLifecycleStrategy.java |   4 -
 .../mbean/ManagedRuntimeCamelCatalog.java          |  60 ---------
 .../management/ManagedNonManagedServiceTest.java   |   2 +-
 ...edProducerRouteAddRemoveRegisterAlwaysTest.java |   2 +-
 .../management/ManagedRouteAddRemoveTest.java      |   2 +-
 .../management/ManagedRuntimeCamelCatalogTest.java |  57 --------
 .../DefaultComponentVerifierExtension.java         |   3 +-
 core/pom.xml                                       |   1 +
 .../modules/ROOT/pages/camel-3x-upgrade-guide.adoc |  10 ++
 parent/pom.xml                                     |   5 +
 .../karaf/features/src/main/resources/features.xml |   5 +-
 54 files changed, 283 insertions(+), 600 deletions(-)

diff --git a/apache-camel/pom.xml b/apache-camel/pom.xml
index 8bf435d..909e6e3 100644
--- a/apache-camel/pom.xml
+++ b/apache-camel/pom.xml
@@ -86,6 +86,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
+            <artifactId>camel-core-catalog</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
             <artifactId>camel-cloud</artifactId>
         </dependency>
         <dependency>
diff --git a/apache-camel/src/main/descriptors/common-bin.xml 
b/apache-camel/src/main/descriptors/common-bin.xml
index 3422578..66a9d6d 100644
--- a/apache-camel/src/main/descriptors/common-bin.xml
+++ b/apache-camel/src/main/descriptors/common-bin.xml
@@ -37,6 +37,7 @@
         <include>org.apache.camel:camel-core-engine</include>
         <include>org.apache.camel:camel-core-osgi</include>
         <include>org.apache.camel:camel-core-xml</include>
+        <include>org.apache.camel:camel-core-catalog</include>
         <include>org.apache.camel:camel-cloud</include>
         <include>org.apache.camel:camel-xml-jaxp</include>
         <include>org.apache.camel:camel-main</include>
diff --git a/catalog/camel-catalog-lucene/pom.xml 
b/catalog/camel-catalog-lucene/pom.xml
index dac9ab6..107b4cf 100644
--- a/catalog/camel-catalog-lucene/pom.xml
+++ b/catalog/camel-catalog-lucene/pom.xml
@@ -34,13 +34,6 @@
     <properties>
         <firstVersion>2.17.0</firstVersion>
         <label>tooling</label>
-
-        <camel.osgi.import.additional>
-            org.apache.lucene.*;version="${lucene-version-range}"
-        </camel.osgi.import.additional>
-        <camel.osgi.export.pkg>
-            org.apache.camel.catalog.lucene
-        </camel.osgi.export.pkg>
     </properties>
 
     <dependencies>
diff --git 
a/catalog/camel-catalog-lucene/src/test/java/org/apache/camel/catalog/lucene/CamelCatalogLuceneTest.java
 
b/catalog/camel-catalog-lucene/src/test/java/org/apache/camel/catalog/lucene/CamelCatalogLuceneTest.java
index 2b5681d..cea13ae 100644
--- 
a/catalog/camel-catalog-lucene/src/test/java/org/apache/camel/catalog/lucene/CamelCatalogLuceneTest.java
+++ 
b/catalog/camel-catalog-lucene/src/test/java/org/apache/camel/catalog/lucene/CamelCatalogLuceneTest.java
@@ -18,7 +18,7 @@ package org.apache.camel.catalog.lucene;
 
 import org.apache.camel.catalog.CamelCatalog;
 import org.apache.camel.catalog.DefaultCamelCatalog;
-import org.apache.camel.catalog.EndpointValidationResult;
+import org.apache.camel.runtimecatalog.EndpointValidationResult;
 import org.junit.Before;
 import org.junit.Test;
 
diff --git a/catalog/camel-catalog-maven/pom.xml 
b/catalog/camel-catalog-maven/pom.xml
index 8fd4588..8d115fc 100644
--- a/catalog/camel-catalog-maven/pom.xml
+++ b/catalog/camel-catalog-maven/pom.xml
@@ -34,13 +34,6 @@
     <properties>
         <firstVersion>2.18.0</firstVersion>
         <label>tooling</label>
-
-        <camel.osgi.import.additional>
-            org.apache.commons.httpclient.*;version="[3.1,4.0)"
-        </camel.osgi.import.additional>
-        <camel.osgi.export.pkg>
-            org.apache.camel.catalog.maven
-        </camel.osgi.export.pkg>
     </properties>
 
     <dependencies>
@@ -100,18 +93,6 @@
             <scope>test</scope>
         </dependency>
 
-
     </dependencies>
 
-    <build>
-        <plugins>
-
-            <plugin>
-                <groupId>org.apache.camel</groupId>
-                <artifactId>camel-bundle-plugin</artifactId>
-            </plugin>
-        </plugins>
-
-    </build>
-
 </project>
diff --git a/catalog/camel-catalog-provider-karaf/pom.xml 
b/catalog/camel-catalog-provider-karaf/pom.xml
index b12bc2f..14f73bd 100644
--- a/catalog/camel-catalog-provider-karaf/pom.xml
+++ b/catalog/camel-catalog-provider-karaf/pom.xml
@@ -34,10 +34,6 @@
     <properties>
         <firstVersion>2.18.1</firstVersion>
         <label>tooling</label>
-
-        <camel.osgi.export.pkg>
-            org.apache.camel.catalog.karaf
-        </camel.osgi.export.pkg>
     </properties>
 
     <dependencies>
diff --git a/catalog/camel-catalog/pom.xml b/catalog/camel-catalog/pom.xml
index 16fdd8d..694fcfd 100644
--- a/catalog/camel-catalog/pom.xml
+++ b/catalog/camel-catalog/pom.xml
@@ -32,7 +32,6 @@
     <description>Camel Catalog</description>
 
     <properties>
-        
<camel.osgi.import.pkg>!org.apache.camel.util.json,*</camel.osgi.import.pkg>
         <!-- use by camel-catalog -->
         <firstVersion>2.15.0</firstVersion>
         <label>tooling</label>
@@ -41,7 +40,11 @@
     <dependencies>
 
         <!-- required dependencies by camel-catalog -->
-        <!-- we shade our patched ordered json-simple parser -->
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-core-catalog</artifactId>
+            <version>${project.version}</version>
+        </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-util-json</artifactId>
@@ -108,132 +111,6 @@
 
     <build>
         <plugins>
-
-            <!-- copy catalog source code from camel-core -->
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-resources-plugin</artifactId>
-                <version>${maven-resources-plugin-version}</version>
-                <executions>
-                    <execution>
-                        <id>copy-resources</id>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>copy-resources</goal>
-                        </goals>
-                        <configuration>
-                            
<outputDirectory>target/generated-sources/java/org/apache/camel/catalog</outputDirectory>
-                            <overwrite>true</overwrite>
-                            <resources>
-                                <resource>
-                                    
<directory>../../core/camel-api/src/main/java/org/apache/camel/runtimecatalog
-                                    </directory>
-                                    <!-- the following files are maintained in 
camel-api and not here, so they are copied over -->
-                                    <includes>
-                                        
<include>ConfigurationPropertiesValidationResult.java</include>
-                                        
<include>EndpointValidationResult.java</include>
-                                        
<include>JSonSchemaResolver.java</include>
-                                        
<include>LanguageValidationResult.java</include>
-                                        
<include>PropertiesValidationResult.java</include>
-                                    </includes>
-                                </resource>
-                                <resource>
-                                    <directory>
-                                        
../../core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl
-                                    </directory>
-                                    <!-- the following files are maintained in 
camel-base and not here, so they are copied over -->
-                                    <includes>
-                                        
<include>AbstractCamelCatalog.java</include>
-                                        
<include>CamelContextJsonSchemaResolver.java</include>
-                                        <include>CatalogHelper.java</include>
-                                        <include>Pair.java</include>
-                                        
<include>SuggestionStrategy.java</include>
-                                        
<include>TimePatternConverter.java</include>
-                                        
<include>UnsafeUriCharactersEncoder.java</include>
-                                        <include>URISupport.java</include>
-                                    </includes>
-                                </resource>
-                            </resources>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <!-- rename runtimecatalog to catalog which is the package name we 
use here -->
-            <plugin>
-                <groupId>com.google.code.maven-replacer-plugin</groupId>
-                <artifactId>replacer</artifactId>
-                <version>1.5.3</version>
-                <executions>
-                    <execution>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>replace</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <configuration>
-                    <includes>
-                        
<include>${basedir}/target/generated-sources/java/org/apache/camel/catalog/**.java</include>
-                    </includes>
-                    <replacements>
-                        <replacement>
-                            <token>org.apache.camel.runtimecatalog.impl</token>
-                            <value>org.apache.camel.catalog</value>
-                        </replacement>
-                        <replacement>
-                            <token>org.apache.camel.runtimecatalog</token>
-                            <value>org.apache.camel.catalog</value>
-                        </replacement>
-                        <replacement>
-                            <token>org.apache.camel.support</token>
-                            <value>org.apache.camel.catalog</value>
-                        </replacement>
-                    </replacements>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>build-helper-maven-plugin</artifactId>
-                <version>1.7</version>
-                <executions>
-                    <execution>
-                        <id>add-source</id>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>add-source</goal>
-                        </goals>
-                        <configuration>
-                            <sources>
-                                
<source>${basedir}/target/generated-sources/java</source>
-                            </sources>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-
-            <!-- shade caffeine cache for faster Camel and spi-annotations as 
needed by everybody -->
-            <!-- shade json-simple for parsing Camel component JSon schema 
files -->
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-shade-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>shade</goal>
-                        </goals>
-                        <configuration>
-                            <artifactSet>
-                                <includes>
-                                    
<include>org.apache.camel:camel-util-json</include>
-                                    
<include>org.apache.camel:camel-tooling-model</include>
-                                </includes>
-                            </artifactSet>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-
             <!-- generate and include all components in the catalog -->
             <plugin>
                 <groupId>org.apache.camel</groupId>
diff --git 
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java
 
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java
index bbba0f8..5fabca8 100644
--- 
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java
+++ 
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java
@@ -23,6 +23,11 @@ import java.util.Set;
 
 import javax.management.MXBean;
 
+import org.apache.camel.runtimecatalog.ConfigurationPropertiesValidationResult;
+import org.apache.camel.runtimecatalog.EndpointValidationResult;
+import org.apache.camel.runtimecatalog.JSonSchemaResolver;
+import org.apache.camel.runtimecatalog.LanguageValidationResult;
+
 /**
  * Catalog of components, data formats, models (EIPs), languages, and more 
from this Apache Camel release.
  */
diff --git 
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogJSonSchemaResolver.java
 
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogJSonSchemaResolver.java
index 53b5158..96d4b78 100644
--- 
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogJSonSchemaResolver.java
+++ 
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogJSonSchemaResolver.java
@@ -20,6 +20,8 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.Map;
 
+import org.apache.camel.runtimecatalog.JSonSchemaResolver;
+
 /**
  * {@link JSonSchemaResolver} used by {@link CamelCatalog} that is able to 
load all the resources that the complete camel-catalog JAR provides.
  */
diff --git 
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java
 
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java
index 8ffefb9..f4c0043 100644
--- 
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java
+++ 
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java
@@ -16,6 +16,10 @@
  */
 package org.apache.camel.catalog;
 
+import javax.xml.XMLConstants;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathFactory;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -35,13 +39,9 @@ import java.util.regex.PatternSyntaxException;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-import javax.xml.XMLConstants;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.xpath.XPathConstants;
-import javax.xml.xpath.XPathFactory;
-
 import org.w3c.dom.Document;
 
+import org.apache.camel.runtimecatalog.JSonSchemaResolver;
 import org.apache.camel.tooling.model.BaseModel;
 import org.apache.camel.tooling.model.ComponentModel;
 import org.apache.camel.tooling.model.DataFormatModel;
diff --git 
a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
 
b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
index 3a0799e..b47a82e 100644
--- 
a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
+++ 
b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
@@ -24,6 +24,10 @@ import java.util.Map;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.camel.runtimecatalog.ConfigurationPropertiesValidationResult;
+import org.apache.camel.runtimecatalog.EndpointValidationResult;
+import org.apache.camel.runtimecatalog.LanguageValidationResult;
+
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.slf4j.Logger;
diff --git 
a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/ValidateMojo.java
 
b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/ValidateMojo.java
index ca9c324..3b0a8e3 100644
--- 
a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/ValidateMojo.java
+++ 
b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/ValidateMojo.java
@@ -29,10 +29,7 @@ import java.util.Set;
 import java.util.stream.Collectors;
 
 import org.apache.camel.catalog.CamelCatalog;
-import org.apache.camel.catalog.ConfigurationPropertiesValidationResult;
 import org.apache.camel.catalog.DefaultCamelCatalog;
-import org.apache.camel.catalog.EndpointValidationResult;
-import org.apache.camel.catalog.LanguageValidationResult;
 import org.apache.camel.catalog.lucene.LuceneSuggestionStrategy;
 import org.apache.camel.catalog.maven.MavenVersionManager;
 import org.apache.camel.parser.RouteBuilderParser;
@@ -40,6 +37,9 @@ import org.apache.camel.parser.XmlRouteParser;
 import org.apache.camel.parser.model.CamelEndpointDetails;
 import org.apache.camel.parser.model.CamelRouteDetails;
 import org.apache.camel.parser.model.CamelSimpleExpressionDetails;
+import org.apache.camel.runtimecatalog.ConfigurationPropertiesValidationResult;
+import org.apache.camel.runtimecatalog.EndpointValidationResult;
+import org.apache.camel.runtimecatalog.LanguageValidationResult;
 import org.apache.camel.support.PatternHelper;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.OrderedProperties;
diff --git a/components/camel-file/pom.xml b/components/camel-file/pom.xml
index 9598711..e3c0cdb 100644
--- a/components/camel-file/pom.xml
+++ b/components/camel-file/pom.xml
@@ -39,5 +39,11 @@
             <artifactId>camel-support</artifactId>
         </dependency>
 
+        <!-- TODO: needed for dynamic to, until we have a better solution -->
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-core-catalog</artifactId>
+        </dependency>
+
     </dependencies>
 </project>
diff --git 
a/components/camel-file/src/main/java/org/apache/camel/component/file/GenericFileSendDynamicAware.java
 
b/components/camel-file/src/main/java/org/apache/camel/component/file/GenericFileSendDynamicAware.java
index 6ba90bd..97ac5c8 100644
--- 
a/components/camel-file/src/main/java/org/apache/camel/component/file/GenericFileSendDynamicAware.java
+++ 
b/components/camel-file/src/main/java/org/apache/camel/component/file/GenericFileSendDynamicAware.java
@@ -20,6 +20,7 @@ import java.util.LinkedHashMap;
 import java.util.Map;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.SendDynamicAware;
@@ -41,7 +42,7 @@ public abstract class GenericFileSendDynamicAware implements 
SendDynamicAware {
 
     @Override
     public DynamicAwareEntry prepare(Exchange exchange, String uri, String 
originalUri) throws Exception {
-        RuntimeCamelCatalog catalog = 
exchange.getContext().getExtension(RuntimeCamelCatalog.class);
+        RuntimeCamelCatalog catalog = 
exchange.getContext().adapt(ExtendedCamelContext.class).getRuntimeCamelCatalog();
         Map<String, String> properties = catalog.endpointProperties(uri);
         Map<String, String> lenient = catalog.endpointLenientProperties(uri);
         return new DynamicAwareEntry(uri, originalUri, properties, lenient);
@@ -105,7 +106,7 @@ public abstract class GenericFileSendDynamicAware 
implements SendDynamicAware {
                 }
             }
 
-            RuntimeCamelCatalog catalog = 
exchange.getContext().getExtension(RuntimeCamelCatalog.class);
+            RuntimeCamelCatalog catalog = 
exchange.getContext().adapt(ExtendedCamelContext.class).getRuntimeCamelCatalog();
             return catalog.asEndpointUri(scheme, params, false);
         } else {
             return entry.getUri();
diff --git a/components/camel-ftp/pom.xml b/components/camel-ftp/pom.xml
index a6f82fa..27990b3 100644
--- a/components/camel-ftp/pom.xml
+++ b/components/camel-ftp/pom.xml
@@ -33,7 +33,7 @@
 
     <properties>
         <camel.osgi.import.before.defaults>
-            com.jcraft.jsch.*;version="[0.1.40,0.2)"
+            com.jcraft.jsch.*;version="[0.1.5,0.2)"
         </camel.osgi.import.before.defaults>
     </properties>
 
diff --git a/components/camel-http-base/pom.xml 
b/components/camel-http-base/pom.xml
index 5fc3070..9629e92 100644
--- a/components/camel-http-base/pom.xml
+++ b/components/camel-http-base/pom.xml
@@ -39,5 +39,11 @@
             <artifactId>camel-support</artifactId>
         </dependency>
 
+        <!-- TODO: needed for dynamic to, until we have a better solution -->
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-core-catalog</artifactId>
+        </dependency>
+
     </dependencies>
 </project>
diff --git 
a/components/camel-http-base/src/main/java/org/apache/camel/http/base/HttpSendDynamicAware.java
 
b/components/camel-http-base/src/main/java/org/apache/camel/http/base/HttpSendDynamicAware.java
index 0f9e1ce..24b1ed8 100644
--- 
a/components/camel-http-base/src/main/java/org/apache/camel/http/base/HttpSendDynamicAware.java
+++ 
b/components/camel-http-base/src/main/java/org/apache/camel/http/base/HttpSendDynamicAware.java
@@ -22,6 +22,7 @@ import java.util.LinkedHashMap;
 import java.util.Map;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.SendDynamicAware;
@@ -53,7 +54,7 @@ public class HttpSendDynamicAware implements SendDynamicAware 
{
 
     @Override
     public DynamicAwareEntry prepare(Exchange exchange, String uri, String 
originalUri) throws Exception {
-        RuntimeCamelCatalog catalog = 
exchange.getContext().getExtension(RuntimeCamelCatalog.class);
+        RuntimeCamelCatalog catalog = 
exchange.getContext().adapt(ExtendedCamelContext.class).getRuntimeCamelCatalog();
         Map<String, String> properties = catalog.endpointProperties(uri);
         Map<String, String> lenient = catalog.endpointLenientProperties(uri);
         return new DynamicAwareEntry(uri, originalUri, properties, lenient);
@@ -82,7 +83,7 @@ public class HttpSendDynamicAware implements SendDynamicAware 
{
                     params.remove("path");
                 }
             }
-            RuntimeCamelCatalog catalog = 
exchange.getContext().getExtension(RuntimeCamelCatalog.class);
+            RuntimeCamelCatalog catalog = 
exchange.getContext().adapt(ExtendedCamelContext.class).getRuntimeCamelCatalog();
             return catalog.asEndpointUri(scheme, params, false);
         } else {
             // no need for optimisation
diff --git 
a/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java
 
b/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java
index a18848b..8c4af95 100644
--- 
a/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java
+++ 
b/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java
@@ -22,6 +22,7 @@ import java.util.Optional;
 import java.util.stream.Stream;
 
 import org.apache.camel.Component;
+import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.component.extension.ComponentVerifierExtension;
 import org.apache.camel.component.extension.verifier.CatalogVerifierCustomizer;
 import 
org.apache.camel.component.extension.verifier.DefaultComponentVerifierExtension;
@@ -92,7 +93,7 @@ public class RestComponentVerifierExtension extends 
DefaultComponentVerifierExte
 
                 if (extension.isPresent()) {
                     final ComponentVerifierExtension verifier = 
extension.get();
-                    final RuntimeCamelCatalog catalog = 
getCamelContext().getExtension(RuntimeCamelCatalog.class);
+                    final RuntimeCamelCatalog catalog = 
getCamelContext().adapt(ExtendedCamelContext.class).getRuntimeCamelCatalog();
                     final String json = catalog.componentJSonSchema("rest");
                     final ComponentModel model = 
JsonMapper.generateComponentModel(json);
 
diff --git 
a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java 
b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
index dfa4027..8e00093 100644
--- a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
@@ -23,6 +23,7 @@ import java.util.Set;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.ScheduledExecutorService;
 
+import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.AnnotationBasedProcessorFactory;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.BeanIntrospection;
@@ -414,4 +415,14 @@ public interface ExtendedCamelContext extends CamelContext 
{
      */
     ModelToXMLDumper getModelToXMLDumper();
 
+    /**
+     * Gets the {@link RuntimeCamelCatalog} if available on the classpath.
+     */
+    RuntimeCamelCatalog getRuntimeCamelCatalog();
+
+    /**
+     * Sets the {@link RuntimeCamelCatalog} to use.
+     */
+    void setRuntimeCamelCatalog(RuntimeCamelCatalog runtimeCamelCatalog);
+
 }
diff --git 
a/core/camel-api/src/main/java/org/apache/camel/runtimecatalog/RuntimeCamelCatalog.java
 
b/core/camel-api/src/main/java/org/apache/camel/runtimecatalog/RuntimeCamelCatalog.java
index ccd0675..7a35677 100644
--- 
a/core/camel-api/src/main/java/org/apache/camel/runtimecatalog/RuntimeCamelCatalog.java
+++ 
b/core/camel-api/src/main/java/org/apache/camel/runtimecatalog/RuntimeCamelCatalog.java
@@ -16,16 +16,18 @@
  */
 package org.apache.camel.runtimecatalog;
 
-import java.io.InputStream;
 import java.net.URISyntaxException;
 import java.util.Map;
 
+import org.apache.camel.CamelContextAware;
 import org.apache.camel.StaticService;
 
 /**
  * Runtime based CamelCatalog which are included in camel-core that can 
provided limit CamelCatalog capabilities
  */
-public interface RuntimeCamelCatalog extends StaticService {
+// TODO: Remove not needed API and rename to a better name/package
+@Deprecated
+public interface RuntimeCamelCatalog extends StaticService, CamelContextAware {
 
     // configuration
 
@@ -79,6 +81,7 @@ public interface RuntimeCamelCatalog extends StaticService {
      * @param uri  the endpoint uri
      * @return properties as key value pairs of each endpoint option
      */
+    // TODO: needed by SendDynamicAware
     Map<String, String> endpointProperties(String uri) throws 
URISyntaxException;
 
     /**
@@ -89,6 +92,7 @@ public interface RuntimeCamelCatalog extends StaticService {
      * @param uri  the endpoint uri
      * @return properties as key value pairs of each lenient properties
      */
+    // TODO: needed by SendDynamicAware
     Map<String, String> endpointLenientProperties(String uri) throws 
URISyntaxException;
 
     /**
@@ -106,6 +110,7 @@ public interface RuntimeCamelCatalog extends StaticService {
      * @param properties  the endpoint properties
      * @return validation result
      */
+    // TODO: needed for extension verifier (make SPI)
     EndpointValidationResult validateProperties(String scheme, Map<String, 
String> properties);
 
     /**
@@ -195,6 +200,7 @@ public interface RuntimeCamelCatalog extends StaticService {
      * @return the constructed endpoint uri
      * @throws java.net.URISyntaxException is thrown if there is encoding error
      */
+    // TODO: needed by SendDynamicAware
     String asEndpointUri(String scheme, Map<String, String> properties, 
boolean encode) throws URISyntaxException;
 
     /**
diff --git a/core/camel-base/pom.xml b/core/camel-base/pom.xml
index 6260fc6..f67876d 100644
--- a/core/camel-base/pom.xml
+++ b/core/camel-base/pom.xml
@@ -68,10 +68,6 @@
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-util-json</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-tooling-model</artifactId>
-        </dependency>
 
         <!-- required logging api dependency by camel-base -->
         <dependency>
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
 
b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index dc801d9..589ee23 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -77,6 +77,7 @@ import org.apache.camel.TypeConverter;
 import org.apache.camel.VetoCamelContextStartException;
 import org.apache.camel.impl.transformer.TransformerKey;
 import org.apache.camel.impl.validator.ValidatorKey;
+import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.AnnotationBasedProcessorFactory;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.BeanIntrospection;
@@ -247,6 +248,7 @@ public abstract class AbstractCamelContext extends 
ServiceSupport implements Ext
     private volatile BeanProcessorFactory beanProcessorFactory;
     private volatile XMLRoutesDefinitionLoader xmlRoutesDefinitionLoader;
     private volatile ModelToXMLDumper modelToXMLDumper;
+    private volatile RuntimeCamelCatalog runtimeCamelCatalog;
     private volatile ClassResolver classResolver;
     private volatile PackageScanClassResolver packageScanClassResolver;
     private volatile PackageScanResourceResolver packageScanResourceResolver;
@@ -4162,6 +4164,23 @@ public abstract class AbstractCamelContext extends 
ServiceSupport implements Ext
     }
 
     @Override
+    public RuntimeCamelCatalog getRuntimeCamelCatalog() {
+        if (runtimeCamelCatalog == null) {
+            synchronized (lock) {
+                if (runtimeCamelCatalog == null) {
+                    setRuntimeCamelCatalog(createRuntimeCamelCatalog());
+                }
+            }
+        }
+        return runtimeCamelCatalog;
+    }
+
+    @Override
+    public void setRuntimeCamelCatalog(RuntimeCamelCatalog 
runtimeCamelCatalog) {
+        this.runtimeCamelCatalog = runtimeCamelCatalog;
+    }
+
+    @Override
     public ReactiveExecutor getReactiveExecutor() {
         if (reactiveExecutor == null) {
             synchronized (lock) {
@@ -4324,6 +4343,8 @@ public abstract class AbstractCamelContext extends 
ServiceSupport implements Ext
 
     protected abstract ModelToXMLDumper createModelToXMLDumper();
 
+    protected abstract RuntimeCamelCatalog createRuntimeCamelCatalog();
+
     protected abstract Tracer createTracer();
 
     protected abstract LanguageResolver createLanguageResolver();
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/impl/engine/RuntimeCamelCatalogResolver.java
 
b/core/camel-base/src/main/java/org/apache/camel/impl/engine/RuntimeCamelCatalogResolver.java
new file mode 100644
index 0000000..c7f2842
--- /dev/null
+++ 
b/core/camel-base/src/main/java/org/apache/camel/impl/engine/RuntimeCamelCatalogResolver.java
@@ -0,0 +1,76 @@
+/*
+ * 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.impl.engine;
+
+import java.io.IOException;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ExtendedCamelContext;
+import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
+import org.apache.camel.spi.FactoryFinder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Factory to create the {@link 
org.apache.camel.runtimecatalog.RuntimeCamelCatalog} implementation to be used.
+ *
+ * @see RuntimeCamelCatalog
+ */
+public class RuntimeCamelCatalogResolver {
+
+    public static final String RESOURCE_PATH = 
"META-INF/services/org/apache/camel/";
+
+    private static final Logger LOG = 
LoggerFactory.getLogger(RuntimeCamelCatalogResolver.class);
+
+    private FactoryFinder factoryFinder;
+
+    public RuntimeCamelCatalog resolve(CamelContext context) {
+        // use factory finder to find a custom implementations
+        Class<?> type = null;
+        try {
+            type = findFactory("runtime-camelcatalog", context);
+        } catch (Exception e) {
+            // ignore
+        }
+
+        if (type != null) {
+            if (LOG.isDebugEnabled()) {
+                LOG.debug("Found RuntimeCamelCatalog: {} via: {}{}", 
type.getName(), factoryFinder.getResourcePath(), "runtime-camelcatalog");
+            }
+            if (RuntimeCamelCatalog.class.isAssignableFrom(type)) {
+                RuntimeCamelCatalog answer = (RuntimeCamelCatalog) 
context.getInjector().newInstance(type, false);
+                answer.setCamelContext(context);
+                LOG.info("Detected and using RuntimeCamelCatalog: {}", answer);
+                return answer;
+            } else {
+                throw new IllegalArgumentException("Type is not a 
RuntimeCamelCatalog implementation. Found: " + type.getName());
+            }
+        }
+
+        // fallback to default
+        throw new IllegalArgumentException("Cannot find RuntimeCamelCatalog on 
classpath. Add camel-core-catalog to classpath.");
+    }
+
+    private Class<?> findFactory(String name, CamelContext context) throws 
IOException {
+        if (factoryFinder == null) {
+            factoryFinder = 
context.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
+        }
+        return factoryFinder.findClass(name).orElse(null);
+    }
+
+}
+
diff --git a/catalog/camel-catalog-maven/pom.xml 
b/core/camel-core-catalog/pom.xml
similarity index 58%
copy from catalog/camel-catalog-maven/pom.xml
copy to core/camel-core-catalog/pom.xml
index 8fd4588..204d72f 100644
--- a/catalog/camel-catalog-maven/pom.xml
+++ b/core/camel-core-catalog/pom.xml
@@ -17,57 +17,37 @@
     limitations under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
         <groupId>org.apache.camel</groupId>
-        <artifactId>catalog</artifactId>
+        <artifactId>core</artifactId>
         <version>3.1.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
     </parent>
 
-    <artifactId>camel-catalog-maven</artifactId>
+    <artifactId>camel-core-catalog</artifactId>
     <packaging>jar</packaging>
-    <name>Camel :: Catalog :: Maven</name>
-    <description>Camel Catalog Maven</description>
 
-    <properties>
-        <firstVersion>2.18.0</firstVersion>
-        <label>tooling</label>
-
-        <camel.osgi.import.additional>
-            org.apache.commons.httpclient.*;version="[3.1,4.0)"
-        </camel.osgi.import.additional>
-        <camel.osgi.export.pkg>
-            org.apache.camel.catalog.maven
-        </camel.osgi.export.pkg>
-    </properties>
+    <name>Camel :: Core Catalog</name>
+    <description>The Camel Core Catalog</description>
 
     <dependencies>
 
+        <!-- required dependencies by camel-core-catalog -->
         <dependency>
             <groupId>org.apache.camel</groupId>
-            <artifactId>camel-catalog</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <!-- use groovy grape to download JARs as that is easy to use -->
-        <dependency>
-            <groupId>org.codehaus.groovy</groupId>
-            <artifactId>groovy</artifactId>
-            <version>${groovy-version}</version>
+            <artifactId>camel-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.ivy</groupId>
-            <artifactId>ivy</artifactId>
-            <version>${ivy-version}</version>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-tooling-model</artifactId>
         </dependency>
 
-        <!-- use http client 3.x for downloading as its better than the JDK 
client -->
         <dependency>
-            <groupId>commons-httpclient</groupId>
-            <artifactId>commons-httpclient</artifactId>
-            <version>${httpclient-version}</version>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
         </dependency>
 
         <!-- testing -->
@@ -75,11 +55,33 @@
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.hamcrest</groupId>
+                    <artifactId>hamcrest-core</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-catalog-provider-karaf</artifactId>
-            <version>${project.version}</version>
+            <groupId>org.hamcrest</groupId>
+            <artifactId>hamcrest</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.awaitility</groupId>
+            <artifactId>awaitility</artifactId>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.hamcrest</groupId>
+                    <artifactId>hamcrest-core</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+            <version>${assertj-version}</version>
             <scope>test</scope>
         </dependency>
 
@@ -100,18 +102,6 @@
             <scope>test</scope>
         </dependency>
 
-
     </dependencies>
 
-    <build>
-        <plugins>
-
-            <plugin>
-                <groupId>org.apache.camel</groupId>
-                <artifactId>camel-bundle-plugin</artifactId>
-            </plugin>
-        </plugins>
-
-    </build>
-
 </project>
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/AbstractCamelCatalog.java
 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/AbstractCamelCatalog.java
similarity index 99%
rename from 
core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/AbstractCamelCatalog.java
rename to 
core/camel-core-catalog/src/main/java/org/apache/camel/catalog/AbstractCamelCatalog.java
index 48cd1d5..d2e4f79 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/AbstractCamelCatalog.java
+++ 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/AbstractCamelCatalog.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.runtimecatalog.impl;
+package org.apache.camel.catalog;
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/CamelContextJSonSchemaResolver.java
 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/CamelContextJSonSchemaResolver.java
similarity index 98%
rename from 
core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/CamelContextJSonSchemaResolver.java
rename to 
core/camel-core-catalog/src/main/java/org/apache/camel/catalog/CamelContextJSonSchemaResolver.java
index c24b89d..6dd2fd2 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/CamelContextJSonSchemaResolver.java
+++ 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/CamelContextJSonSchemaResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.runtimecatalog.impl;
+package org.apache.camel.catalog;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/CatalogHelper.java
 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/CatalogHelper.java
similarity index 99%
rename from 
core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/CatalogHelper.java
rename to 
core/camel-core-catalog/src/main/java/org/apache/camel/catalog/CatalogHelper.java
index f8a5d4f..134b254 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/CatalogHelper.java
+++ 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/CatalogHelper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.runtimecatalog.impl;
+package org.apache.camel.catalog;
 
 import java.io.BufferedReader;
 import java.io.IOException;
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/DefaultRuntimeCamelCatalog.java
 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/DefaultRuntimeCamelCatalog.java
similarity index 85%
rename from 
core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/DefaultRuntimeCamelCatalog.java
rename to 
core/camel-core-catalog/src/main/java/org/apache/camel/catalog/DefaultRuntimeCamelCatalog.java
index d0c3fb5..fd86922 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/DefaultRuntimeCamelCatalog.java
+++ 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/DefaultRuntimeCamelCatalog.java
@@ -14,13 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.runtimecatalog.impl;
+package org.apache.camel.catalog;
 
 import java.util.HashMap;
 import java.util.Map;
 import java.util.function.Function;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.CamelContextAware;
 import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.tooling.model.ComponentModel;
 import org.apache.camel.tooling.model.DataFormatModel;
@@ -32,30 +33,23 @@ import org.apache.camel.tooling.model.OtherModel;
 /**
  * Default {@link RuntimeCamelCatalog}.
  */
+@Deprecated
 public class DefaultRuntimeCamelCatalog extends AbstractCamelCatalog 
implements RuntimeCamelCatalog {
 
+    private CamelContext camelContext;
     // cache of operation -> result
     private final Map<String, Object> cache = new HashMap<>();
-    private boolean caching;
-
-    /**
-     * Creates the {@link RuntimeCamelCatalog} without caching enabled.
-     *
-     * @param camelContext  the camel context
-     */
-    public DefaultRuntimeCamelCatalog(CamelContext camelContext) {
-        this(camelContext, false);
-    }
-
-    /**
-     * Creates the {@link RuntimeCamelCatalog}
-     *
-     * @param camelContext  the camel context
-     * @param caching  whether to use cache
-     */
-    public DefaultRuntimeCamelCatalog(CamelContext camelContext, boolean 
caching) {
-        this.caching = caching;
-        setJSonSchemaResolver(new 
CamelContextJSonSchemaResolver(camelContext));
+    private boolean caching = true;
+
+    @Override
+    public CamelContext getCamelContext() {
+        return camelContext;
+    }
+
+    @Override
+    public void setCamelContext(CamelContext camelContext) {
+        this.camelContext = camelContext;
+        this.setJSonSchemaResolver(new 
CamelContextJSonSchemaResolver(camelContext));
     }
 
     @Override
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/Pair.java 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/Pair.java
similarity index 97%
rename from 
core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/Pair.java
rename to 
core/camel-core-catalog/src/main/java/org/apache/camel/catalog/Pair.java
index 2cd0921..2d224a1 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/Pair.java
+++ b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/Pair.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.runtimecatalog.impl;
+package org.apache.camel.catalog;
 
 import java.util.Objects;
 
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/SuggestionStrategy.java
 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/SuggestionStrategy.java
similarity index 96%
rename from 
core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/SuggestionStrategy.java
rename to 
core/camel-core-catalog/src/main/java/org/apache/camel/catalog/SuggestionStrategy.java
index 8320e33..f6f0541 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/SuggestionStrategy.java
+++ 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/SuggestionStrategy.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.runtimecatalog.impl;
+package org.apache.camel.catalog;
 
 import java.util.Set;
 
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/TimePatternConverter.java
 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/TimePatternConverter.java
similarity index 99%
rename from 
core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/TimePatternConverter.java
rename to 
core/camel-core-catalog/src/main/java/org/apache/camel/catalog/TimePatternConverter.java
index cf25b78..cfc5027 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/TimePatternConverter.java
+++ 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/TimePatternConverter.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.runtimecatalog.impl;
+package org.apache.camel.catalog;
 
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/URISupport.java
 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/URISupport.java
similarity index 99%
rename from 
core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/URISupport.java
rename to 
core/camel-core-catalog/src/main/java/org/apache/camel/catalog/URISupport.java
index bda5d9e..1610c4e 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/URISupport.java
+++ 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/URISupport.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.runtimecatalog.impl;
+package org.apache.camel.catalog;
 
 import java.io.UnsupportedEncodingException;
 import java.net.URI;
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/UnsafeUriCharactersEncoder.java
 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/UnsafeUriCharactersEncoder.java
similarity index 99%
rename from 
core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/UnsafeUriCharactersEncoder.java
rename to 
core/camel-core-catalog/src/main/java/org/apache/camel/catalog/UnsafeUriCharactersEncoder.java
index 16b547d..8b5e06b 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/runtimecatalog/impl/UnsafeUriCharactersEncoder.java
+++ 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/UnsafeUriCharactersEncoder.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.runtimecatalog.impl;
+package org.apache.camel.catalog;
 
 import java.util.ArrayList;
 import java.util.BitSet;
diff --git 
a/core/camel-core-catalog/src/main/resources/META-INF/services/org/apache/camel/runtime-camelcatalog
 
b/core/camel-core-catalog/src/main/resources/META-INF/services/org/apache/camel/runtime-camelcatalog
new file mode 100644
index 0000000..4286060
--- /dev/null
+++ 
b/core/camel-core-catalog/src/main/resources/META-INF/services/org/apache/camel/runtime-camelcatalog
@@ -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.catalog.DefaultRuntimeCamelCatalog
diff --git a/core/camel-core-engine/pom.xml b/core/camel-core-engine/pom.xml
index 6ac7415..af10890 100644
--- a/core/camel-core-engine/pom.xml
+++ b/core/camel-core-engine/pom.xml
@@ -80,14 +80,6 @@
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-util</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-util-json</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-tooling-model</artifactId>
-        </dependency>
 
     </dependencies>
 
diff --git 
a/core/camel-core-engine/src/main/java/org/apache/camel/impl/AbstractModelCamelContext.java
 
b/core/camel-core-engine/src/main/java/org/apache/camel/impl/AbstractModelCamelContext.java
index 190bd94..1976101 100644
--- 
a/core/camel-core-engine/src/main/java/org/apache/camel/impl/AbstractModelCamelContext.java
+++ 
b/core/camel-core-engine/src/main/java/org/apache/camel/impl/AbstractModelCamelContext.java
@@ -45,7 +45,6 @@ import 
org.apache.camel.model.transformer.TransformerDefinition;
 import org.apache.camel.model.validator.ValidatorDefinition;
 import org.apache.camel.processor.MulticastProcessor;
 import org.apache.camel.reifier.dataformat.DataFormatReifier;
-import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.TransformerRegistry;
@@ -87,7 +86,6 @@ public abstract class AbstractModelCamelContext extends 
AbstractCamelContext imp
         super(false);
 
         setDefaultExtension(HealthCheckRegistry.class, 
this::createHealthCheckRegistry);
-        setDefaultExtension(RuntimeCamelCatalog.class, 
this::createRuntimeCamelCatalog);
 
         if (init) {
             init();
@@ -266,12 +264,9 @@ public abstract class AbstractModelCamelContext extends 
AbstractCamelContext imp
 
     protected abstract HealthCheckRegistry createHealthCheckRegistry();
 
-    protected abstract RuntimeCamelCatalog createRuntimeCamelCatalog();
-
     @Override
     protected void doStartStandardServices() {
         super.doStartStandardServices();
-        getExtension(RuntimeCamelCatalog.class);
     }
 
     @Override
diff --git 
a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
 
b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index 0f41869..9624ac5 100644
--- 
a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ 
b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -16,9 +16,8 @@
  */
 package org.apache.camel.impl;
 
-import java.util.Map;
-
 import javax.naming.Context;
+import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
@@ -56,10 +55,10 @@ import 
org.apache.camel.impl.engine.HeadersMapFactoryResolver;
 import org.apache.camel.impl.engine.PropertiesComponentFactoryResolver;
 import org.apache.camel.impl.engine.ReactiveExecutorResolver;
 import org.apache.camel.impl.engine.RestRegistryFactoryResolver;
+import org.apache.camel.impl.engine.RuntimeCamelCatalogResolver;
 import org.apache.camel.impl.engine.WebSpherePackageScanClassResolver;
 import org.apache.camel.impl.health.DefaultHealthCheckRegistry;
 import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
-import org.apache.camel.runtimecatalog.impl.DefaultRuntimeCamelCatalog;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.BeanIntrospection;
 import org.apache.camel.spi.BeanProcessorFactory;
@@ -301,7 +300,7 @@ public class DefaultCamelContext extends 
AbstractModelCamelContext {
 
     @Override
     protected RuntimeCamelCatalog createRuntimeCamelCatalog() {
-        return new DefaultRuntimeCamelCatalog(this, true);
+        return new RuntimeCamelCatalogResolver().resolve(this);
     }
 
     @Override
diff --git 
a/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
 
b/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
index 8594aee..21a6b70 100644
--- 
a/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
+++ 
b/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
@@ -86,8 +86,6 @@ import org.apache.camel.model.validator.ValidatorsDefinition;
 import org.apache.camel.processor.interceptor.BacklogTracer;
 import org.apache.camel.reifier.transformer.TransformerReifier;
 import org.apache.camel.reifier.validator.ValidatorReifier;
-import org.apache.camel.runtimecatalog.JSonSchemaResolver;
-import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.ClassResolver;
 import org.apache.camel.spi.DataType;
@@ -262,11 +260,6 @@ public abstract class AbstractCamelContextFactoryBean<T 
extends ModelCamelContex
             LOG.info("Using custom HeadersMapFactory: {}", headersMapFactory);
             
getContext().adapt(ExtendedCamelContext.class).setHeadersMapFactory(headersMapFactory);
         }
-        JSonSchemaResolver jsonSchemaResolver = 
getBeanForType(JSonSchemaResolver.class);
-        if (jsonSchemaResolver != null) {
-            LOG.info("Using custom JSonSchemaResolver: {}", 
jsonSchemaResolver);
-            
getContext().getExtension(RuntimeCamelCatalog.class).setJSonSchemaResolver(jsonSchemaResolver);
-        }
         // custom type converters defined as <bean>s
         Map<String, TypeConverters> typeConverters = 
getContext().getRegistry().findByTypeWithName(TypeConverters.class);
         if (typeConverters != null && !typeConverters.isEmpty()) {
diff --git a/core/camel-core/pom.xml b/core/camel-core/pom.xml
index 079a7f8..286a9d5 100644
--- a/core/camel-core/pom.xml
+++ b/core/camel-core/pom.xml
@@ -237,6 +237,13 @@
             <scope>test</scope>
         </dependency>
 
+        <!-- for testing component verifier extensions -->
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-core-catalog</artifactId>
+            <scope>test</scope>
+        </dependency>
+
     </dependencies>
 
     <build>
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/RuntimeCamelCatalogTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/catalog/RuntimeCamelCatalogTest.java
similarity index 97%
rename from 
core/camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/RuntimeCamelCatalogTest.java
rename to 
core/camel-core/src/test/java/org/apache/camel/catalog/RuntimeCamelCatalogTest.java
index 93a79c5..490e191 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/RuntimeCamelCatalogTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/catalog/RuntimeCamelCatalogTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.runtimecatalog.impl;
+package org.apache.camel.catalog;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -39,13 +39,8 @@ public class RuntimeCamelCatalogTest {
 
     @BeforeClass
     public static void createCamelCatalog() {
-        catalog = new DefaultRuntimeCamelCatalog(new DefaultCamelContext());
-    }
-
-    @Test
-    public void testFromCamelContext() throws Exception {
-        String schema = new 
DefaultCamelContext().getExtension(RuntimeCamelCatalog.class).modelJSonSchema("choice");
-        assertNotNull(schema);
+        catalog = new DefaultRuntimeCamelCatalog();
+        catalog.setCamelContext(new DefaultCamelContext());
     }
 
     @Test
@@ -238,7 +233,7 @@ public class RuntimeCamelCatalogTest {
     public void validatePropertiesSummaryUnknown() throws Exception {
         // unknown component yammer
         EndpointValidationResult result = catalog
-            
.validateEndpointProperties("yammer:MESSAGES?blah=yada&accessToken=aaa&consumerKey=&useJson=no&initialDelay=five&pollStrategy=myStrategy");
+                
.validateEndpointProperties("yammer:MESSAGES?blah=yada&accessToken=aaa&consumerKey=&useJson=no&initialDelay=five&pollStrategy=myStrategy");
         assertTrue(result.isSuccess());
         assertTrue(result.hasWarnings());
         String reason = result.summaryErrorMessage(true, true, true);
@@ -420,4 +415,4 @@ public class RuntimeCamelCatalogTest {
         
assertTrue(result.getUnknown().contains("camel.language.tokenize.foo"));
     }
 
-}
+}
\ No newline at end of file
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/impl/MultipleLifecycleStrategyTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/impl/MultipleLifecycleStrategyTest.java
index 76abf3c..baab809 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/impl/MultipleLifecycleStrategyTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/impl/MultipleLifecycleStrategyTest.java
@@ -50,7 +50,7 @@ public class MultipleLifecycleStrategyTest extends 
TestSupport {
         context.stop();
 
         List<String> expectedEvents = Arrays.asList("onContextStart",
-            "onServiceAdd", "onServiceAdd", "onServiceAdd", "onServiceAdd", 
"onServiceAdd", "onServiceAdd", "onServiceAdd",
+            "onServiceAdd", "onServiceAdd", "onServiceAdd", "onServiceAdd", 
"onServiceAdd", "onServiceAdd",
             "onServiceAdd", "onServiceAdd", "onServiceAdd", "onServiceAdd", 
"onServiceAdd", "onServiceAdd",
             "onComponentAdd", "onEndpointAdd", "onComponentRemove", 
"onContextStop");
         
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/AbstractCamelCatalogTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/AbstractCamelCatalogTest.java
deleted file mode 100644
index 8e355d5..0000000
--- 
a/core/camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/AbstractCamelCatalogTest.java
+++ /dev/null
@@ -1,146 +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.runtimecatalog.impl;
-
-import java.net.URISyntaxException;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.camel.runtimecatalog.JSonSchemaResolver;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-public class AbstractCamelCatalogTest {
-
-    AbstractCamelCatalog catalog = new AbstractCamelCatalog() {
-    };
-
-    JSonSchemaResolver resolver;
-
-    @Before
-    public void setupMockCatalog() {
-        resolver = mock(JSonSchemaResolver.class);
-
-        catalog.setJSonSchemaResolver(resolver);
-    }
-
-    @Test
-    public void shouldConstructEndpointUris() throws URISyntaxException {
-        when(resolver.getComponentJSonSchema("comp")).thenReturn("{\n"//
-                                                                 + "  
\"component\": {\n"//
-                                                                 + "    
\"syntax\": \"comp:param1:param2\"\n"//
-                                                                 + "  }\n"//
-                                                                 + "}");
-
-        final Map<String, String> properties = new HashMap<>();
-        properties.put("param1", "value1");
-        properties.put("param2", "value2");
-        properties.put("param3", "value3");
-
-        final String endpointUri = catalog.doAsEndpointUri("comp", properties, 
"&", false);
-
-        assertEquals("comp:value1:value2?param3=value3", endpointUri);
-    }
-
-    @Test
-    public void shouldConstructEndpointUrisWithPropertyPlaceholders() throws 
URISyntaxException {
-        when(resolver.getComponentJSonSchema("comp")).thenReturn("{\n"//
-                                                                 + "  
\"component\": {\n"//
-                                                                 + "    
\"syntax\": \"comp:param1:param2\"\n"//
-                                                                 + "  }\n"//
-                                                                 + "}");
-
-        final Map<String, String> properties = new HashMap<>();
-        properties.put("param1", "{{prop1}}");
-        properties.put("param2", "{{prop2}}");
-        properties.put("param3", "{{prop3}}");
-
-        final String endpointUri = catalog.doAsEndpointUri("comp", properties, 
"&", false);
-
-        assertEquals("comp:{{prop1}}:{{prop2}}?param3={{prop3}}", endpointUri);
-    }
-
-    @Test
-    public void shouldConstructEndpointUrisWhenValuesContainTokens() throws 
URISyntaxException {
-        when(resolver.getComponentJSonSchema("comp")).thenReturn("{\n"//
-                                                                 + "  
\"component\": {\n"//
-                                                                 + "    
\"syntax\": \"comp:param1:param2\"\n"//
-                                                                 + "  }\n"//
-                                                                 + "}");
-
-        final Map<String, String> properties = new HashMap<>();
-        properties.put("param1", "{value1}");
-        properties.put("param2", "/value2/");
-        properties.put("param3", "/value3/{param}");
-
-        final String endpointUri = catalog.doAsEndpointUri("comp", properties, 
"&", false);
-
-        assertEquals("comp:{value1}:/value2/?param3=/value3/{param}", 
endpointUri);
-    }
-
-    @Test
-    public void shouldContextPathAndQuery() throws URISyntaxException {
-        when(resolver.getComponentJSonSchema("comp")).thenReturn("{\n"//
-                                                                 + "  
\"component\": {\n"//
-                                                                 + "    
\"syntax\": \"comp:value1\"\n"//
-                                                                 + "  }\n"//
-                                                                 + "}");
-
-        final Map<String, String> properties = new HashMap<>();
-        properties.put("value1", "camel");
-        properties.put("foo", "123");
-
-        final String endpointUri = catalog.doAsEndpointUri("comp", properties, 
"&", false);
-
-        assertEquals("comp:camel?foo=123", endpointUri);
-    }
-
-    @Test
-    public void shouldEmptyContextPath() throws URISyntaxException {
-        when(resolver.getComponentJSonSchema("comp")).thenReturn("{\n"//
-                                                                 + "  
\"component\": {\n"//
-                                                                 + "    
\"syntax\": \"comp\"\n"//
-                                                                 + "  }\n"//
-                                                                 + "}");
-
-        final Map<String, String> properties = new HashMap<>();
-
-        final String endpointUri = catalog.doAsEndpointUri("comp", properties, 
"&", false);
-
-        assertEquals("comp", endpointUri);
-    }
-
-    @Test
-    public void shouldEmptyContextPathWithQuery() throws URISyntaxException {
-        when(resolver.getComponentJSonSchema("comp")).thenReturn("{\n"//
-                                                                 + "  
\"component\": {\n"//
-                                                                 + "    
\"syntax\": \"comp\"\n"//
-                                                                 + "  }\n"//
-                                                                 + "}");
-
-        final Map<String, String> properties = new HashMap<>();
-        properties.put("foo", "123");
-
-        final String endpointUri = catalog.doAsEndpointUri("comp", properties, 
"&", false);
-
-        assertEquals("comp?foo=123", endpointUri);
-    }
-}
diff --git 
a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRuntimeCamelCatalogMBean.java
 
b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRuntimeCamelCatalogMBean.java
deleted file mode 100644
index dcd67e3..0000000
--- 
a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRuntimeCamelCatalogMBean.java
+++ /dev/null
@@ -1,35 +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.api.management.mbean;
-
-import org.apache.camel.api.management.ManagedOperation;
-
-public interface ManagedRuntimeCamelCatalogMBean {
-
-    @ManagedOperation(description = "Returns the component information as JSon 
format")
-    String componentJSonSchema(String name);
-
-    @ManagedOperation(description = "Returns the data format information as 
JSon format.")
-    String dataFormatJSonSchema(String name);
-
-    @ManagedOperation(description = "Returns the language information as JSon 
format")
-    String languageJSonSchema(String name);
-
-    @ManagedOperation(description = "Returns the model information as JSon 
format")
-    String modelJSonSchema(String name);
-
-}
diff --git 
a/core/camel-management/src/main/java/org/apache/camel/management/JmxManagementLifecycleStrategy.java
 
b/core/camel-management/src/main/java/org/apache/camel/management/JmxManagementLifecycleStrategy.java
index 558dd54..cea1e3c 100644
--- 
a/core/camel-management/src/main/java/org/apache/camel/management/JmxManagementLifecycleStrategy.java
+++ 
b/core/camel-management/src/main/java/org/apache/camel/management/JmxManagementLifecycleStrategy.java
@@ -62,7 +62,6 @@ import 
org.apache.camel.management.mbean.ManagedInflightRepository;
 import org.apache.camel.management.mbean.ManagedProducerCache;
 import org.apache.camel.management.mbean.ManagedRestRegistry;
 import org.apache.camel.management.mbean.ManagedRoute;
-import org.apache.camel.management.mbean.ManagedRuntimeCamelCatalog;
 import org.apache.camel.management.mbean.ManagedRuntimeEndpointRegistry;
 import org.apache.camel.management.mbean.ManagedService;
 import org.apache.camel.management.mbean.ManagedStreamCachingStrategy;
@@ -82,7 +81,6 @@ import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.processor.CamelInternalProcessor;
 import org.apache.camel.processor.interceptor.BacklogDebugger;
 import org.apache.camel.processor.interceptor.BacklogTracer;
-import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.BeanIntrospection;
 import org.apache.camel.spi.ConsumerCache;
@@ -562,8 +560,6 @@ public class JmxManagementLifecycleStrategy extends 
ServiceSupport implements Li
             answer = new ManagedTransformerRegistry(context, 
(TransformerRegistry)service);
         } else if (service instanceof ValidatorRegistry) {
             answer = new ManagedValidatorRegistry(context, 
(ValidatorRegistry)service);
-        } else if (service instanceof RuntimeCamelCatalog) {
-            answer = new ManagedRuntimeCamelCatalog(context, 
(RuntimeCamelCatalog) service);
         } else if (service instanceof CamelClusterService) {
             answer = 
getManagementObjectStrategy().getManagedObjectForClusterService(context, 
(CamelClusterService)service);
         } else if (service != null) {
diff --git 
a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRuntimeCamelCatalog.java
 
b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRuntimeCamelCatalog.java
deleted file mode 100644
index 1a7c379..0000000
--- 
a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRuntimeCamelCatalog.java
+++ /dev/null
@@ -1,60 +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.management.mbean;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.api.management.ManagedResource;
-import org.apache.camel.api.management.mbean.ManagedRuntimeCamelCatalogMBean;
-import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
-import org.apache.camel.spi.ManagementStrategy;
-
-@ManagedResource(description = "Managed RuntimeCamelCatalog")
-public class ManagedRuntimeCamelCatalog extends ManagedService implements 
ManagedRuntimeCamelCatalogMBean {
-    private final CamelContext camelContext;
-    private final RuntimeCamelCatalog camelCatalog;
-
-    public ManagedRuntimeCamelCatalog(CamelContext camelContext, 
RuntimeCamelCatalog camelCatalog) {
-        super(camelContext, camelCatalog);
-        this.camelContext = camelContext;
-        this.camelCatalog = camelCatalog;
-    }
-
-    @Override
-    public void init(ManagementStrategy strategy) {
-        // do nothing
-    }
-
-    @Override
-    public String componentJSonSchema(String name) {
-        return camelCatalog.componentJSonSchema(name);
-    }
-
-    @Override
-    public String dataFormatJSonSchema(String name) {
-        return camelCatalog.dataFormatJSonSchema(name);
-    }
-
-    @Override
-    public String languageJSonSchema(String name) {
-        return camelCatalog.languageJSonSchema(name);
-    }
-
-    @Override
-    public String modelJSonSchema(String name) {
-        return camelCatalog.modelJSonSchema(name);
-    }
-}
diff --git 
a/core/camel-management/src/test/java/org/apache/camel/management/ManagedNonManagedServiceTest.java
 
b/core/camel-management/src/test/java/org/apache/camel/management/ManagedNonManagedServiceTest.java
index 3642872..e9d545e 100644
--- 
a/core/camel-management/src/test/java/org/apache/camel/management/ManagedNonManagedServiceTest.java
+++ 
b/core/camel-management/src/test/java/org/apache/camel/management/ManagedNonManagedServiceTest.java
@@ -29,7 +29,7 @@ import org.junit.Test;
 
 public class ManagedNonManagedServiceTest extends ManagementTestSupport {
 
-    private static final int SERVICES = 11;
+    private static final int SERVICES = 10;
 
     @Test
     public void testService() throws Exception {
diff --git 
a/core/camel-management/src/test/java/org/apache/camel/management/ManagedProducerRouteAddRemoveRegisterAlwaysTest.java
 
b/core/camel-management/src/test/java/org/apache/camel/management/ManagedProducerRouteAddRemoveRegisterAlwaysTest.java
index 0563cf8..f4b5ddd 100644
--- 
a/core/camel-management/src/test/java/org/apache/camel/management/ManagedProducerRouteAddRemoveRegisterAlwaysTest.java
+++ 
b/core/camel-management/src/test/java/org/apache/camel/management/ManagedProducerRouteAddRemoveRegisterAlwaysTest.java
@@ -28,7 +28,7 @@ import org.junit.Test;
 
 public class ManagedProducerRouteAddRemoveRegisterAlwaysTest extends 
ManagementTestSupport {
 
-    private static final int SERVICES = 11;
+    private static final int SERVICES = 10;
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
diff --git 
a/core/camel-management/src/test/java/org/apache/camel/management/ManagedRouteAddRemoveTest.java
 
b/core/camel-management/src/test/java/org/apache/camel/management/ManagedRouteAddRemoveTest.java
index fff6e2d..702ff39 100644
--- 
a/core/camel-management/src/test/java/org/apache/camel/management/ManagedRouteAddRemoveTest.java
+++ 
b/core/camel-management/src/test/java/org/apache/camel/management/ManagedRouteAddRemoveTest.java
@@ -33,7 +33,7 @@ import org.junit.Test;
  */
 public class ManagedRouteAddRemoveTest extends ManagementTestSupport {
     
-    private static final int SERVICES = 11;
+    private static final int SERVICES = 10;
 
     @Override
     protected RouteBuilder createRouteBuilder() throws Exception {
diff --git 
a/core/camel-management/src/test/java/org/apache/camel/management/ManagedRuntimeCamelCatalogTest.java
 
b/core/camel-management/src/test/java/org/apache/camel/management/ManagedRuntimeCamelCatalogTest.java
deleted file mode 100644
index ec208d1..0000000
--- 
a/core/camel-management/src/test/java/org/apache/camel/management/ManagedRuntimeCamelCatalogTest.java
+++ /dev/null
@@ -1,57 +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.management;
-
-import javax.management.MBeanServer;
-import javax.management.ObjectName;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.junit.Test;
-
-public class ManagedRuntimeCamelCatalogTest extends ManagementTestSupport {
-
-    @Test
-    public void testManagedRuntimeCatalog() throws Exception {
-        // JMX tests dont work well on AIX CI servers (hangs them)
-        if (isPlatform("aix")) {
-            return;
-        }
-
-        MBeanServer mbeanServer = getMBeanServer();
-
-        ObjectName on = 
ObjectName.getInstance("org.apache.camel:context=camel-1,type=services,name=DefaultRuntimeCamelCatalog");
-
-        assertTrue(mbeanServer.isRegistered(on));
-
-        String json = (String) mbeanServer.invoke(on, "componentJSonSchema", 
new Object[]{"log"}, new String[]{"java.lang.String"});
-        assertNotNull(json);
-
-        log.info(json);
-        assertTrue(json.contains("log:loggerName"));
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct:start").to("mock:result");
-            }
-        };
-    }
-
-}
diff --git 
a/core/camel-support/src/main/java/org/apache/camel/component/extension/verifier/DefaultComponentVerifierExtension.java
 
b/core/camel-support/src/main/java/org/apache/camel/component/extension/verifier/DefaultComponentVerifierExtension.java
index ba9b790..5fc7491 100644
--- 
a/core/camel-support/src/main/java/org/apache/camel/component/extension/verifier/DefaultComponentVerifierExtension.java
+++ 
b/core/camel-support/src/main/java/org/apache/camel/component/extension/verifier/DefaultComponentVerifierExtension.java
@@ -25,6 +25,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Component;
 import org.apache.camel.ComponentAware;
+import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.component.extension.ComponentVerifierExtension;
 import org.apache.camel.runtimecatalog.EndpointValidationResult;
 import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
@@ -124,7 +125,7 @@ public class DefaultComponentVerifierExtension implements 
ComponentVerifierExten
         }
 
         // Grab the runtime catalog to check parameters
-        RuntimeCamelCatalog catalog = 
camelContext.getExtension(RuntimeCamelCatalog.class);
+        RuntimeCamelCatalog catalog = 
camelContext.adapt(ExtendedCamelContext.class).getRuntimeCamelCatalog();
 
         // Convert from Map<String, Object> to  Map<String, String> as required
         // by the Camel Catalog
diff --git a/core/pom.xml b/core/pom.xml
index 81fc186..2203672 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -36,6 +36,7 @@
     <modules>
         <module>camel-util</module>
         <module>camel-api</module>
+        <module>camel-core-catalog</module>
         <module>camel-support</module>
         <module>camel-caffeine-lrucache</module>
         <module>camel-headersmap</module>
diff --git a/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide.adoc 
b/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide.adoc
index 74f73f2..ad367c8 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide.adoc
@@ -134,6 +134,16 @@ And in XML DSL:
 </camelContext>
 ----
 
+=== Component Extension Verifier
+
+When using component verifier 
(`org.apache.camel.component.extension.ComponentVerifierExtension`) then you
+would know need to add `camel-core-catalog` to the classpath to make this 
useable. If the JAR is missing,
+there will be an exception stating that `RuntimeCamelCatalog` is not found and 
that this JAR should be added.
+
+=== ManagedRuntimeCatalog
+
+The `ManagedRuntimeCatalog` JMX MBean is removed and no longer available.
+
 === API changes
 
 ==== log changed to private static LOG
diff --git a/parent/pom.xml b/parent/pom.xml
index b9ff8cd..fc0e8cb 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -769,6 +769,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-core-catalog</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-support</artifactId>
                 <version>${project.version}</version>
             </dependency>
diff --git a/platforms/karaf/features/src/main/resources/features.xml 
b/platforms/karaf/features/src/main/resources/features.xml
index 5c3a9b5..39d04cd 100644
--- a/platforms/karaf/features/src/main/resources/features.xml
+++ b/platforms/karaf/features/src/main/resources/features.xml
@@ -58,6 +58,7 @@
     <bundle>mvn:org.apache.camel/camel-core-engine/${project.version}</bundle>
     <bundle>mvn:org.apache.camel/camel-core/${project.version}</bundle>
     <bundle>mvn:org.apache.camel/camel-core-osgi/${project.version}</bundle>
+    <bundle>mvn:org.apache.camel/camel-core-catalog/${project.version}</bundle>
     <bundle>mvn:org.apache.camel/camel-cloud/${project.version}</bundle>
     <bundle>mvn:org.apache.camel/camel-xml-jaxp/${project.version}</bundle>
     <bundle>mvn:org.apache.camel/camel-xml-jaxb/${project.version}</bundle>
@@ -98,10 +99,6 @@
       * = *
     </config>
   </feature>
-  <feature name='camel-catalog' version='${project.version}' start-level='50'>
-    <feature version='${project.version}'>camel-core</feature>
-    <bundle>mvn:org.apache.camel/camel-catalog/${project.version}</bundle>
-  </feature>
   <feature name='camel-blueprint' version='${project.version}' 
start-level='50'>
     <feature version='${project.version}'>camel-core</feature>
     <bundle>mvn:org.apache.camel/camel-core-xml/${project.version}</bundle>

Reply via email to