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
      */

Reply via email to