You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2021/12/30 12:04:46 UTC
[camel] 30/30: CAMEL-17384: Developer Console SPI
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch console
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 04f9a3b63cdfd8bae71e5cb7a1c0dd20b9b1d202
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu Dec 30 13:02:00 2021 +0100
CAMEL-17384: Developer Console SPI
---
docs/user-manual/modules/ROOT/nav.adoc | 1 +
.../modules/ROOT/pages/camel-console.adoc | 142 +++++++++++++++++++++
2 files changed, 143 insertions(+)
diff --git a/docs/user-manual/modules/ROOT/nav.adoc b/docs/user-manual/modules/ROOT/nav.adoc
index 0c9e227..88f4de7 100644
--- a/docs/user-manual/modules/ROOT/nav.adoc
+++ b/docs/user-manual/modules/ROOT/nav.adoc
@@ -4,6 +4,7 @@
* Resources & Guides
** link:/community/books/[Books]
** xref:building.adoc[Building]
+** xref:camel-console.adoc[Camel Developer Console]
** xref:camel-jbang.adoc[Camel JBang]
** xref:camel-maven-plugin.adoc[Camel Maven Plugin]
** xref:camel-component-maven-plugin.adoc[Camel Component Maven Plugin]
diff --git a/docs/user-manual/modules/ROOT/pages/camel-console.adoc b/docs/user-manual/modules/ROOT/pages/camel-console.adoc
new file mode 100644
index 0000000..a551645
--- /dev/null
+++ b/docs/user-manual/modules/ROOT/pages/camel-console.adoc
@@ -0,0 +1,142 @@
+= Camel Console
+
+The `camel-console` is available from *Camel 3.15* and newer versions.
+
+The Camel Developer Console is intended assisting developers and can display
+various information about a running Camel application.
+
+Camel comes with a set of consoles out of the box from `camel-console` and `camel-catalog-console` JARs.
+These consoles can display general information about the running JVM and the OS Environment, and of course
+Camel related information such as runtime metrics of the Camel routes, and a lot more.
+
+== Using Camel Console
+
+The `camel-console` must be added to the classpath, and enabled either via
+
+[source,java]
+----
+CamelContext context = ...
+context.setDevConsole(true);
+----
+
+If using Camel Main / Spring Boot / Quarkus etc then the console can be enabled via
+configuration:
+
+[source,properties]
+----
+camel.main.dev-console-enabled = true
+----
+
+=== Dev Console and Camel JBang
+
+The Developer Console is easily available when using xref:camel-jbang.adoc[Camel JBang],
+by the `--console` argument when running JBang.
+
+For example to run a Camel route from `foo.yaml` and additional configurations from `myapp.properties` you can run as follows
+and have the console started and accessible from `http://localhost:8080/dev`
+
+[source,bash]
+----
+$ jbang CamelJBang@apache/camel run foo.yaml myapp.properties --console
+----
+
+== Writing Custom Dev Consoles
+
+To write a custom console, you need to add `camel-console` as dependency, as it comes with the
+base class `AbstractDevConsole` which we extend for our console.
+
+[source,java]
+----
+@DevConsole("foo")
+public class FooConsole extends AbstractDevConsole {
+
+ public FooConsole() {
+ super("acme", "foo", "Foolish", "A foolish console that outputs something");
+ }
+
+ @Override
+ protected Object doCall(MediaType mediaType, Map<String, Object> options) {
+ if (mediaType.TEXT.equals(mediaType)) {
+ return "Some foolish text here";
+ } else {
+ // json structure
+ }
+ }
+
+}
+----
+
+The class must be annotated with `DevConsole` and the unique id of the console (must be unique across all consoles).
+In the constructor the console specifies which group, id, display title, and description to use.
+
+The `doCall` method is responsible for gathering the information the console should output.
+
+=== Supported Media Types
+
+A console can support any of, or all of the following types:
+
+- TEXT
+- JSON
+
+The intention for `TEXT` is to be plain/text based that can be outputted in CLI and other low-level tools.
+
+For `JSON` then the intention is the console outputs a json dataset with key/value pairs that
+holds the information, which can be displayed in a custom fashion such as in a web browser, or IDE tool such as VSCode.
+
+=== Maven Configuration
+
+To make Camel able to discover custom dev consoles, then the xref:camel-component-maven-plugin.adoc[came-component-maven-plugin]
+must be used, such as:
+
+[source,xml]
+----
+<build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-component-maven-plugin</artifactId>
+ <version>${camel-version}</version>
+ <executions>
+ <execution>
+ <id>generate</id>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ <phase>process-classes</phase>
+ </execution>
+ <execution>
+ <id>generate-postcompile</id>
+ <goals>
+ <goal>generate-postcompile</goal>
+ </goals>
+ <phase>prepare-package</phase>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ <goal>add-resource</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>src/generated/java</source>
+ </sources>
+ <resources>
+ <resource>
+ <directory>src/generated/resources</directory>
+ </resource>
+ </resources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+</build>
+----
+