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 349bc97  CAMEL-12558: camel-catalog - Transacted and Policy should not 
have outputs
349bc97 is described below

commit 349bc97e69fa849217d7b813562d3205c6482833
Author: Claus Ibsen <[email protected]>
AuthorDate: Fri Jun 8 08:28:05 2018 +0200

    CAMEL-12558: camel-catalog - Transacted and Policy should not have outputs
---
 .../main/java/org/apache/camel/model/PolicyDefinition.java  |  1 +
 .../java/org/apache/camel/model/TransactedDefinition.java   |  1 +
 .../java/org/apache/camel/catalog/CamelCatalogTest.java     | 13 +++++++++++++
 .../apache/camel/tools/apt/CoreEipAnnotationProcessor.java  | 13 +++++++++++++
 4 files changed, 28 insertions(+)

diff --git 
a/camel-core/src/main/java/org/apache/camel/model/PolicyDefinition.java 
b/camel-core/src/main/java/org/apache/camel/model/PolicyDefinition.java
index e05c537..925b78e 100644
--- a/camel-core/src/main/java/org/apache/camel/model/PolicyDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/PolicyDefinition.java
@@ -42,6 +42,7 @@ import org.apache.camel.util.ObjectHelper;
 public class PolicyDefinition extends OutputDefinition<PolicyDefinition> {
 
     // TODO: Align this code with TransactedDefinition
+    // TODO: Camel 3 should be NoOutputDefinition
 
     @XmlTransient
     protected Class<? extends Policy> type;
diff --git 
a/camel-core/src/main/java/org/apache/camel/model/TransactedDefinition.java 
b/camel-core/src/main/java/org/apache/camel/model/TransactedDefinition.java
index eb80758..bf8b7bd 100644
--- a/camel-core/src/main/java/org/apache/camel/model/TransactedDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/TransactedDefinition.java
@@ -49,6 +49,7 @@ import org.slf4j.LoggerFactory;
 public class TransactedDefinition extends 
OutputDefinition<TransactedDefinition> {
 
     // TODO: Align this code with PolicyDefinition
+    // TODO: Camel 3 should be NoOutputDefinition
 
     // JAXB does not support changing the ref attribute from required to 
optional
     // if we extend PolicyDefinition so we must make a copy of the class
diff --git 
a/platforms/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
 
b/platforms/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
index 23b91a1..b5eb00a 100644
--- 
a/platforms/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
+++ 
b/platforms/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
@@ -1094,6 +1094,19 @@ public class CamelCatalogTest {
     }
 
     @Test
+    public void testTransactedAndPolicyNoOutputs() throws Exception {
+        String json = catalog.modelJSonSchema("transacted");
+        assertNotNull(json);
+        assertTrue(json.contains("\"output\": false"));
+        assertFalse(json.contains("\"outputs\":"));
+
+        json = catalog.modelJSonSchema("policy");
+        assertNotNull(json);
+        assertTrue(json.contains("\"output\": false"));
+        assertFalse(json.contains("\"outputs\":"));
+    }
+
+    @Test
     public void testDataFormatAsciiDoc() throws Exception {
         String doc = catalog.dataFormatAsciiDoc("json-jackson");
         assertNotNull(doc);
diff --git 
a/tooling/apt/src/main/java/org/apache/camel/tools/apt/CoreEipAnnotationProcessor.java
 
b/tooling/apt/src/main/java/org/apache/camel/tools/apt/CoreEipAnnotationProcessor.java
index 35e26fe..4b66859 100644
--- 
a/tooling/apt/src/main/java/org/apache/camel/tools/apt/CoreEipAnnotationProcessor.java
+++ 
b/tooling/apt/src/main/java/org/apache/camel/tools/apt/CoreEipAnnotationProcessor.java
@@ -23,6 +23,7 @@ import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.TreeSet;
+import java.util.stream.Collectors;
 import javax.annotation.processing.ProcessingEnvironment;
 import javax.annotation.processing.RoundEnvironment;
 import javax.lang.model.element.ElementKind;
@@ -183,6 +184,12 @@ public class CoreEipAnnotationProcessor {
 
         buffer.append("\n  \"properties\": {");
         boolean first = true;
+
+        if ("false".equals(eipModel.getOutput())) {
+            // filter out outputs if we do not support it (and preserve order 
so we need to use linked hash-set)
+            options = options.stream().filter(o -> 
!"outputs".equals(o.getName())).collect(Collectors.toCollection(LinkedHashSet::new));
+        }
+
         for (EipOption entry : options) {
             if (first) {
                 first = false;
@@ -190,6 +197,7 @@ public class CoreEipAnnotationProcessor {
                 buffer.append(",");
             }
             buffer.append("\n    ");
+
             // as its json we need to sanitize the docs
             String doc = entry.getDocumentation();
             doc = sanitizeDescription(doc, false);
@@ -1053,6 +1061,11 @@ public class CoreEipAnnotationProcessor {
             return true;
         }
 
+        // special for transacted/policy which should not have output
+        if ("policy".equals(model.getName()) || 
"transacted".equals(model.getName())) {
+            return false;
+        }
+
         for (EipOption option : options) {
             if ("outputs".equals(option.getName())) {
                 return true;

-- 
To stop receiving notification emails like this one, please contact
[email protected].

Reply via email to