This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-kamelets-examples.git
The following commit(s) were added to refs/heads/main by this push: new 93bd84c camel-jbang - Allow to load OSGi <blueprint> with embedded <camelContext> 93bd84c is described below commit 93bd84c9a8980978b405dd8701e737fc62f9ac15 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Wed Aug 30 07:41:57 2023 +0200 camel-jbang - Allow to load OSGi <blueprint> with embedded <camelContext> --- jbang/blueprint-to-yaml/.gitignore | 2 + jbang/blueprint-to-yaml/Address.java | 24 ++++++++++ jbang/blueprint-to-yaml/OrderService.java | 35 +++++++++++++++ jbang/blueprint-to-yaml/README.adoc | 61 ++++++++++++++++++++++++++ jbang/blueprint-to-yaml/application.properties | 2 + jbang/blueprint-to-yaml/order-blueprint.xml | 32 ++++++++++++++ 6 files changed, 156 insertions(+) diff --git a/jbang/blueprint-to-yaml/.gitignore b/jbang/blueprint-to-yaml/.gitignore new file mode 100644 index 0000000..898d599 --- /dev/null +++ b/jbang/blueprint-to-yaml/.gitignore @@ -0,0 +1,2 @@ +dump +my-dump \ No newline at end of file diff --git a/jbang/blueprint-to-yaml/Address.java b/jbang/blueprint-to-yaml/Address.java new file mode 100644 index 0000000..c251979 --- /dev/null +++ b/jbang/blueprint-to-yaml/Address.java @@ -0,0 +1,24 @@ +package com.foo; + +public class Address { + + private int zip; + private String street; + + public int getZip() { + return zip; + } + + public void setZip(int zip) { + this.zip = zip; + } + + public String getStreet() { + return street; + } + + public void setStreet(String street) { + this.street = street; + } + +} \ No newline at end of file diff --git a/jbang/blueprint-to-yaml/OrderService.java b/jbang/blueprint-to-yaml/OrderService.java new file mode 100644 index 0000000..3f2e86c --- /dev/null +++ b/jbang/blueprint-to-yaml/OrderService.java @@ -0,0 +1,35 @@ +package com.foo; + +import com.foo.Address; + +public class OrderService { + + private String customer; + private Address address; + + public OrderService(boolean customer, Address address) { + this.customer = customer ? "Acme" : "None"; + this.address = address; + } + + public void setCustomer(String customer) { + this.customer = customer; + } + + public String getCustomer() { + return customer; + } + + public void setAddress(Address address) { + this.address = address; + } + + public Address getAddress() { + return address; + } + + public String processorOrder(String id) { + return "Order2 " + id + " ordered by " + customer + " to " + address.getStreet(); + } + +} \ No newline at end of file diff --git a/jbang/blueprint-to-yaml/README.adoc b/jbang/blueprint-to-yaml/README.adoc new file mode 100644 index 0000000..a2d4bcb --- /dev/null +++ b/jbang/blueprint-to-yaml/README.adoc @@ -0,0 +1,61 @@ +== XML to YAML + +This example shows legacy OSGi Blueprint XML file with <blueprint> and <camelContext> with embedded <route>. + +The XML can be migrated to YAML DSL using Camel JBang. + +=== Install JBang + +First install JBang according to https://www.jbang.dev + +When JBang is installed then you should be able to run from a shell: + +[source,sh] +---- +$ jbang --version +---- + +This will output the version of JBang. + +To run this example you can either install Camel on JBang via: + +[source,sh] +---- +$ jbang app install camel@apache/camel +---- + +Which allows to run CamelJBang with `camel` as shown below. + +=== How to run + +Then you can run this example using: + +[source,sh] +---- +$ camel run * +---- + +=== Transforming to YAML + +The example will on startup transform the source from XML to YAML and save +this into dump sub directory. + +This can also be done explicit from CLI, by executing: + +[source,sh] +---- +$ camel transform * --format=yaml --output=my-dump +---- + +This will transform the XML DSL into YAML DSL and store the output in the my-dump directory. + + +=== Help and contributions + +If you hit any problem using Camel or have some feedback, then please +https://camel.apache.org/community/support/[let us know]. + +We also love contributors, so +https://camel.apache.org/community/contributing/[get involved] :-) + +The Camel riders! diff --git a/jbang/blueprint-to-yaml/application.properties b/jbang/blueprint-to-yaml/application.properties new file mode 100644 index 0000000..ef1be51 --- /dev/null +++ b/jbang/blueprint-to-yaml/application.properties @@ -0,0 +1,2 @@ +zipCode = 90210 +streetName = Gardenstreet 444 diff --git a/jbang/blueprint-to-yaml/order-blueprint.xml b/jbang/blueprint-to-yaml/order-blueprint.xml new file mode 100644 index 0000000..b71d868 --- /dev/null +++ b/jbang/blueprint-to-yaml/order-blueprint.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation=" + http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"> + + <!-- beans --> + <bean id="orderService" class="com.foo.OrderService"> + <argument index="0" value="true"/> + <argument index="1" ref="office"/> + </bean> + <!-- uses blueprint property placeholder ${xxx} syntax --> + <bean id="office" class="com.foo.Address"> + <property name="zip" value="${zipCode}"/> + <property name="street" value="${streetName}"/> + </bean> + + <!-- embed Camel with routes --> + <camelContext xmlns="http://camel.apache.org/schema/blueprint"> + + <route> + <from uri="timer:xml?period={{time:1000}}"/> + <setBody> + <simple>${random(1000)}</simple> + </setBody> + <bean ref="orderService"/> + <log message="${body}"/> + </route> + + </camelContext> + +</blueprint>