Repository: camel
Updated Branches:
  refs/heads/camel-2.16.x 69882c15f -> 22fa248db
  refs/heads/master c87aa3cf7 -> 95392e49a


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/95392e49
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/95392e49
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/95392e49

Branch: refs/heads/master
Commit: 95392e49a4be48799b4089b39dc0ff2db94f5c4a
Parents: c87aa3c
Author: Claus Ibsen <davscl...@apache.org>
Authored: Mon Nov 16 12:18:29 2015 +0100
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Mon Nov 16 12:18:29 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/95392e49/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/95392e49/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;
+        }
+    }
+
 }

Reply via email to