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/09/01 14:19:25 UTC

[camel] 05/10: CAMEL-15478: Component metadata should mark if a component is API based or not

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 603210c7e4f709a36550d3f7e6b1ddd0b65b6e67
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Sep 1 13:54:44 2020 +0200

    CAMEL-15478: Component metadata should mark if a component is API based or not
---
 .../main/java/org/apache/camel/ApiEndpoint.java    | 24 ++++++++++++++++++++++
 .../support/component/AbstractApiEndpoint.java     |  3 ++-
 .../apache/camel/tooling/model/ComponentModel.java |  9 ++++++++
 .../org/apache/camel/tooling/model/JsonMapper.java |  2 ++
 .../packaging/EndpointSchemaGeneratorMojo.java     |  1 +
 5 files changed, 38 insertions(+), 1 deletion(-)

diff --git a/core/camel-api/src/main/java/org/apache/camel/ApiEndpoint.java b/core/camel-api/src/main/java/org/apache/camel/ApiEndpoint.java
new file mode 100644
index 0000000..bf0c2e8
--- /dev/null
+++ b/core/camel-api/src/main/java/org/apache/camel/ApiEndpoint.java
@@ -0,0 +1,24 @@
+/*
+ * 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;
+
+/**
+ * Marks the {@link Endpoint} as an endpoint from an API based component.
+ */
+public interface ApiEndpoint extends Endpoint {
+
+}
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/component/AbstractApiEndpoint.java b/core/camel-support/src/main/java/org/apache/camel/support/component/AbstractApiEndpoint.java
index 3bb45bf..363fd26 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/component/AbstractApiEndpoint.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/component/AbstractApiEndpoint.java
@@ -26,6 +26,7 @@ import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ExecutorService;
 
+import org.apache.camel.ApiEndpoint;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Component;
 import org.apache.camel.spi.ExecutorServiceManager;
@@ -41,7 +42,7 @@ import org.slf4j.LoggerFactory;
  */
 public abstract class AbstractApiEndpoint<E extends ApiName, T>
         extends ScheduledPollEndpoint
-        implements PropertyNamesInterceptor, PropertiesInterceptor {
+        implements ApiEndpoint, PropertyNamesInterceptor, PropertiesInterceptor {
 
     // thread pool executor with Endpoint Class name as keys
     private static Map<String, ExecutorService> executorServiceMap = new ConcurrentHashMap<>();
diff --git a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/ComponentModel.java b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/ComponentModel.java
index 71420d7..dd1efac 100644
--- a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/ComponentModel.java
+++ b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/ComponentModel.java
@@ -28,6 +28,7 @@ public class ComponentModel extends ArtifactModel<ComponentModel.ComponentOption
     protected String syntax;
     protected String alternativeSyntax;
     protected boolean async;
+    protected boolean api;
     protected boolean consumerOnly;
     protected boolean producerOnly;
     protected boolean lenientProperties;
@@ -90,6 +91,14 @@ public class ComponentModel extends ArtifactModel<ComponentModel.ComponentOption
         this.async = async;
     }
 
+    public boolean isApi() {
+        return api;
+    }
+
+    public void setApi(boolean api) {
+        this.api = api;
+    }
+
     public boolean isConsumerOnly() {
         return consumerOnly;
     }
diff --git a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java
index 3a8c041..fdba0c2 100644
--- a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java
+++ b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java
@@ -109,6 +109,7 @@ public final class JsonMapper {
         model.setSyntax(mobj.getString("syntax"));
         model.setAlternativeSyntax(mobj.getString("alternativeSyntax"));
         model.setAsync(mobj.getBooleanOrDefault("async", false));
+        model.setApi(mobj.getBooleanOrDefault("api", false));
         model.setConsumerOnly(mobj.getBooleanOrDefault("consumerOnly", false));
         model.setProducerOnly(mobj.getBooleanOrDefault("producerOnly", false));
         model.setLenientProperties(mobj.getBooleanOrDefault("lenientProperties", false));
@@ -136,6 +137,7 @@ public final class JsonMapper {
         obj.put("syntax", model.getSyntax());
         obj.put("alternativeSyntax", model.getAlternativeSyntax());
         obj.put("async", model.isAsync());
+        obj.put("api", model.isApi());
         obj.put("consumerOnly", model.isConsumerOnly());
         obj.put("producerOnly", model.isProducerOnly());
         obj.put("lenientProperties", model.isLenientProperties());
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointSchemaGeneratorMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointSchemaGeneratorMojo.java
index ec7c64a..1221ad5 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointSchemaGeneratorMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointSchemaGeneratorMojo.java
@@ -486,6 +486,7 @@ public class EndpointSchemaGeneratorMojo extends AbstractGeneratorMojo {
         model.setProducerOnly(uriEndpoint.producerOnly());
         model.setLenientProperties(uriEndpoint.lenientProperties());
         model.setAsync(loadClass("org.apache.camel.AsyncEndpoint").isAssignableFrom(endpointClassElement));
+        model.setApi(loadClass("org.apache.camel.ApiEndpoint").isAssignableFrom(endpointClassElement));
 
         // what is the first version this component was added to Apache Camel
         String firstVersion = uriEndpoint.firstVersion();