Repository: camel
Updated Branches:
  refs/heads/master 126f8ffc5 -> c2614eee5


First cut of mvn goal to generate/update component readme.md file. Make the 
plugin update the existing adoc file to keep the endpoint options up to date.


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

Branch: refs/heads/master
Commit: bf4b8843b4c95c69ced1e2bf2f932bb40a02d555
Parents: 126f8ff
Author: Claus Ibsen <davscl...@apache.org>
Authored: Wed Jan 27 10:40:40 2016 +0100
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Wed Jan 27 10:40:40 2016 +0100

----------------------------------------------------------------------
 components/camel-ahc/src/main/docs/ahc.adoc     | 54 +-----------------
 .../camel/maven/packaging/PackageHelper.java    | 10 ++++
 .../maven/packaging/ReadmeComponentMojo.java    | 58 +++++++++++++++++---
 .../src/main/resources/endpoint-options.mvel    | 11 ++--
 4 files changed, 69 insertions(+), 64 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/bf4b8843/components/camel-ahc/src/main/docs/ahc.adoc
----------------------------------------------------------------------
diff --git a/components/camel-ahc/src/main/docs/ahc.adoc 
b/components/camel-ahc/src/main/docs/ahc.adoc
index e5c1b14..2a37109 100644
--- a/components/camel-ahc/src/main/docs/ahc.adoc
+++ b/components/camel-ahc/src/main/docs/ahc.adoc
@@ -43,58 +43,8 @@ You can append query options to the URI in the following 
format,
 AhcEndpoint Options
 ^^^^^^^^^^^^^^^^^^^
 
-[width="100%",cols="10%,10%,80%",options="header",]
-|=======================================================================
-|Name |Default Value |Description
-|`throwExceptionOnFailure` |`true` |Option to disable throwing the 
`AhcOperationFailedException` in case of
-failed responses from the remote server. This allows you to get all
-responses regardless of the HTTP status code.
-
-|`bridgeEndpoint` |`false` |If the option is true, then the Exchange.HTTP_URI 
header is ignored, and
-use the endpoint's URI for request. You may also set the
-*throwExcpetionOnFailure* to be false to let the AhcProducer send all
-the fault response back.
-
-|`transferException` |`false` |If enabled and an link:exchange.html[Exchange] 
failed processing on the
-consumer side, and if the caused `Exception` was send back serialized in
-the response as a `application/x-java-serialized-object` content type
-(for example using link:jetty.html[Jetty] or link:servlet.html[Servlet]
-Camel components). On the producer side the exception will be
-deserialized and thrown as is, instead of the
-`AhcOperationFailedException`. The caused exception is required to be
-serialized.
-
-|`client` |`null` |To use a custom `com.ning.http.client.AsyncHttpClient`.
-
-|`clientConfig` |`null` |To configure the `AsyncHttpClient` to use a custom
-`com.ning.http.client.AsyncHttpClientConfig` instance. This instance
-replaces any instance configured at the component level.
-
-|`clientConfig.x` |`null` |To configure additional properties of the
-`com.ning.http.client.AsyncHttpClientConfig` instance used by the
-endpoint. Note that configuration options set using this parameter will
-be merged with those set using the `clientConfig` parameter or the
-instance set at the component level with properties set using this
-parameter taking priority.
-
-|`clientConfig.realm.x` |`null` |*Camel 2.11:* To configure realm properties 
of the
-`com.ning.http.client.AsyncHttpClientConfig` The options which can be
-used are the options from `com.ning.http.client.Realm.RealmBuilder`. eg
-to set scheme, you can configure `"clientConfig.realm.scheme=DIGEST"`
-
-|`binding` |`null` |To use a custom 
`org.apache.camel.component.ahc.AhcBinding`.
-
-|`sslContextParameters` |`null` | *Camel 2.9:* Reference to a
-`org.apache.camel.util.jsse.SSLContextParameters` in the
-link:registry.html[Registry].  This reference overrides any configured
-SSLContextParameters at the component level.  See link:ahc.html[Using
-the JSSE Configuration Utility].  Note that configuring this option will
-override any SSL/TLS configuration options provided through the
-clientConfig option at the endpoint or component level.
-
-|`bufferSize` |`4096` | *Camel 2.10.3:* The initial in-memory buffer size used 
when transferring
-data between Camel and AHC Client.
-|=======================================================================
+//// endpoint options: START
+//// endpoint options: END
 
 [[AHC-AhcComponentOptions]]
 AhcComponent Options

http://git-wip-us.apache.org/repos/asf/camel/blob/bf4b8843/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageHelper.java
----------------------------------------------------------------------
diff --git 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageHelper.java
 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageHelper.java
index 02e00e4..c84768f 100644
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageHelper.java
+++ 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageHelper.java
@@ -19,6 +19,7 @@ package org.apache.camel.maven.packaging;
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileFilter;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
@@ -83,6 +84,15 @@ public final class PackageHelper {
         }
     }
 
+    public static void writeText(File file, String text) throws IOException {
+        FileOutputStream fos = new FileOutputStream(file, false);
+        try {
+            fos.write(text.getBytes());
+        } finally {
+            fos.close();
+        }
+    }
+
     public static String after(String text, String after) {
         if (!text.contains(after)) {
             return null;

http://git-wip-us.apache.org/repos/asf/camel/blob/bf4b8843/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ReadmeComponentMojo.java
----------------------------------------------------------------------
diff --git 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ReadmeComponentMojo.java
 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ReadmeComponentMojo.java
index 5953ee9..09a7811 100644
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ReadmeComponentMojo.java
+++ 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ReadmeComponentMojo.java
@@ -34,12 +34,12 @@ import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.project.MavenProject;
-
 import org.mvel2.templates.TemplateRuntime;
 import org.sonatype.plexus.build.incremental.BuildContext;
 
 import static org.apache.camel.maven.packaging.JSonSchemaHelper.getSafeValue;
 import static org.apache.camel.maven.packaging.PackageHelper.loadText;
+import static org.apache.camel.maven.packaging.PackageHelper.writeText;
 
 /**
  * Generate or updates the component readme.md file in the project root 
directory.
@@ -58,13 +58,20 @@ public class ReadmeComponentMojo extends AbstractMojo {
     protected MavenProject project;
 
     /**
-     * The output directory for generated readme file
+     * The project build directory
      *
      * @parameter default-value="${project.build.directory}"
      */
     protected File buildDir;
 
     /**
+     * The documentation directory
+     *
+     * @parameter default-value="${basedir}/src/main/docs"
+     */
+    protected File docDir;
+
+    /**
      * build context to check changed files and mark them for refresh (used for
      * m2e compatibility)
      *
@@ -81,26 +88,63 @@ public class ReadmeComponentMojo extends AbstractMojo {
         final Set<File> jsonFiles = new TreeSet<File>();
         PackageHelper.findJsonFiles(buildDir, jsonFiles, new 
PackageHelper.CamelComponentsModelFilter());
 
-        // only if there is components we should create/update the readme file
+        // only if there is components we should update the documentation files
         if (!componentNames.isEmpty()) {
             getLog().info("Found " + componentNames.size() + " components");
-            File readmeFile = initReadMeFile();
 
             for (String componentName : componentNames) {
                 String json = loadComponentJson(jsonFiles, componentName);
                 if (json != null) {
+
+                    // file
+                    File file = new File(docDir, componentName + ".adoc");
+
                     ComponentModel model = 
generateComponentModel(componentName, json);
                     String header = templateComponentHeader(model);
                     String options = templateComponentOptions(model);
                     String options2 = templateEndpointOptions(model);
-                    getLog().info(header);
-                    getLog().info(options);
-                    getLog().info(options2);
+
+//                    getLog().info(header);
+//                    getLog().info(options);
+//                    getLog().info(options2);
+
+                    // update the endpoint options
+                    updateEndpointOptions(file, options2);
                 }
             }
         }
     }
 
+    private void updateEndpointOptions(File file, String changed) throws 
MojoExecutionException {
+        if (!file.exists()) {
+            return;
+        }
+
+        try {
+            String text = loadText(new FileInputStream(file));
+
+            String existing = StringHelper.between(text, "//// endpoint 
options: START", "//// endpoint options: END");
+            if (existing != null) {
+                if (existing.equals(changed)) {
+                    getLog().info("No changes to file: " + file);
+                } else {
+                    getLog().info("Updating file: " + file);
+                    String before = StringHelper.before(text, "//// endpoint 
options: START");
+                    String after = StringHelper.after(text, "//// endpoint 
options: END");
+                    text = before + changed + after;
+                    writeText(file, text);
+                }
+            } else {
+                getLog().warn("Cannot find markers in file " + file);
+                getLog().warn("Add the following markers");
+                getLog().warn("\t//// endpoint options: START");
+                getLog().warn("\t//// endpoint options: END");
+            }
+        } catch (Exception e) {
+            throw new MojoExecutionException("Error reading file " + file + " 
Reason: " + e, e);
+        }
+    }
+
     private String loadComponentJson(Set<File> jsonFiles, String 
componentName) {
         try {
             for (File file : jsonFiles) {

http://git-wip-us.apache.org/repos/asf/camel/blob/bf4b8843/tooling/maven/camel-package-maven-plugin/src/main/resources/endpoint-options.mvel
----------------------------------------------------------------------
diff --git 
a/tooling/maven/camel-package-maven-plugin/src/main/resources/endpoint-options.mvel
 
b/tooling/maven/camel-package-maven-plugin/src/main/resources/endpoint-options.mvel
index b7f10b3..51e6821 100644
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/resources/endpoint-options.mvel
+++ 
b/tooling/maven/camel-package-maven-plugin/src/main/resources/endpoint-options.mvel
@@ -1,8 +1,9 @@
-### Endpoint options
-
+//// endpoint options: START
 The @{title} component supports @{endpointOptions.size()} endpoint options 
which are listed below:
 
+[width="100%",cols="10%,5%,5%,10%,5%,65%",options="header",]
+|=======================================================================
 | Name | Group | Required | Default | Java Type | Description |
-| ---- | ----- | -------- | ------- | --------- | ----------- |
-@foreach{row : endpointOptions}| @{row.name} | @{row.group} | @{row.required} 
| @{row.defaultValue} | @{row.shortJavaType} | @{row.description} |
-@end{}
+@foreach{row : endpointOptions}| `@{row.name}` | `@{row.group}` | 
`@{row.required}` | `@{row.defaultValue}` | `@{row.shortJavaType}` | 
@{row.description} |
+@end{}|=======================================================================
+//// endpoint options: END
\ No newline at end of file

Reply via email to