Repository: camel Updated Branches: refs/heads/master d3a69dc81 -> 9b61389d4
CAMEL-7999: Add defaultValue to @UriParam Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/da782074 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/da782074 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/da782074 Branch: refs/heads/master Commit: da7820746a14a45bc0b08ba4a7e1177a81e7507d Parents: d3a69dc Author: Claus Ibsen <davscl...@apache.org> Authored: Sun Nov 9 10:26:36 2014 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Sun Nov 9 10:26:36 2014 +0100 ---------------------------------------------------------------------- .../tools/apt/EndpointAnnotationProcessor.java | 30 ++++++++++++++++---- .../java/org/apache/camel/spi/UriEndpoint.java | 1 + .../java/org/apache/camel/spi/UriParam.java | 17 ++++++++++- .../java/org/apache/camel/spi/UriParams.java | 1 + 4 files changed, 43 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/da782074/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 0db4b60..7d90b1a 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 @@ -192,13 +192,15 @@ public class EndpointAnnotationProcessor extends AbstractProcessor { writer.println(" <tr>"); writer.println(" <th>Name</th>"); writer.println(" <th>Type</th>"); + writer.println(" <th>Default Value</th>"); writer.println(" <th>Description</th>"); writer.println(" </tr>"); for (EndpointOption option : endpointOptions) { writer.println(" <tr>"); writer.println(" <td>" + option.getName() + "</td>"); writer.println(" <td>" + option.getType() + "</td>"); - writer.println(" <td>" + option.getDocumentation() + "</td>"); + writer.println(" <td>" + option.getDefaultValue() + "</td>"); + writer.println(" <td>" + option.getDocumentationWithNotes() + "</td>"); writer.println(" </tr>"); } writer.println("</table>"); @@ -221,6 +223,10 @@ public class EndpointAnnotationProcessor extends AbstractProcessor { name = fieldName; } name = prefix + name; + + String defaultValue = param.defaultValue(); + String defaultValueNote = param.defaultValueNote(); + // if the field type is a nested parameter then iterate through its fields TypeMirror fieldType = fieldElement.asType(); String fieldTypeName = fieldType.toString(); @@ -275,9 +281,7 @@ public class EndpointAnnotationProcessor extends AbstractProcessor { } } - // we could likely detect if the type is collection based? - - EndpointOption option = new EndpointOption(name, fieldTypeName, docComment.trim(), isEnum, enums); + EndpointOption option = new EndpointOption(name, fieldTypeName, defaultValue, defaultValueNote, docComment.trim(), isEnum, enums); endpointOptions.add(option); } } @@ -377,13 +381,18 @@ public class EndpointAnnotationProcessor extends AbstractProcessor { private String name; private String type; + private String defaultValue; + private String defaultValueNote; private String documentation; private boolean enumType; private Set<String> enums; - private EndpointOption(String name, String type, String documentation, boolean enumType, Set<String> enums) { + private EndpointOption(String name, String type, String defaultValue, String defaultValueNote, + String documentation, boolean enumType, Set<String> enums) { this.name = name; this.type = type; + this.defaultValue = defaultValue; + this.defaultValueNote = defaultValueNote; this.documentation = documentation; this.enumType = enumType; this.enums = enums; @@ -397,10 +406,21 @@ public class EndpointAnnotationProcessor extends AbstractProcessor { return type; } + public String getDefaultValue() { + return defaultValue; + } + public String getDocumentation() { return documentation; } + public String getDocumentationWithNotes() { + if (defaultValueNote != null) { + return documentation + ". Default value notice: " + defaultValueNote; + } + return documentation; + } + public boolean isEnumType() { return enumType; } http://git-wip-us.apache.org/repos/asf/camel/blob/da782074/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriEndpoint.java ---------------------------------------------------------------------- diff --git a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriEndpoint.java b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriEndpoint.java index 60da8f0..9342431 100644 --- a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriEndpoint.java +++ b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriEndpoint.java @@ -31,6 +31,7 @@ import java.lang.annotation.Target; @Documented @Target({ElementType.TYPE}) public @interface UriEndpoint { + /** * Represents the URI scheme name of this endpoint */ http://git-wip-us.apache.org/repos/asf/camel/blob/da782074/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriParam.java ---------------------------------------------------------------------- diff --git a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriParam.java b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriParam.java index 5e360da..5caac4c 100644 --- a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriParam.java +++ b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriParam.java @@ -29,11 +29,26 @@ import java.lang.annotation.Target; @Documented @Target({ElementType.FIELD }) public @interface UriParam { + /** * Returns the name of the parameter. - * + * <p/> * If this is not specified then the name of the field or property which has this annotation is used. */ String name() default ""; + /** + * The default value of the parameter. + * <p/> + * Note that this attribute is only for documentation purpose. The default value in use at runtime is the value the Java field was assigned. + */ + String defaultValue(); + + /** + * A special note about the default value. + * <p/> + * This can be used to document special cases about the default value. + */ + String defaultValueNote(); + } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/da782074/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriParams.java ---------------------------------------------------------------------- diff --git a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriParams.java b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriParams.java index 66c0051..fed7f7e 100644 --- a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriParams.java +++ b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriParams.java @@ -30,6 +30,7 @@ import java.lang.annotation.Target; @Documented @Target({ElementType.TYPE }) public @interface UriParams { + /** * Returns the prefix used to access nested properties of this configuration object */