CAMEL-10434: Camel catalog support different runtimes to provide their supported list of components etc.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/fc270524 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/fc270524 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/fc270524 Branch: refs/heads/camel-2.18.x Commit: fc27052429fa025f318b8890daeb765d2fd9c802 Parents: 10a8507 Author: Claus Ibsen <davscl...@apache.org> Authored: Mon Nov 7 13:11:55 2016 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Mon Nov 7 16:45:55 2016 +0100 ---------------------------------------------------------------------- platforms/catalog-provider-karaf/pom.xml | 110 +++++++++++++++++++ .../catalog/karaf/KarafRuntimeProvider.java | 58 ++++++++++ .../camel/catalog/DefaultCamelCatalog.java | 2 + .../camel/catalog/DefaultRuntimeProvider.java | 10 +- .../apache/camel/catalog/RuntimeProvider.java | 10 ++ platforms/pom.xml | 7 +- 6 files changed, 194 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/fc270524/platforms/catalog-provider-karaf/pom.xml ---------------------------------------------------------------------- diff --git a/platforms/catalog-provider-karaf/pom.xml b/platforms/catalog-provider-karaf/pom.xml new file mode 100644 index 0000000..9aafd73 --- /dev/null +++ b/platforms/catalog-provider-karaf/pom.xml @@ -0,0 +1,110 @@ +<?xml version="1.0" encoding="UTF-8"?> +<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"> + <!-- + 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. + --> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.apache.camel</groupId> + <artifactId>platforms</artifactId> + <version>2.19.0-SNAPSHOT</version> + </parent> + + <artifactId>camel-catalog-provider-karaf</artifactId> + <packaging>jar</packaging> + <name>Camel :: Platforms :: Catalog :: Provider Karaf</name> + <description>Camel Catalog Karaf</description> + + <properties> + <camel.osgi.export.pkg> + org.apache.camel.catalog.karaf + </camel.osgi.export.pkg> + </properties> + + <dependencies> + + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-catalog</artifactId> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + </dependency> + + <!-- logging --> + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-api</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-core</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-slf4j-impl</artifactId> + <scope>test</scope> + </dependency> + + </dependencies> + + <build> + <plugins> + + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + </plugin> + + <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>compile</phase> + <goals> + <goal>copy-resources</goal> + </goals> + <configuration> + <outputDirectory>${basedir}/target/resources</outputDirectory> + <resources> + <resource> + <directory>../karaf/features/target/classes</directory> + <includes> + <include>features.xml</include> + </includes> + </resource> + </resources> + </configuration> + </execution> + </executions> + </plugin> + + </plugins> + + </build> + +</project> http://git-wip-us.apache.org/repos/asf/camel/blob/fc270524/platforms/catalog-provider-karaf/src/main/java/org/apache/camel/catalog/karaf/KarafRuntimeProvider.java ---------------------------------------------------------------------- diff --git a/platforms/catalog-provider-karaf/src/main/java/org/apache/camel/catalog/karaf/KarafRuntimeProvider.java b/platforms/catalog-provider-karaf/src/main/java/org/apache/camel/catalog/karaf/KarafRuntimeProvider.java new file mode 100644 index 0000000..071d6e9 --- /dev/null +++ b/platforms/catalog-provider-karaf/src/main/java/org/apache/camel/catalog/karaf/KarafRuntimeProvider.java @@ -0,0 +1,58 @@ +/** + * 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 + * <p> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p> + * 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.catalog.karaf; + +import java.util.List; + +import org.apache.camel.catalog.CamelCatalog; +import org.apache.camel.catalog.RuntimeProvider; + +public class KarafRuntimeProvider implements RuntimeProvider { + + private CamelCatalog camelCatalog; + + @Override + public CamelCatalog getCamelCatalog() { + return camelCatalog; + } + + @Override + public void setCamelCatalog(CamelCatalog camelCatalog) { + this.camelCatalog = camelCatalog; + } + + @Override + public String getProviderName() { + return "karaf"; + } + + @Override + public List<String> findComponentNames() { + // parse the karaf features xml file + return null; + } + + @Override + public List<String> findDataFormatNames() { + return null; + } + + @Override + public List<String> findLanguageNames() { + return null; + } +} http://git-wip-us.apache.org/repos/asf/camel/blob/fc270524/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java ---------------------------------------------------------------------- diff --git a/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java b/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java index 33ffccf..e498a7b 100644 --- a/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java +++ b/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java @@ -122,6 +122,8 @@ public class DefaultCamelCatalog implements CamelCatalog { @Override public void setRuntimeProvider(RuntimeProvider runtimeProvider) { this.runtimeProvider = runtimeProvider; + // inject CamelCatalog to the provider + this.runtimeProvider.setCamelCatalog(this); } @Override http://git-wip-us.apache.org/repos/asf/camel/blob/fc270524/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultRuntimeProvider.java ---------------------------------------------------------------------- diff --git a/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultRuntimeProvider.java b/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultRuntimeProvider.java index f3e97d7..a18d193 100644 --- a/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultRuntimeProvider.java +++ b/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultRuntimeProvider.java @@ -27,7 +27,10 @@ public class DefaultRuntimeProvider implements RuntimeProvider { private static final String DATA_FORMATS_CATALOG = "org/apache/camel/catalog/dataformats.properties"; private static final String LANGUAGE_CATALOG = "org/apache/camel/catalog/languages.properties"; - private final CamelCatalog camelCatalog; + private CamelCatalog camelCatalog; + + public DefaultRuntimeProvider() { + } public DefaultRuntimeProvider(CamelCatalog camelCatalog) { this.camelCatalog = camelCatalog; @@ -39,6 +42,11 @@ public class DefaultRuntimeProvider implements RuntimeProvider { } @Override + public void setCamelCatalog(CamelCatalog camelCatalog) { + this.camelCatalog = camelCatalog; + } + + @Override public String getProviderName() { return "default"; } http://git-wip-us.apache.org/repos/asf/camel/blob/fc270524/platforms/catalog/src/main/java/org/apache/camel/catalog/RuntimeProvider.java ---------------------------------------------------------------------- diff --git a/platforms/catalog/src/main/java/org/apache/camel/catalog/RuntimeProvider.java b/platforms/catalog/src/main/java/org/apache/camel/catalog/RuntimeProvider.java index f3e8744..2ab844f 100644 --- a/platforms/catalog/src/main/java/org/apache/camel/catalog/RuntimeProvider.java +++ b/platforms/catalog/src/main/java/org/apache/camel/catalog/RuntimeProvider.java @@ -25,12 +25,22 @@ import java.util.List; */ public interface RuntimeProvider { + // TODO: maven archetype GAV + // original GAV + // spring-boot GAV + // karaf feature name + /** * Gets the {@link CamelCatalog} */ CamelCatalog getCamelCatalog(); /** + * Sets the {@link CamelCatalog} to use + */ + void setCamelCatalog(CamelCatalog camelCatalog); + + /** * Name of provider such as <tt>default</tt>, <tt>karaf</tt>, <tt>spring-boot</tt> */ String getProviderName(); http://git-wip-us.apache.org/repos/asf/camel/blob/fc270524/platforms/pom.xml ---------------------------------------------------------------------- diff --git a/platforms/pom.xml b/platforms/pom.xml index 289fea7..d0811ac 100644 --- a/platforms/pom.xml +++ b/platforms/pom.xml @@ -32,11 +32,14 @@ <packaging>pom</packaging> <modules> + <module>commands</module> + <module>karaf</module> + <module>spring-boot</module> + <!-- run catalog last --> <module>catalog</module> <module>catalog-lucene</module> <module>catalog-maven</module> - <module>commands</module> - <module>karaf</module> + <module>catalog-provider-karaf</module> </modules> </project>