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; + } + } + }