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