The test
org.apache.camel.component.ComponentDiscoveryTest.testComponentDocumentation()
fails on Java 6 [1].
Could you please check it...

[1]
https://builds.apache.org/view/A-D/view/Camel/job/Camel.trunk.fulltest/org.apache.camel$camel-core/1376/testReport/org.apache.camel.component/ComponentDiscoveryTest/testComponentDocumentation/

Best,

Christian Müller
-----------------

Software Integration Specialist

Apache Camel committer: https://camel.apache.org/team
V.P. Apache Camel: https://www.apache.org/foundation/
Apache Member: https://www.apache.org/foundation/members.html

https://www.linkedin.com/pub/christian-mueller/11/551/642


On Sun, Jun 9, 2013 at 3:59 PM, <[email protected]> wrote:

> Updated Branches:
>   refs/heads/master 868a358ad -> 3ec75ec79
>
>
> expose the component HTML to the CamelContext and the MBean so it can be
> displayed by tooling
>
>
> Project: http://git-wip-us.apache.org/repos/asf/camel/repo
> Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/3ec75ec7
> Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/3ec75ec7
> Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/3ec75ec7
>
> Branch: refs/heads/master
> Commit: 3ec75ec79f29658b2e840787701e71885a5bdaae
> Parents: 868a358
> Author: James Strachan <[email protected]>
> Authored: Sun Jun 9 09:55:38 2013 -0400
> Committer: James Strachan <[email protected]>
> Committed: Sun Jun 9 09:58:09 2013 -0400
>
> ----------------------------------------------------------------------
>  .../java/org/apache/camel/CamelContext.java     |  6 +++++
>  .../mbean/ManagedCamelContextMBean.java         |  9 +++++++
>  .../apache/camel/impl/DefaultCamelContext.java  | 12 ++++++++++
>  .../management/mbean/ManagedCamelContext.java   |  5 ++++
>  .../apache/camel/util/CamelContextHelper.java   |  1 +
>  .../java/org/apache/camel/util/IOHelper.java    | 25 ++++++++++++++++++++
>  .../camel/component/ComponentDiscoveryTest.java |  9 +++++++
>  .../camel/blueprint/BlueprintCamelContext.java  |  5 ++++
>  .../core/osgi/OsgiDefaultCamelContext.java      |  5 ++++
>  .../core/osgi/utils/BundleContextUtils.java     | 19 +++++++++++++++
>  10 files changed, 96 insertions(+)
> ----------------------------------------------------------------------
>
>
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/3ec75ec7/camel-core/src/main/java/org/apache/camel/CamelContext.java
> ----------------------------------------------------------------------
> diff --git a/camel-core/src/main/java/org/apache/camel/CamelContext.java
> b/camel-core/src/main/java/org/apache/camel/CamelContext.java
> index 5b2b4f6..7f467f1 100644
> --- a/camel-core/src/main/java/org/apache/camel/CamelContext.java
> +++ b/camel-core/src/main/java/org/apache/camel/CamelContext.java
> @@ -1205,4 +1205,10 @@ public interface CamelContext extends
> SuspendableService, RuntimeConfiguration {
>       * @throws Exception is thrown if error occurred
>       */
>      Map<String,Properties> findComponents() throws
> LoadPropertiesException, IOException;
> +
> +
> +    /**
> +     * Returns the HTML documentation for the given camel component
> +     */
> +    String getComponentDocumentation(String componentName) throws
> IOException;
>  }
>
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/3ec75ec7/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java
> ----------------------------------------------------------------------
> diff --git
> a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java
> b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java
> index 4af6d3d..514fdbe 100644
> ---
> a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java
> +++
> b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java
> @@ -16,6 +16,7 @@
>   */
>  package org.apache.camel.api.management.mbean;
>
> +import java.io.IOException;
>  import java.util.List;
>  import java.util.Map;
>  import java.util.Properties;
> @@ -219,4 +220,12 @@ public interface ManagedCamelContextMBean extends
> ManagedPerformanceCounterMBean
>      @ManagedOperation(description = "Returns the list of available
> endpoint paths for the given component name, endpoint properties and
> completion text")
>      List<String> completeEndpointPath(String componentName, Map<String,
> Object> endpointParameters, String completionText) throws Exception;
>
> +    /**
> +     * Returns the HTML documentation for the given camel component
> +     *
> +     * @param componentName  the component name
> +     */
> +    @ManagedOperation(description = "Returns the HTML documentation for
> the given camel component")
> +    String getComponentDocumentation(String componentName) throws
> IOException;
> +
>  }
> \ No newline at end of file
>
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/3ec75ec7/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
> ----------------------------------------------------------------------
> diff --git
> a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
> b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
> index c61c79f..22fa6e1 100644
> ---
> a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
> +++
> b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
> @@ -18,11 +18,13 @@ package org.apache.camel.impl;
>
>  import java.io.IOException;
>  import java.io.InputStream;
> +import java.net.URL;
>  import java.util.ArrayList;
>  import java.util.Arrays;
>  import java.util.Collection;
>  import java.util.Collections;
>  import java.util.Date;
> +import java.util.Enumeration;
>  import java.util.HashMap;
>  import java.util.Iterator;
>  import java.util.LinkedHashMap;
> @@ -125,6 +127,7 @@ import org.apache.camel.support.ServiceSupport;
>  import org.apache.camel.util.CamelContextHelper;
>  import org.apache.camel.util.EndpointHelper;
>  import org.apache.camel.util.EventHelper;
> +import org.apache.camel.util.IOHelper;
>  import org.apache.camel.util.IntrospectionSupport;
>  import org.apache.camel.util.LoadPropertiesException;
>  import org.apache.camel.util.ObjectHelper;
> @@ -1011,6 +1014,15 @@ public class DefaultCamelContext extends
> ServiceSupport implements ModelCamelCon
>          return CamelContextHelper.findComponents(this);
>      }
>
> +    public String getComponentDocumentation(String componentName) throws
> IOException {
> +        String path = CamelContextHelper.COMPONENT_DOCUMENTATION_PREFIX +
> componentName + ".html";
> +        InputStream inputStream =
> getClassResolver().loadResourceAsStream(path);
> +        if (inputStream != null) {
> +            return IOHelper.loadText(inputStream);
> +        }
> +        return null;
> +    }
> +
>      // Helper methods
>      //
> -----------------------------------------------------------------------
>
>
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/3ec75ec7/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java
> ----------------------------------------------------------------------
> diff --git
> a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java
> b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java
> index d01d3d0..eed4cff 100644
> ---
> a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java
> +++
> b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java
> @@ -16,6 +16,7 @@
>   */
>  package org.apache.camel.management.mbean;
>
> +import java.io.IOException;
>  import java.io.InputStream;
>  import java.util.ArrayList;
>  import java.util.Collection;
> @@ -345,6 +346,10 @@ public class ManagedCamelContext extends
> ManagedPerformanceCounter implements Ti
>          return context.findComponents();
>      }
>
> +    public String getComponentDocumentation(String componentName) throws
> IOException {
> +        return context.getComponentDocumentation(componentName);
> +    }
> +
>      public List<String> findComponentNames() throws Exception {
>          Map<String, Properties> map = findComponents();
>          return new ArrayList<String>(map.keySet());
>
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/3ec75ec7/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java
> ----------------------------------------------------------------------
> diff --git
> a/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java
> b/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java
> index 40d7a1c..fc81164 100644
> ---
> a/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java
> +++
> b/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java
> @@ -46,6 +46,7 @@ import static org.apache.camel.util.ObjectHelper.notNull;
>   */
>  public final class CamelContextHelper {
>      public static final String COMPONENT_DESCRIPTOR =
> "META-INF/services/org/apache/camel/component.properties";
> +    public static final String COMPONENT_DOCUMENTATION_PREFIX =
> "org/apache/camel/component/";
>
>      /**
>       * Utility classes should not have a public constructor.
>
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/3ec75ec7/camel-core/src/main/java/org/apache/camel/util/IOHelper.java
> ----------------------------------------------------------------------
> diff --git a/camel-core/src/main/java/org/apache/camel/util/IOHelper.java
> b/camel-core/src/main/java/org/apache/camel/util/IOHelper.java
> index 6799274..ca4b82f 100644
> --- a/camel-core/src/main/java/org/apache/camel/util/IOHelper.java
> +++ b/camel-core/src/main/java/org/apache/camel/util/IOHelper.java
> @@ -24,6 +24,7 @@ import java.io.Closeable;
>  import java.io.FileOutputStream;
>  import java.io.IOException;
>  import java.io.InputStream;
> +import java.io.InputStreamReader;
>  import java.io.OutputStream;
>  import java.io.Reader;
>  import java.io.UnsupportedEncodingException;
> @@ -413,4 +414,28 @@ public final class IOHelper {
>      private static String getDefaultCharsetName() {
>          return
> ObjectHelper.getSystemProperty(Exchange.DEFAULT_CHARSET_PROPERTY, "UTF-8");
>      }
> +
> +    /**
> +     * Loads the entire stream into memory as a String and returns it.
> +     *
> +     * Warning, don't use for crazy big streams :)
> +     */
> +    public static String loadText(InputStream in) throws IOException {
> +        StringBuilder builder = new StringBuilder();
> +        try {
> +            BufferedReader reader = buffered(new InputStreamReader(in));
> +            while (true) {
> +                String line = reader.readLine();
> +                if (line != null) {
> +                    builder.append(line);
> +                    builder.append("\n");
> +                } else {
> +                    break;
> +                }
> +            }
> +            return builder.toString();
> +        } finally {
> +            close(in);
> +        }
> +    }
>  }
>
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/3ec75ec7/camel-core/src/test/java/org/apache/camel/component/ComponentDiscoveryTest.java
> ----------------------------------------------------------------------
> diff --git
> a/camel-core/src/test/java/org/apache/camel/component/ComponentDiscoveryTest.java
> b/camel-core/src/test/java/org/apache/camel/component/ComponentDiscoveryTest.java
> index 5ab56e1..903dff7 100644
> ---
> a/camel-core/src/test/java/org/apache/camel/component/ComponentDiscoveryTest.java
> +++
> b/camel-core/src/test/java/org/apache/camel/component/ComponentDiscoveryTest.java
> @@ -56,4 +56,13 @@ public class ComponentDiscoveryTest {
>              LOG.info("Found component " + entry.getKey() + " with
> properties: " + entry.getValue());
>          }
>      }
> +
> +    @Test
> +    public void testComponentDocumentation() throws Exception {
> +        CamelContext context = new DefaultCamelContext();
> +        String html = context.getComponentDocumentation("bean");
> +        assertNotNull("Should have found some auto-generated HTML if on
> Java 7", html);
> +        LOG.info("HTML: " + html);
> +    }
> +
>  }
>
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/3ec75ec7/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
> ----------------------------------------------------------------------
> diff --git
> a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
> b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
> index 8a86bf6..60f0b4d 100644
> ---
> a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
> +++
> b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
> @@ -120,6 +120,11 @@ public class BlueprintCamelContext extends
> DefaultCamelContext implements Servic
>      }
>
>      @Override
> +    public String getComponentDocumentation(String componentName) throws
> IOException {
> +        return
> BundleContextUtils.getComponentDocumentation(bundleContext, this,
> componentName);
> +    }
> +
> +    @Override
>      public void blueprintEvent(BlueprintEvent event) {
>          // noop as we just needed to enlist the BlueprintListener to have
> events triggered to serviceChanged method
>      }
>
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/3ec75ec7/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiDefaultCamelContext.java
> ----------------------------------------------------------------------
> diff --git
> a/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiDefaultCamelContext.java
> b/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiDefaultCamelContext.java
> index d049f1c..7329a7b 100644
> ---
> a/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiDefaultCamelContext.java
> +++
> b/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiDefaultCamelContext.java
> @@ -49,6 +49,11 @@ public class OsgiDefaultCamelContext extends
> DefaultCamelContext {
>      }
>
>      @Override
> +    public String getComponentDocumentation(String componentName) throws
> IOException {
> +        return
> BundleContextUtils.getComponentDocumentation(bundleContext, this,
> componentName);
> +    }
> +
> +    @Override
>      protected Registry createRegistry() {
>          if (registry != null) {
>              return OsgiCamelContextHelper.wrapRegistry(this, registry,
> bundleContext);
>
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/3ec75ec7/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/utils/BundleContextUtils.java
> ----------------------------------------------------------------------
> diff --git
> a/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/utils/BundleContextUtils.java
> b/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/utils/BundleContextUtils.java
> index 85a0961..015f8a6 100644
> ---
> a/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/utils/BundleContextUtils.java
> +++
> b/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/utils/BundleContextUtils.java
> @@ -17,6 +17,7 @@
>  package org.apache.camel.core.osgi.utils;
>
>  import java.io.IOException;
> +import java.io.InputStream;
>  import java.lang.reflect.Method;
>  import java.net.URL;
>  import java.util.Arrays;
> @@ -29,6 +30,7 @@ import java.util.TreeMap;
>  import org.apache.camel.CamelContext;
>  import org.apache.camel.spi.ComponentResolver;
>  import org.apache.camel.util.CamelContextHelper;
> +import org.apache.camel.util.IOHelper;
>  import org.apache.camel.util.LoadPropertiesException;
>  import org.osgi.framework.Bundle;
>  import org.osgi.framework.BundleContext;
> @@ -92,4 +94,21 @@ public final class BundleContextUtils {
>          }
>          return answer;
>      }
> +
> +    public static String getComponentDocumentation(BundleContext
> bundleContext,
> +                                                   CamelContext
> camelContext,
> +                                                   String componentName)
> throws IOException {
> +        String path = CamelContextHelper.COMPONENT_DOCUMENTATION_PREFIX +
> componentName + ".html";
> +        Bundle[] bundles = bundleContext.getBundles();
> +        for (Bundle bundle : bundles) {
> +            URL resource = bundle.getResource(path);
> +            if (resource != null) {
> +                InputStream inputStream = resource.openStream();
> +                if (inputStream != null) {
> +                    return IOHelper.loadText(inputStream);
> +                }
> +            }
> +        }
> +        return null;
> +    }
>  }
>
>

Reply via email to