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();