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 2015/11/16 12:15:12 UTC

[2/2] camel git commit: Camel component docs. Sort the options in the syntax order. Also sort the html output

Camel component docs. Sort the options in the syntax order. Also sort the html output


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/22fa248d
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/22fa248d
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/22fa248d

Branch: refs/heads/camel-2.16.x
Commit: 22fa248dbb3f344c08b84958bb783d3b03f833c6
Parents: 69882c1
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Nov 16 12:18:29 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Nov 16 12:18:48 2015 +0100

----------------------------------------------------------------------
 .../tools/apt/EndpointAnnotationProcessor.java  | 23 ++++++++++++---
 .../camel/tools/apt/helper/EndpointHelper.java  | 31 ++++++++++++++++++++
 2 files changed, 50 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/22fa248d/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java
----------------------------------------------------------------------
diff --git a/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java b/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java
index e03fd88..0f26084 100644
--- a/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java
+++ b/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java
@@ -251,8 +251,13 @@ public class EndpointAnnotationProcessor extends AbstractAnnotationProcessor {
         buffer.append("\n  \"properties\": {");
         first = true;
 
+        // sort the endpoint options in the standard order we prefer
+        List<EndpointPath> paths = new ArrayList<EndpointPath>();
+        paths.addAll(endpointPaths);
+        Collections.sort(paths, EndpointHelper.createPathComparator(componentModel.getSyntax()));
+
         // include paths in the top
-        for (EndpointPath entry : endpointPaths) {
+        for (EndpointPath entry : paths) {
             String label = entry.getLabel();
             if (label != null) {
                 // skip options which are either consumer or producer labels but the component does not support them
@@ -347,7 +352,17 @@ public class EndpointAnnotationProcessor extends AbstractAnnotationProcessor {
         Set<EndpointOption> endpointOptions = new LinkedHashSet<EndpointOption>();
         findClassProperties(writer, roundEnv, componentModel, endpointPaths, endpointOptions, classElement, prefix);
 
-        if (!endpointOptions.isEmpty() || !endpointPaths.isEmpty()) {
+        // sort the endpoint options in the standard order we prefer
+        List<EndpointPath> paths = new ArrayList<EndpointPath>();
+        paths.addAll(endpointPaths);
+        Collections.sort(paths, EndpointHelper.createPathComparator(componentModel.getSyntax()));
+
+        // sort the endpoint options in the standard order we prefer
+        List<EndpointOption> options = new ArrayList<EndpointOption>();
+        options.addAll(endpointOptions);
+        Collections.sort(options, EndpointHelper.createGroupAndLabelComparator());
+
+        if (!options.isEmpty() || !paths.isEmpty()) {
             writer.println("<table class='table'>");
             writer.println("  <tr>");
             writer.println("    <th align=\"left\">Name</th>");
@@ -360,7 +375,7 @@ public class EndpointAnnotationProcessor extends AbstractAnnotationProcessor {
             writer.println("    <th align=\"left\">Description</th>");
             writer.println("  </tr>");
             // include paths in the top
-            for (EndpointPath path : endpointPaths) {
+            for (EndpointPath path : paths) {
                 writer.println("  <tr>");
                 writer.println("    <td>" + path.getName() + "</td>");
                 writer.println("    <td>" + "path" + "</td>");
@@ -373,7 +388,7 @@ public class EndpointAnnotationProcessor extends AbstractAnnotationProcessor {
                 writer.println("  </tr>");
             }
             // and then regular parameter options
-            for (EndpointOption option : endpointOptions) {
+            for (EndpointOption option : options) {
                 writer.println("  <tr>");
                 writer.println("    <td>" + option.getName() + "</td>");
                 writer.println("    <td>" + "parameter" + "</td>");

http://git-wip-us.apache.org/repos/asf/camel/blob/22fa248d/tooling/apt/src/main/java/org/apache/camel/tools/apt/helper/EndpointHelper.java
----------------------------------------------------------------------
diff --git a/tooling/apt/src/main/java/org/apache/camel/tools/apt/helper/EndpointHelper.java b/tooling/apt/src/main/java/org/apache/camel/tools/apt/helper/EndpointHelper.java
index d61bf3c..bb5d8b3 100644
--- a/tooling/apt/src/main/java/org/apache/camel/tools/apt/helper/EndpointHelper.java
+++ b/tooling/apt/src/main/java/org/apache/camel/tools/apt/helper/EndpointHelper.java
@@ -19,6 +19,7 @@ package org.apache.camel.tools.apt.helper;
 import java.util.Comparator;
 
 import org.apache.camel.tools.apt.model.EndpointOption;
+import org.apache.camel.tools.apt.model.EndpointPath;
 
 public final class EndpointHelper {
 
@@ -73,6 +74,15 @@ public final class EndpointHelper {
     }
 
     /**
+     * A comparator to sort the endpoint paths according to syntax.
+     *
+     * @param syntax the endpoint uri syntax
+     */
+    public static EndpointPathComparator createPathComparator(String syntax) {
+        return new EndpointPathComparator(syntax);
+    }
+
+    /**
      * To sort the component/endpoint options in human friendly order.
      * <p/>
      * The order is to include options grouped by
@@ -137,4 +147,25 @@ public final class EndpointHelper {
         }
     }
 
+    private static final class EndpointPathComparator implements Comparator<EndpointPath> {
+
+        private final String syntax;
+
+        public EndpointPathComparator(String syntax) {
+            this.syntax = syntax;
+        }
+
+        @Override
+        public int compare(EndpointPath path1, EndpointPath path2) {
+            int pos1 = syntax != null ? syntax.indexOf(path1.getName()) : -1;
+            int pos2 = syntax != null ? syntax.indexOf(path2.getName()) : -1;
+
+            // use position in syntax to determine the order
+            if (pos1 != -1 && pos2 != -1) {
+                return Integer.compare(pos1, pos2);
+            }
+            return 0;
+        }
+    }
+
 }