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 82a19a6 CAMEL-20130: camel-yaml-dsl - Allow to use bean builder
classes when defining beans
82a19a6 is described below
commit 82a19a65774c9c082b3f600d141d24136b9dfa89
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Nov 30 10:17:07 2023 +0100
CAMEL-20130: camel-yaml-dsl - Allow to use bean builder classes when
defining beans
---
jbang/bean-builder/Customer.java | 36 +++++++++++++++++
jbang/bean-builder/CustomerBuilder.java | 34 ++++++++++++++++
jbang/bean-builder/README.adoc | 69 +++++++++++++++++++++++++++++++++
jbang/bean-builder/myapp.camel.yaml | 18 +++++++++
4 files changed, 157 insertions(+)
diff --git a/jbang/bean-builder/Customer.java b/jbang/bean-builder/Customer.java
new file mode 100644
index 0000000..0741bbb
--- /dev/null
+++ b/jbang/bean-builder/Customer.java
@@ -0,0 +1,36 @@
+package com.mycompany;
+
+public final class Customer {
+
+ private String name;
+ private String street;
+ private int zip;
+ private boolean gold;
+
+ Customer(String name, String street, int zip, boolean gold) {
+ this.name = name;
+ this.street = street;
+ this.zip = zip;
+ this.gold = gold;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getStreet() {
+ return street;
+ }
+
+ public int getZip() {
+ return zip;
+ }
+
+ public boolean isGold() {
+ return gold;
+ }
+
+ public String summary() {
+ return name + " at " + street + " (" + zip + ") is " + (gold ?
"gold" : "silver") + " customer";
+ }
+}
\ No newline at end of file
diff --git a/jbang/bean-builder/CustomerBuilder.java
b/jbang/bean-builder/CustomerBuilder.java
new file mode 100644
index 0000000..1e3b3dd
--- /dev/null
+++ b/jbang/bean-builder/CustomerBuilder.java
@@ -0,0 +1,34 @@
+package com.mycompany;
+
+public final class CustomerBuilder {
+
+ private String name;
+ private String street;
+ private int zip;
+ private boolean gold;
+
+ public CustomerBuilder name(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public CustomerBuilder street(String street) {
+ this.street = street;
+ return this;
+ }
+
+ public CustomerBuilder zip(int zip) {
+ this.zip = zip;
+ return this;
+ }
+
+ public CustomerBuilder gold(boolean gold) {
+ this.gold = gold;
+ return this;
+ }
+
+ public Customer build() {
+ return new Customer(name, street, zip, gold);
+ }
+
+}
\ No newline at end of file
diff --git a/jbang/bean-builder/README.adoc b/jbang/bean-builder/README.adoc
new file mode 100644
index 0000000..385ac02
--- /dev/null
+++ b/jbang/bean-builder/README.adoc
@@ -0,0 +1,69 @@
+== YAML with configuring Java bean via Builder class
+
+An example, of using YAML DSL with configuring a Java bean using fluent
builder class,
+to be used in the Camel route.
+
+This shows the flexibility of bean configuration in YAML DSL to make it
possible
+for non Java developers to configure beans that requires using fluent builder
class,
+with the power of low-code prgramming.
+
+
+=== 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 *
+----
+
+Or run with JBang using the longer command line (without installing camel as
app in JBang):
+
+[source,sh]
+----
+$ jbang camel@apache/camel run *
+----
+
+
+=== Live reload
+
+You can run the example in dev mode which allows you to edit the example,
+and hot-reload when the file is saved.
+
+[source,sh]
+----
+$ camel run * --dev
+----
+
+
+=== 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/bean-builder/myapp.camel.yaml
b/jbang/bean-builder/myapp.camel.yaml
new file mode 100644
index 0000000..aba4731
--- /dev/null
+++ b/jbang/bean-builder/myapp.camel.yaml
@@ -0,0 +1,18 @@
+- beans:
+ - name: myCustomer
+ type: com.mycompany.Customer
+ builderClass: com.mycompany.CustomerBuilder
+ properties:
+ name: "Acme"
+ street: "Somestreet 42"
+ zip: 90210
+ gold: true
+- from:
+ uri: "timer:yaml"
+ parameters:
+ period: "5000"
+ steps:
+ - bean:
+ ref: myCustomer
+ method: summary
+ - log: "${body}"