You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by zb...@apache.org on 2022/09/29 09:22:52 UTC
[camel-quarkus-examples] 03/13: Convert JDBC XML routes to Java DSL
This is an automated email from the ASF dual-hosted git repository.
zbendhiba pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus-examples.git
commit 91150d4aa1fa815537b16da00f11f60c7dc754ed
Author: James Netherton <ja...@gmail.com>
AuthorDate: Thu Sep 15 12:58:00 2022 +0100
Convert JDBC XML routes to Java DSL
---
.../jdbc/{CamelResource.java => JdbcResource.java} | 15 ++------
.../src/main/java/org/acme/jdbc/JdbcRoutes.java | 34 +++++++++++++++++
.../src/main/resources/application.properties | 9 ++---
.../src/main/resources/routes/camel-routes.xml | 44 ----------------------
4 files changed, 40 insertions(+), 62 deletions(-)
diff --git a/jdbc-datasource/src/main/java/org/acme/jdbc/CamelResource.java b/jdbc-datasource/src/main/java/org/acme/jdbc/JdbcResource.java
similarity index 77%
rename from jdbc-datasource/src/main/java/org/acme/jdbc/CamelResource.java
rename to jdbc-datasource/src/main/java/org/acme/jdbc/JdbcResource.java
index f5ea1c7..2496cfa 100644
--- a/jdbc-datasource/src/main/java/org/acme/jdbc/CamelResource.java
+++ b/jdbc-datasource/src/main/java/org/acme/jdbc/JdbcResource.java
@@ -19,7 +19,6 @@ package org.acme.jdbc;
import java.sql.Connection;
import java.sql.Statement;
-import javax.annotation.PostConstruct;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.event.Observes;
import javax.inject.Inject;
@@ -30,26 +29,18 @@ import io.quarkus.runtime.StartupEvent;
import org.apache.camel.CamelContext;
@ApplicationScoped
-public class CamelResource {
+public class JdbcResource {
@Inject
@DataSource("camel-ds")
AgroalDataSource dataSource;
void startup(@Observes StartupEvent event, CamelContext context) throws Exception {
- context.getRouteController().startAllRoutes();
- }
-
- @PostConstruct
- void postConstruct() throws Exception {
try (Connection con = dataSource.getConnection()) {
try (Statement statement = con.createStatement()) {
con.setAutoCommit(true);
- try {
- statement.execute("drop table camel");
- } catch (Exception ignored) {
- }
- statement.execute("create table camel (id serial primary key, timestamp varchar(255))");
+ statement.execute("DROP TABLE IF EXISTS camel");
+ statement.execute("CREATE TABLE camel (id SERIAL PRIMARY KEY, timestamp VARCHAR(255))");
}
}
}
diff --git a/jdbc-datasource/src/main/java/org/acme/jdbc/JdbcRoutes.java b/jdbc-datasource/src/main/java/org/acme/jdbc/JdbcRoutes.java
new file mode 100644
index 0000000..c2fb0a2
--- /dev/null
+++ b/jdbc-datasource/src/main/java/org/acme/jdbc/JdbcRoutes.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.acme.jdbc;
+
+import org.apache.camel.builder.RouteBuilder;
+
+public class JdbcRoutes extends RouteBuilder {
+ @Override
+ public void configure() throws Exception {
+ from("timer://insertCamel?period=1000")
+ .log("Inserting Camel ${messageTimestamp}")
+ .setBody().simple("INSERT INTO Camel (timestamp) VALUES (${messageTimestamp})")
+ .to("jdbc:default")
+ .log("Inserted Camel ${messageTimestamp}")
+ .setBody().simple("SELECT * FROM Camel")
+ .to("jdbc:default")
+ .log("We have ${header[CamelJdbcRowCount]} camels in the database.")
+ .log("Camels found: ${body}");
+ }
+}
diff --git a/jdbc-datasource/src/main/resources/application.properties b/jdbc-datasource/src/main/resources/application.properties
index f840633..b178e02 100644
--- a/jdbc-datasource/src/main/resources/application.properties
+++ b/jdbc-datasource/src/main/resources/application.properties
@@ -20,16 +20,13 @@
quarkus.banner.enabled = false
quarkus.log.file.enable = true
-camel.main.routes-include-pattern = file:src/main/resources/routes/camel-routes.xml
-
-
-#Default datastore
+#Default DataSource
quarkus.datasource.camel-ds.db-kind=h2
-#If you want to have more than one datastore, you can use an identifier as this:
+#If you want to have more than one DataSource, you can use an identifier as this:
#quarkus.datasource.$identifier.db-kind=h2
#Then use it on the route by name
-#<to uri="jdbc:$identifier"/>
+#.to("jdbc:$identifier")
#Configure the following section to use a maven profile (called prod)
#configured database (using postgresql on this case)
diff --git a/jdbc-datasource/src/main/resources/routes/camel-routes.xml b/jdbc-datasource/src/main/resources/routes/camel-routes.xml
deleted file mode 100644
index f8aa2df..0000000
--- a/jdbc-datasource/src/main/resources/routes/camel-routes.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-
-<routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="http://camel.apache.org/schema/spring"
- xsi:schemaLocation="
- http://camel.apache.org/schema/spring
- https://camel.apache.org/schema/spring/camel-spring.xsd">
-
- <route id="jdbc-datasource-route"
- autoStartup="false">
- <from uri="timer://foo?period=1000"/>
- <log message="Inserting Camel ${messageTimestamp}"/>
- <setBody>
- <simple>INSERT INTO Camel (timestamp) VALUES (${messageTimestamp})</simple>
- </setBody>
- <to uri="jdbc:default"/>
- <log message="Inserted camel: ${messageTimestamp}"/>
- <setBody>
- <simple>SELECT * FROM Camel</simple>
- </setBody>
- <to uri="jdbc:default"/>
- <log message="We have ${header[CamelJdbcRowCount]} camels in the database."/>
- <log message="Camels found: ${body}"/>
- </route>
-
-</routes>
\ No newline at end of file