You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2020/02/10 16:41:10 UTC

[camel] branch master updated: Ensure spi-annotations are in camel-api before compilation as shade plugin is too late.

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


The following commit(s) were added to refs/heads/master by this push:
     new d0be6d4  Ensure spi-annotations are in camel-api before compilation as shade plugin is too late.
d0be6d4 is described below

commit d0be6d4fa4c4a016dcfa838d257f771046660e4c
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Feb 10 17:39:46 2020 +0100

    Ensure spi-annotations are in camel-api before compilation as shade plugin is too late.
---
 core/camel-api/pom.xml                             |  34 ++---
 .../java/org/apache/camel/spi/AsEndpointUri.java   |  34 +++++
 .../java/org/apache/camel/spi/AsPredicate.java     |  39 +++++
 .../java/org/apache/camel/spi/Metadata.java        | 108 ++++++++++++++
 .../java/org/apache/camel/spi/UriEndpoint.java     | 166 +++++++++++++++++++++
 .../java/org/apache/camel/spi/UriParam.java        | 118 +++++++++++++++
 .../java/org/apache/camel/spi/UriParams.java       |  39 +++++
 .../java/org/apache/camel/spi/UriPath.java         | 101 +++++++++++++
 .../camel/spi/annotations/CloudServiceFactory.java |  33 ++++
 .../apache/camel/spi/annotations/Component.java    |  33 ++++
 .../camel/spi/annotations/ConstantProvider.java    |  32 ++++
 .../apache/camel/spi/annotations/Dataformat.java   |  33 ++++
 .../apache/camel/spi/annotations/JdkService.java   |  33 ++++
 .../org/apache/camel/spi/annotations/Language.java |  33 ++++
 .../apache/camel/spi/annotations/SendDynamic.java  |  33 ++++
 .../camel/spi/annotations/ServiceFactory.java      |  34 +++++
 .../camel/spi/annotations/SubServiceFactory.java   |  32 ++++
 17 files changed, 917 insertions(+), 18 deletions(-)

diff --git a/core/camel-api/pom.xml b/core/camel-api/pom.xml
index d496b63..301b8e2 100644
--- a/core/camel-api/pom.xml
+++ b/core/camel-api/pom.xml
@@ -17,7 +17,8 @@
     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/xsd/maven-4.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>
@@ -34,18 +35,14 @@
     <description>The Camel API</description>
 
     <properties>
-        <camel.osgi.export.pkg>$${replace;{local-packages};;;\;},org.apache.camel.spi.annotations</camel.osgi.export.pkg>
+        <camel.osgi.export.pkg>$${replace;{local-packages};;;\;},org.apache.camel.spi.annotations
+        </camel.osgi.export.pkg>
     </properties>
 
     <dependencies>
 
         <dependency>
             <groupId>org.apache.camel</groupId>
-            <artifactId>spi-annotations</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.camel</groupId>
             <artifactId>camel-util</artifactId>
         </dependency>
 
@@ -58,24 +55,25 @@
 
     <build>
         <plugins>
+
+            <!-- we want to embed spi-annotations directly in camel-api so they are always there -->
             <plugin>
-                <!-- shade spi-annotations into camel-api -->
-                <!-- so we these annotations embedded in camel-api -->
                 <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-shade-plugin</artifactId>
+                <artifactId>maven-resources-plugin</artifactId>
                 <executions>
                     <execution>
-                        <phase>package</phase>
+                        <id>copy-spi-annotations</id>
+                        <phase>validate</phase>
                         <goals>
-                            <goal>shade</goal>
+                            <goal>copy-resources</goal>
                         </goals>
                         <configuration>
-                            <artifactSet>
-                                <includes>
-                                    <include>org.apache.camel:spi-annotations</include>
-                                </includes>
-                            </artifactSet>
-                            <createDependencyReducedPom>true</createDependencyReducedPom>
+                            <outputDirectory>${basedir}/src/generated/java</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>../../tooling/spi-annotations/src/main/java</directory>
+                                </resource>
+                            </resources>
                         </configuration>
                     </execution>
                 </executions>
diff --git a/core/camel-api/src/generated/java/org/apache/camel/spi/AsEndpointUri.java b/core/camel-api/src/generated/java/org/apache/camel/spi/AsEndpointUri.java
new file mode 100644
index 0000000..86a6039
--- /dev/null
+++ b/core/camel-api/src/generated/java/org/apache/camel/spi/AsEndpointUri.java
@@ -0,0 +1,34 @@
+/*
+ * 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.spi;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Indicates that the Camel string/expression should be used as an endpoint uri.
+ * <p/>
+ * For example the EIPs which accepts uris as string/expression parameters.
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER})
+public @interface AsEndpointUri {
+}
diff --git a/core/camel-api/src/generated/java/org/apache/camel/spi/AsPredicate.java b/core/camel-api/src/generated/java/org/apache/camel/spi/AsPredicate.java
new file mode 100644
index 0000000..2f1a71a
--- /dev/null
+++ b/core/camel-api/src/generated/java/org/apache/camel/spi/AsPredicate.java
@@ -0,0 +1,39 @@
+/*
+ * 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.spi;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Indicates that the Camel language/expression should be used as predicate.
+ * <p/>
+ * For example the EIPs which accepts expression/languages may used them as either expression or predicate.
+ * This annotation is used to mark situation where they should be used as predicate. As by default they
+ * are used as expression. And example would be the Filter EIP which uses predicate. And the transform EIP
+ * uses an expression.
+ * <br/>
+ * Being able to distinguish between these two situations can be of importance to tooling.
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER})
+public @interface AsPredicate {
+}
diff --git a/core/camel-api/src/generated/java/org/apache/camel/spi/Metadata.java b/core/camel-api/src/generated/java/org/apache/camel/spi/Metadata.java
new file mode 100644
index 0000000..873952d
--- /dev/null
+++ b/core/camel-api/src/generated/java/org/apache/camel/spi/Metadata.java
@@ -0,0 +1,108 @@
+/*
+ * 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.spi;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Meta data for EIPs, components, data formats and other Camel concepts
+ * <p/>
+ * For example to associate labels to Camel components
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
+public @interface Metadata {
+
+    /**
+     * A human display name of the parameter.
+     * <p/>
+     * This is used for documentation and tooling only.
+     */
+    String displayName() default "";
+
+    /**
+     * To define one or more labels.
+     * <p/>
+     * Multiple labels can be defined as a comma separated value.
+     */
+    String label() default "";
+
+    /**
+     * To define a default value.
+     */
+    String defaultValue() default "";
+
+    /**
+     * To define that this entity is required.
+     */
+    boolean required() default false;
+
+    /**
+     * An optional human readable title of this entity, to be used instead of a computed title.
+     */
+    String title() default "";
+
+    /**
+     * Returns a description of this entity.
+     * <p/>
+     * This is used for documentation and tooling only.
+     */
+    String description() default "";
+
+    /**
+     * Allows to define enums this options accepts.
+     * <p/>
+     * If the type is already an enum, then this option should not be used; instead you can use
+     * this option when the type is a String that only accept certain values.
+     * <p/>
+     * Multiple values is separated by comma.
+     */
+    String enums() default "";
+
+    /**
+     * Whether the option is secret/sensitive information such as a password.
+     */
+    boolean secret() default false;
+
+    /**
+     * To re-associate the preferred Java type of this parameter.
+     * <p/>
+     * This is used for parameters which are of a specialized type but can be configured by another Java type, such as from a String.
+     */
+    String javaType() default "";
+
+    /**
+     * The first version this functionality was added to Apache Camel.
+     */
+    String firstVersion() default "";
+
+    /**
+     * Additional description that can explain the user about the deprecation and give reference to what to use instead.
+     */
+    String deprecationNote() default "";
+
+    /**
+     * Whether to skip this option
+     */
+    boolean skip() default false;
+
+}
diff --git a/core/camel-api/src/generated/java/org/apache/camel/spi/UriEndpoint.java b/core/camel-api/src/generated/java/org/apache/camel/spi/UriEndpoint.java
new file mode 100644
index 0000000..8e770b2
--- /dev/null
+++ b/core/camel-api/src/generated/java/org/apache/camel/spi/UriEndpoint.java
@@ -0,0 +1,166 @@
+/*
+ * 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.spi;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Represents an annotated Camel <a href="http://camel.apache.org/endpoint.html">Endpoint</a>
+ * which can have its properties (and the properties on its consumer) injected from the
+ * Camel URI path and its query parameters
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Target({ElementType.TYPE})
+public @interface UriEndpoint {
+
+    /**
+     * The first version this endpoint was added to Apache Camel.
+     */
+    String firstVersion() default "";
+
+    /**
+     * Represents the URI scheme name of this endpoint.
+     * <p/>
+     * Multiple scheme names can be defined as a comma separated value.
+     * For example to associate <tt>http</tt> and <tt>https</tt> to the same endpoint implementation.
+     * <p/>
+     * The order of the scheme names here should be the same order as in {@link #extendsScheme()} so their are paired.
+     * <p/>
+     * The schema name must be lowercase, it may contain dashes as well. For example: robot-framework.
+     */
+    String scheme();
+
+    /**
+     * Used when an endpoint is extending another endpoint
+     * <p/>
+     * Multiple scheme names can be defined as a comma separated value.
+     * For example to associate <tt>ftp</tt> and <tt>ftps</tt> to the same endpoint implementation.
+     * The order of the scheme names here should be the same order as in {@link #scheme()} so their are paired.
+     */
+    String extendsScheme() default "";
+
+    /**
+     * Represent the URI syntax the endpoint must use.
+     * <p/>
+     * The syntax follows the patterns such as:
+     * <ul>
+     *     <li>scheme:host:port</li>
+     *     <li>scheme:host:port/path</li>
+     *     <li>scheme:path</li>
+     *     <li>scheme:path/path2</li>
+     * </ul>
+     * Where each path maps to the name of the endpoint {@link org.apache.camel.spi.UriPath} option.
+     * The query parameters is implied and should not be included in the syntax.
+     * <p/>
+     * Some examples:
+     * <ul>
+     *     <li>file:directoryName</li>
+     *     <li>ftp:host:port/directoryName</li>
+     *     <li>jms:destinationType:destinationName</li>
+     * </ul>
+     */
+    String syntax();
+
+    /**
+     * If the endpoint supports specifying username and/or password in the UserInfo part of the URI, then the
+     * alternative syntax can represent this such as:
+     * <ul>
+     *     <li>ftp:userName:password@host:port/directoryName</li>
+     *     <li>ssh:username:password@host:port</li>
+     * </ul>
+     */
+    String alternativeSyntax() default "";
+
+    /**
+     * Represents the consumer class which is injected and created by consumers
+     */
+    @Deprecated
+    Class<?> consumerClass() default Object.class;
+
+    /**
+     * The configuration parameter name prefix used on parameter names to separate the endpoint
+     * properties from the consumer properties
+     */
+    String consumerPrefix() default "";
+
+    /**
+     * A human readable title of this entity, such as the component name of the this endpoint.
+     * <p/>
+     * For example: JMS, MQTT, Netty HTTP, SAP NetWeaver
+     */
+    String title();
+
+    /**
+     * To associate this endpoint with label(s).
+     * <p/>
+     * Multiple labels can be defined as a comma separated value.
+     * <p/>
+     * The labels is intended for grouping the endpoints, such as <tt>core</tt>, <tt>file</tt>, <tt>messaging</tt>, <tt>database</tt>, etc.
+     */
+    String label() default "";
+
+    /**
+     * Whether this endpoint can only be used as a producer.
+     * <p/>
+     * By default its assumed the endpoint can be used as both consumer and producer.
+     */
+    boolean producerOnly() default false;
+
+    /**
+     * Whether this endpoint can only be used as a consumer.
+     * <p/>
+     * By default its assumed the endpoint can be used as both consumer and producer.
+     */
+    boolean consumerOnly() default false;
+
+    /**
+     * Should all properties be known or does the endpoint allow unknown options?
+     * <p/>
+     * <tt>lenient = false</tt> means that the endpoint should validate that all
+     * given options is known and configured properly.
+     * <tt>lenient = true</tt> means that the endpoint allows additional unknown options to
+     * be passed to it but does not throw a ResolveEndpointFailedException when creating
+     * the endpoint.
+     * <p/>
+     * This options is used by a few components for instance the HTTP based that can have
+     * dynamic URI options appended that is targeted for an external system.
+     * <p/>
+     * Most endpoints is configured to be <b>not</b> lenient.
+     */
+    boolean lenientProperties() default false;
+
+    /**
+     * To exclude one or more properties in this endpoint.
+     * <p/>
+     * This is used when a Camel component extend another component, and then may need to not use some of the properties from
+     * the parent component. Multiple properties can be separated by comma.
+     */
+    String excludeProperties() default "";
+
+    /**
+     * Generates source code for fast configuring of the endpoint properties which
+     * uses direct method invocation of getter/setters.
+     * Setting this to false will fallback to use reflection based introspection as Camel does in Camel 2.x.
+     */
+    boolean generateConfigurer() default true;
+
+}
\ No newline at end of file
diff --git a/core/camel-api/src/generated/java/org/apache/camel/spi/UriParam.java b/core/camel-api/src/generated/java/org/apache/camel/spi/UriParam.java
new file mode 100644
index 0000000..be6610a
--- /dev/null
+++ b/core/camel-api/src/generated/java/org/apache/camel/spi/UriParam.java
@@ -0,0 +1,118 @@
+/*
+ * 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.spi;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Represents an injection point of a Camel Uri parameter value on an Endpoint or Consumer, usually configured via a URI style query parameter in a URI
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Target({ElementType.FIELD })
+public @interface UriParam {
+
+    /**
+     * Returns the name of the parameter.
+     * <p/>
+     * If this is not specified then the name of the field or property which has this annotation is used.
+     */
+    String name() default "";
+
+    /**
+     * A human display name of the parameter.
+     * <p/>
+     * This is used for documentation and tooling only.
+     */
+    String displayName() default "";
+
+    /**
+     * The default value of the parameter.
+     * <p/>
+     * Note that this attribute is only for documentation purpose. The default value in use at runtime is the value the Java field was assigned.
+     */
+    String defaultValue() default "";
+
+    /**
+     * A special note about the default value.
+     * <p/>
+     * This can be used to document special cases about the default value.
+     */
+    String defaultValueNote() default "";
+
+    /**
+     * Returns a description of this parameter.
+     * <p/>
+     * This is used for documentation and tooling only.
+     */
+    String description() default "";
+
+    /**
+     * Allows to define enums this options accepts.
+     * <p/>
+     * If the type is already an enum, then this option should not be used; instead you can use
+     * this option when the type is a String that only accept certain values.
+     * <p/>
+     * Multiple values is separated by comma.
+     */
+    String enums() default "";
+
+    /**
+     * To associate this parameter with label(s).
+     * <p/>
+     * Multiple labels can be defined as a comma separated value.
+     * <p/>
+     * The labels is intended for grouping the parameters, such as <tt>consumer</tt>, <tt>producer</tt>, <tt>common</tt>, <tt>security</tt>, etc.
+     */
+    String label() default "";
+
+    /**
+     * Whether the option is secret/sensitive information such as a password.
+     */
+    boolean secret() default false;
+
+    /**
+     * To re-associate the preferred Java type of this parameter.
+     * <p/>
+     * This is used for parameters which are of a specialized type but can be configured by another Java type, such as from a String.
+     */
+    String javaType() default "";
+
+    /**
+     * If the parameter can be configured multiple times, such as configuring options to a <tt>Map</tt> type.
+     */
+    boolean multiValue() default false;
+
+    /**
+     * If the parameter must be configured with a prefix.
+     * <p/>
+     * For example to configure scheduler options, the parameters is prefixed with <tt>scheduler.foo=bar</tt>
+     */
+    String prefix() default "";
+
+    /**
+     * If the parameter can be configured with an optional prefix.
+     * <p/>
+     * For example to configure consumer options, the parameters can be prefixed with <tt>consumer.</tt>, eg <tt>consumer.delay=5000</tt>
+     */
+    String optionalPrefix() default "";
+
+}
\ No newline at end of file
diff --git a/core/camel-api/src/generated/java/org/apache/camel/spi/UriParams.java b/core/camel-api/src/generated/java/org/apache/camel/spi/UriParams.java
new file mode 100644
index 0000000..48f56729
--- /dev/null
+++ b/core/camel-api/src/generated/java/org/apache/camel/spi/UriParams.java
@@ -0,0 +1,39 @@
+/*
+ * 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.spi;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Used to annotate a nested configuration parameter type (such as a nested Configuration object) which can then be used on a
+ * Component, Endpoint and/or Consumer and then be configured via Camel URI query arguments.
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Target({ElementType.TYPE })
+public @interface UriParams {
+
+    /**
+     * Returns the prefix used to access nested properties of this configuration object
+     */
+    String prefix() default "";
+
+}
\ No newline at end of file
diff --git a/core/camel-api/src/generated/java/org/apache/camel/spi/UriPath.java b/core/camel-api/src/generated/java/org/apache/camel/spi/UriPath.java
new file mode 100644
index 0000000..2bcdfc9
--- /dev/null
+++ b/core/camel-api/src/generated/java/org/apache/camel/spi/UriPath.java
@@ -0,0 +1,101 @@
+/*
+ * 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.spi;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Represents an injection point of a Camel Uri path value (the remaining part of a Camel URI without any query arguments)
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Target({ElementType.FIELD })
+public @interface UriPath {
+
+    /**
+     * Returns the name of the uri path.
+     * <p/>
+     * This can be used to name the uri path something meaningful, such as a <tt>directory</tt>, <tt>queueName</tt> etc.
+     * <p/>
+     * If this is not specified then the name of the field or property which has this annotation is used.
+     */
+    String name() default "";
+
+    /**
+     * A human display name of the parameter.
+     * <p/>
+     * This is used for documentation and tooling only.
+     */
+    String displayName() default "";
+
+    /**
+     * The default value of the parameter.
+     * <p/>
+     * Note that this attribute is only for documentation purpose. The default value in use at runtime is the value the Java field was assigned.
+     */
+    String defaultValue() default "";
+
+    /**
+     * A special note about the default value.
+     * <p/>
+     * This can be used to document special cases about the default value.
+     */
+    String defaultValueNote() default "";
+
+    /**
+     * Returns a description of this uri path
+     * <p/>
+     * This is used for documentation and tooling only.
+     */
+    String description() default "";
+
+    /**
+     * Allows to define enums this options accepts.
+     * <p/>
+     * If the type is already an enum, then this option should not be used; instead you can use
+     * this option when the type is a String that only accept certain values.
+     * <p/>
+     * Multiple values is separated by comma.
+     */
+    String enums() default "";
+
+    /**
+     * To associate this path value with label(s).
+     * <p/>
+     * Multiple labels can be defined as a comma separated value.
+     * <p/>
+     * The labels is intended for grouping the parameters, such as <tt>consumer</tt>, <tt>producer</tt>, <tt>common</tt>, <tt>security</tt>, etc.
+     */
+    String label() default "";
+
+    /**
+     * Whether the option is secret/sensitive information such as a password.
+     */
+    boolean secret() default false;
+
+    /**
+     * To re-associate the preferred Java type of this parameter.
+     * <p/>
+     * This is used for parameters which are of a specialized type but can be configured by another Java type, such as from a String.
+     */
+    String javaType() default "";
+
+}
\ No newline at end of file
diff --git a/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/CloudServiceFactory.java b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/CloudServiceFactory.java
new file mode 100644
index 0000000..e6e4b79
--- /dev/null
+++ b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/CloudServiceFactory.java
@@ -0,0 +1,33 @@
+/*
+ * 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.spi.annotations;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Target({ElementType.TYPE })
+@ServiceFactory("cloud")
+public @interface CloudServiceFactory {
+
+    String value();
+
+}
diff --git a/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/Component.java b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/Component.java
new file mode 100644
index 0000000..42a774f
--- /dev/null
+++ b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/Component.java
@@ -0,0 +1,33 @@
+/*
+ * 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.spi.annotations;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Target({ElementType.TYPE })
+@ServiceFactory("component")
+public @interface Component {
+
+    String value();
+
+}
diff --git a/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/ConstantProvider.java b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/ConstantProvider.java
new file mode 100644
index 0000000..1a93df6
--- /dev/null
+++ b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/ConstantProvider.java
@@ -0,0 +1,32 @@
+/*
+ * 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.spi.annotations;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Target({ElementType.TYPE })
+public @interface ConstantProvider {
+
+    String value();
+
+}
diff --git a/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/Dataformat.java b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/Dataformat.java
new file mode 100644
index 0000000..ac3b915
--- /dev/null
+++ b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/Dataformat.java
@@ -0,0 +1,33 @@
+/*
+ * 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.spi.annotations;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Target({ElementType.TYPE })
+@ServiceFactory("dataformat")
+public @interface Dataformat {
+
+    String value();
+
+}
diff --git a/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/JdkService.java b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/JdkService.java
new file mode 100644
index 0000000..35f9489
--- /dev/null
+++ b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/JdkService.java
@@ -0,0 +1,33 @@
+/*
+ * 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.spi.annotations;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Target({ElementType.TYPE })
+@ServiceFactory(ServiceFactory.JDK_SERVICE)
+public @interface JdkService {
+
+    Class value();
+
+}
diff --git a/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/Language.java b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/Language.java
new file mode 100644
index 0000000..2988513
--- /dev/null
+++ b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/Language.java
@@ -0,0 +1,33 @@
+/*
+ * 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.spi.annotations;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Target({ElementType.TYPE })
+@ServiceFactory("language")
+public @interface Language {
+
+    String value();
+
+}
diff --git a/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/SendDynamic.java b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/SendDynamic.java
new file mode 100644
index 0000000..d4aadd2
--- /dev/null
+++ b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/SendDynamic.java
@@ -0,0 +1,33 @@
+/*
+ * 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.spi.annotations;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Target({ElementType.TYPE })
+@ServiceFactory("send-dynamic")
+public @interface SendDynamic {
+
+    String value();
+
+}
diff --git a/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/ServiceFactory.java b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/ServiceFactory.java
new file mode 100644
index 0000000..3afc2fa
--- /dev/null
+++ b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/ServiceFactory.java
@@ -0,0 +1,34 @@
+/*
+ * 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.spi.annotations;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Target({ElementType.TYPE })
+public @interface ServiceFactory {
+
+    String JDK_SERVICE = "#jdk#";
+
+    String value();
+
+}
diff --git a/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/SubServiceFactory.java b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/SubServiceFactory.java
new file mode 100644
index 0000000..ec16498
--- /dev/null
+++ b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/SubServiceFactory.java
@@ -0,0 +1,32 @@
+/*
+ * 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.spi.annotations;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Target({ElementType.TYPE })
+public @interface SubServiceFactory {
+
+    String value();
+
+}