diff --git a/.gitignore b/.gitignore
index 185ccfb..06a84e9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,7 +2,3 @@
/.classpath
/.project
/.settings
-/conf/
-/conf2/
-/bruno/
-/backup/
diff --git a/bruno/bruno.json b/bruno/bruno.json
new file mode 100644
index 0000000..e4d2338
--- /dev/null
+++ b/bruno/bruno.json
@@ -0,0 +1,9 @@
+{
+ "version": "1",
+ "name": "camel-springboot-xml-example",
+ "type": "collection",
+ "ignore": [
+ "node_modules",
+ ".git"
+ ]
+}
\ No newline at end of file
diff --git a/bruno/collection.bru b/bruno/collection.bru
new file mode 100644
index 0000000..81213d3
--- /dev/null
+++ b/bruno/collection.bru
@@ -0,0 +1,8 @@
+auth {
+ mode: basic
+}
+
+auth:basic {
+ username:
+ password:
+}
diff --git a/bruno/findSession.bru b/bruno/findSession.bru
new file mode 100644
index 0000000..de3635d
--- /dev/null
+++ b/bruno/findSession.bru
@@ -0,0 +1,20 @@
+meta {
+ name: findSession
+ type: http
+ seq: 4
+}
+
+get {
+ url: http://localhost:8761/services/api/session/d4415f6c-da1d-435c-95be-73bafe165768
+ body: none
+ auth: basic
+}
+
+headers {
+ operationName: findUsers
+}
+
+auth:basic {
+ username: cxfrs
+ password: password
+}
diff --git a/bruno/findSessions.bru b/bruno/findSessions.bru
new file mode 100644
index 0000000..c583471
--- /dev/null
+++ b/bruno/findSessions.bru
@@ -0,0 +1,20 @@
+meta {
+ name: findSessions
+ type: http
+ seq: 2
+}
+
+get {
+ url: http://localhost:8761/services/api/session
+ body: none
+ auth: basic
+}
+
+headers {
+ operationName: findUsers
+}
+
+auth:basic {
+ username: cxfrs
+ password: password
+}
diff --git a/bruno/updateSession.bru b/bruno/updateSession.bru
new file mode 100644
index 0000000..29691aa
--- /dev/null
+++ b/bruno/updateSession.bru
@@ -0,0 +1,33 @@
+meta {
+ name: updateSession
+ type: http
+ seq: 3
+}
+
+post {
+ url: http://localhost:8761/services/api/session
+ body: json
+ auth: basic
+}
+
+headers {
+ Content-Type: application/json
+ X-MethodName: updateUser
+}
+
+auth:basic {
+ username: cxfrs
+ password: password
+}
+
+body:json {
+ {
+ "sessionId": "{{uuid}}",
+ "username": "admin",
+ "password": "@dminPwd123"
+ }
+}
+
+script:pre-request {
+ bru.setVar('uuid', require("uuid").v4());
+}
diff --git a/conf/logback.xml b/conf/logback.xml
new file mode 100644
index 0000000..6e82d34
--- /dev/null
+++ b/conf/logback.xml
@@ -0,0 +1,26 @@
+
+
+
+
+ %-5level %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n
+
+
+
+ logs/server.log
+
+ logs/server.%d{yyyy-MM-dd}.log.gz
+ 3
+ 300MB
+
+
+ %-5level %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/conf/springboot.yml b/conf/springboot.yml
new file mode 100644
index 0000000..ee9f267
--- /dev/null
+++ b/conf/springboot.yml
@@ -0,0 +1,21 @@
+server:
+ port: 8761
+
+camel:
+ springboot:
+ main-run-controller: true
+
+spring:
+ ldap:
+ urls: ldap://localhost:10389
+ base: dc=example,dc=com
+ username: uid=admin,ou=system
+ password: secret
+
+app:
+ queue-name: "SessionServiceQueue"
+ database:
+ url: "jdbc:h2:tcp://localhost/~/h2/db/appdb"
+ username: "app"
+ password: "app"
+ mapper-package: "com.example.sbcamel.mapper"
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 5f71cd7..c64fad2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,21 +4,19 @@
4.0.0
com.example
camel-springboot-activemq6-example
- 3.3.0
+ 3.4.0
camel-springboot-activemq6-example
UTF-8
17
17
- 4.8.4
- 3.4.4
- 2024.0.1
+ 4.10.6
+ 3.4.6
3.5.19
3.0.4
33.1.0-jre
3.14.0
- 1.19.1
1.6.2
@@ -38,13 +36,6 @@
pom
import
-
- org.springframework.cloud
- spring-cloud-dependencies
- ${spring-cloud-dependencies.version}
- pom
- import
-
@@ -66,10 +57,6 @@
org.springframework.security
spring-security-ldap
-
- org.springframework.cloud
- spring-cloud-starter-netflix-eureka-server
-
org.springframework
spring-jdbc
@@ -79,6 +66,10 @@
org.apache.camel.springboot
camel-log-starter
+
+ org.apache.camel.springboot
+ camel-seda-starter
+
org.apache.camel.springboot
camel-bean-starter
@@ -91,10 +82,6 @@
org.apache.camel.springboot
camel-cxf-rest-starter
-
- org.apache.camel.springboot
- camel-activemq6-starter
-
org.apache.camel.springboot
camel-jackson-starter
@@ -110,10 +97,6 @@
guava
${guava.version}
-
- org.htmlunit
- htmlunit
-
com.h2database
h2
@@ -141,11 +124,6 @@
org.apache.commons
commons-lang3
-
- org.jsoup
- jsoup
- ${jsoup.version}
-
org.apache.httpcomponents.client5
httpclient5
diff --git a/readme.md b/readme.md
index 6c022ce..334a205 100644
--- a/readme.md
+++ b/readme.md
@@ -4,12 +4,9 @@
```
ApacheDS Server 2.0.0.AM27
- Apache ActiveMQ 6.1.5
H2 Database Version 2.3.232
```
-
-2. Please see conf/springboot.yml for LDAP/ActiveMQ Address
-3. For LDAP group and user setup, see misc/ldapdb.ldif
+2. For LDAP group and user setup, see misc/ldapdb.ldif
## Startup screens
@@ -47,55 +44,8 @@ Starting ApacheDS instance 'default'...
```
-**2. Apache ActiveMQ 6.1.5**
-
-```
-C:\Users\XXX\apache-activemq-6.1.5\bin>activemq start
-
-Warning: JAVA_HOME environment variable is not set.
-
-Java Runtime: Oracle Corporation 17.0.14 C:\Users\XXX\graalvm-jdk-17.0.14+8.1
- Heap sizes: current=1048576k free=1039360k max=1048576k
- JVM args: -XX:ThreadPriorityPolicy=1 -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCIProduct -XX:-UnlockExperimentalVMOptions -Dcom.sun.management.jmxremote -Xms1G -Xmx1G -Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=C:\Users\XXX\apache-activemq-6.1.5\bin\..\conf\login.config -Dactivemq.classpath=C:\Users\XXX\apache-activemq-6.1.5\bin\..\conf;C:\Users\XXX\apache-activemq-6.1.5\bin\../conf;C:\Users\XXX\apache-activemq-6.1.5\bin\../conf; -Dactivemq.home=C:\Users\XXX\apache-activemq-6.1.5\bin\.. -Dactivemq.base=C:\Users\XXX\apache-activemq-6.1.5\bin\.. -Dactivemq.conf=C:\Users\XXX\apache-activemq-6.1.5\bin\..\conf -Dactivemq.data=C:\Users\XXX\apache-activemq-6.1.5\bin\..\data -Djolokia.conf=file:C:\\Users\\XXX\\apache-activemq-6.1.5\\bin\\..\\conf\\jolokia-access.xml -Djava.io.tmpdir=C:\Users\XXX\apache-activemq-6.1.5\bin\..\data\tmp
-Extensions classpath:
- [C:\Users\XXX\apache-activemq-6.1.5\bin\..\lib,C:\Users\XXX\apache-activemq-6.1.5\bin\..\lib\camel,C:\Users\XXX\apache-activemq-6.1.5\bin\..\lib\optional,C:\Users\XXX\apache-activemq-6.1.5\bin\..\lib\web,C:\Users\XXX\apache-activemq-6.1.5\bin\..\lib\extra]
-ACTIVEMQ_HOME: C:\Users\XXX\apache-activemq-6.1.5\bin\..
-ACTIVEMQ_BASE: C:\Users\XXX\apache-activemq-6.1.5\bin\..
-ACTIVEMQ_CONF: C:\Users\XXX\apache-activemq-6.1.5\bin\..\conf
-ACTIVEMQ_DATA: C:\Users\XXX\apache-activemq-6.1.5\bin\..\data
-Loading message broker from: xbean:activemq.xml
- INFO | Using Persistence Adapter: KahaDBPersistenceAdapter[C:\Users\XXX\apache-activemq-6.1.5\bin\..\data\kahadb]
- INFO | Starting Persistence Adapter: KahaDBPersistenceAdapter[C:\Users\XXX\apache-activemq-6.1.5\bin\..\data\kahadb]
- INFO | Starting KahaDBStore
- INFO | Opening MessageDatabase
- INFO | Page File: C:\Users\XXX\apache-activemq-6.1.5\bin\..\data\kahadb\db.data. Recovering pageFile free list due to prior unclean shutdown..
- INFO | KahaDB is version 7
- INFO | Page File: C:\Users\XXX\apache-activemq-6.1.5\bin\..\data\kahadb\db.data. Recovered pageFile free list of size: 0
- INFO | Starting Temp Data Store
- INFO | PListStore:[C:\Users\XXX\apache-activemq-6.1.5\bin\..\data\localhost\tmp_storage] started
- INFO | Starting Job Scheduler Store
- INFO | Persistence Adapter successfully started
- INFO | Apache ActiveMQ 6.1.5 (localhost, ID:DESKTOP-66E87L5-60208-1739018831814-0:1) is starting
- INFO | Listening for connections at: tcp://DESKTOP-66E87L5:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600
- INFO | Connector openwire started
- INFO | Listening for connections at: amqp://DESKTOP-66E87L5:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600
- INFO | Connector amqp started
- INFO | Listening for connections at: stomp://DESKTOP-66E87L5:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600
- INFO | Connector stomp started
- INFO | Listening for connections at: mqtt://DESKTOP-66E87L5:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600
- INFO | Connector mqtt started
- INFO | Starting Jetty server
- INFO | Creating Jetty connector
- WARN | ServletContext@o.e.j.s.ServletContextHandler@33425811{/,null,STARTING} has uncovered HTTP methods for the following paths: [/]
- INFO | Listening for connections at ws://DESKTOP-66E87L5:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600
- INFO | Connector ws started
- INFO | Apache ActiveMQ 6.1.5 (localhost, ID:DESKTOP-66E87L5-60208-1739018831814-0:1) started
- INFO | For help or more information please see: http://activemq.apache.org
- INFO | ActiveMQ WebConsole available at http://127.0.0.1:8161/
- INFO | ActiveMQ Jolokia REST API available at http://127.0.0.1:8161/api/jolokia/
-```
-**3. H2 Database Version 2.3.232**
+**2. H2 Database Version 2.3.232**
```
C:\Users\XXX\Desktop>SET JAVA_HOME=C:\Users\XXX\graalvm-jdk-17.0.14+8.1
diff --git a/src/main/java/com/example/sbcamel/Boot.java b/src/main/java/com/example/sbcamel/Boot.java
index 4d5d35b..be16e81 100644
--- a/src/main/java/com/example/sbcamel/Boot.java
+++ b/src/main/java/com/example/sbcamel/Boot.java
@@ -6,10 +6,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
-@EnableEurekaServer
public class Boot {
private static final Logger logger = LoggerFactory.getLogger(Boot.class);
@@ -25,7 +23,6 @@ public class Boot {
System.setProperty("spring.config.location", configDirectory + "/springboot.yml");
System.setProperty("logging.config", configDirectory + "/logback.xml");
}
- System.setProperty("org.apache.activemq.SERIALIZABLE_PACKAGES", "*");
SpringApplication.run(Boot.class, args);
}
diff --git a/src/main/java/com/example/sbcamel/init/AppConfig.java b/src/main/java/com/example/sbcamel/init/AppConfig.java
index 47b5150..14a6679 100644
--- a/src/main/java/com/example/sbcamel/init/AppConfig.java
+++ b/src/main/java/com/example/sbcamel/init/AppConfig.java
@@ -1,44 +1,16 @@
package com.example.sbcamel.init;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.util.Properties;
-
-import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
-import org.apache.hc.client5.http.impl.classic.HttpClients;
-import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.ImportResource;
-import com.example.sbcamel.processor.InspectionProcessor;
-import com.example.sbcamel.processor.TestProcessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.jakarta.rs.json.JacksonJsonProvider;
@Configuration
-@ImportResource("classpath:schedule.xml")
public class AppConfig {
- @Value("${app.inspection-client.javamail-config}")
- private String javamailCfg;
-
- @Bean
- public Properties javaMailProperties() throws IOException {
- Properties javaMailProperties = new Properties();
- FileInputStream fis = new FileInputStream(javamailCfg);
- javaMailProperties.load(fis);
- fis.close();
- return javaMailProperties;
- }
-
- @Bean
- public CloseableHttpClient httpClient() {
- return HttpClients.createDefault();
- }
-
@Bean("objectMapper")
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
@@ -51,14 +23,4 @@ public class AppConfig {
public JacksonJsonProvider jaxrsProvider() {
return new JacksonJsonProvider();
}
-
- @Bean
- public InspectionProcessor inspectionProcessor() {
- return new InspectionProcessor();
- }
-
- @Bean
- public TestProcessor testProcessor() {
- return new TestProcessor();
- }
}
diff --git a/src/main/java/com/example/sbcamel/init/CamelRouter.java b/src/main/java/com/example/sbcamel/init/CamelRouter.java
index 9475d50..0924bb9 100644
--- a/src/main/java/com/example/sbcamel/init/CamelRouter.java
+++ b/src/main/java/com/example/sbcamel/init/CamelRouter.java
@@ -11,8 +11,6 @@ import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import com.example.sbcamel.mapper.SessionMapper;
-import com.example.sbcamel.processor.InspectionProcessor;
-import com.example.sbcamel.processor.TestProcessor;
import com.example.sbcamel.service.SessionService;
import jakarta.annotation.PostConstruct;
@@ -20,12 +18,11 @@ import jakarta.ws.rs.core.Response;
@Component
public class CamelRouter extends RouteBuilder {
-
- private static final String createSessionSql = "CREATE TABLE IF NOT EXISTS public.session (sessionId UUID not null, "
+
+ private static final String dropSessionSql = "DROP TABLE IF EXISTS public.session";
+
+ private static final String createSessionSql = "CREATE TABLE public.session (sessionId UUID not null, "
+ "username CHARACTER VARYING not null, password CHARACTER VARYING not null, PRIMARY KEY (sessionId))";
- private static final String addSelector1Sql = "ALTER TABLE IF EXISTS public.session ADD COLUMN IF NOT EXISTS selector1 CHARACTER VARYING NULL";
- private static final String addSelector2Sql = "ALTER TABLE IF EXISTS public.session ADD COLUMN IF NOT EXISTS selector2 CHARACTER VARYING NULL";
- private static final String addSelector3Sql = "ALTER TABLE IF EXISTS public.session ADD COLUMN IF NOT EXISTS selector3 CHARACTER VARYING NULL";
@Value("${app.queue-name}")
private String queueName;
@@ -33,19 +30,11 @@ public class CamelRouter extends RouteBuilder {
@Autowired
private JdbcTemplate jdbcTemplate;
- @Autowired
- protected InspectionProcessor inspectionProcessor;
-
- @Autowired
- protected TestProcessor testProcessor;
-
@PostConstruct
private void init() {
org.apache.ibatis.logging.LogFactory.useSlf4jLogging();
+ jdbcTemplate.execute(dropSessionSql);
jdbcTemplate.execute(createSessionSql);
- jdbcTemplate.execute(addSelector1Sql);
- jdbcTemplate.execute(addSelector2Sql);
- jdbcTemplate.execute(addSelector3Sql);
}
@Override
@@ -56,7 +45,7 @@ public class CamelRouter extends RouteBuilder {
from("cxfrs:/api?resourceClasses=" + SessionService.class.getName() + "&bindingStyle=Default"
+ "&providers=jaxrsProvider&loggingFeatureEnabled=true").to("log:cxfrs?showAll=true")
- .to("activemq6:queue:" + queueName).process(exchange -> {
+ .to("seda:" + queueName).process(exchange -> {
if (exchange.getMessage().getBody() != null && exchange.getMessage().getBody() instanceof byte[]
&& new String((byte[]) exchange.getMessage().getBody()).equals("null")) {
if (exchange.getIn().getHeader(Exchange.HTTP_METHOD).equals("GET")) {
@@ -65,7 +54,7 @@ public class CamelRouter extends RouteBuilder {
}
});
- from("activemq6:queue:" + queueName)
+ from("seda:" + queueName)
.process(exchange -> exchange.getIn().setHeader(BeanConstants.BEAN_METHOD_NAME,
exchange.getIn().getHeader(CxfConstants.OPERATION_NAME.toLowerCase())))
.to("log:activemq?showAll=true").transacted("propagationRequired").choice()
@@ -78,10 +67,7 @@ public class CamelRouter extends RouteBuilder {
.to("mybatis:" + SessionMapper.class.getName() + ".findSessions?statementType=SelectList")
.when(header(BeanConstants.BEAN_METHOD_NAME).isEqualTo("findSession"))
.to("mybatis:" + SessionMapper.class.getName() + ".findSession?statementType=SelectOne")
- .when(header(BeanConstants.BEAN_METHOD_NAME).isEqualTo("inspect"))
- .to("mybatis:" + SessionMapper.class.getName() + ".findSession?statementType=SelectOne")
- .process(inspectionProcessor).when(header(BeanConstants.BEAN_METHOD_NAME).isEqualTo("test"))
- .process(testProcessor).end().marshal().json(JsonLibrary.Jackson);
+ .end().marshal().json(JsonLibrary.Jackson);
}
}
\ No newline at end of file
diff --git a/src/main/java/com/example/sbcamel/mapper/SessionMapper.java b/src/main/java/com/example/sbcamel/mapper/SessionMapper.java
index 6bed4a6..92fdc15 100644
--- a/src/main/java/com/example/sbcamel/mapper/SessionMapper.java
+++ b/src/main/java/com/example/sbcamel/mapper/SessionMapper.java
@@ -15,31 +15,25 @@ import com.example.sbcamel.service.UuidTypeHandler;
public interface SessionMapper {
@Insert({ "" })
int updateSession(Session session);
@Results({
@Result(property = "sessionId", column = "sessionId", javaType = UUID.class, jdbcType = JdbcType.OTHER, typeHandler = UuidTypeHandler.class),
- @Result(property = "username", column = "username"), @Result(property = "password", column = "password"),
- @Result(property = "selector1", column = "selector1"),
- @Result(property = "selector2", column = "selector2"),
- @Result(property = "selector3", column = "selector3") })
+ @Result(property = "username", column = "username"), @Result(property = "password", column = "password")})
@Select({ "" })
Session findSession(UUID sessionId);
@Results({
@Result(property = "sessionId", column = "sessionId", javaType = UUID.class, jdbcType = JdbcType.OTHER, typeHandler = UuidTypeHandler.class),
- @Result(property = "username", column = "username"), @Result(property = "password", column = "password"),
- @Result(property = "selector1", column = "selector1"),
- @Result(property = "selector2", column = "selector2"),
- @Result(property = "selector3", column = "selector3") })
+ @Result(property = "username", column = "username"), @Result(property = "password", column = "password") })
@Select({ "" })
Collection findSessions();
}
diff --git a/src/main/java/com/example/sbcamel/processor/InspectionProcessor.java b/src/main/java/com/example/sbcamel/processor/InspectionProcessor.java
deleted file mode 100644
index 6086d6b..0000000
--- a/src/main/java/com/example/sbcamel/processor/InspectionProcessor.java
+++ /dev/null
@@ -1,142 +0,0 @@
-package com.example.sbcamel.processor;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.htmlunit.FailingHttpStatusCodeException;
-import org.htmlunit.WebClient;
-import org.htmlunit.html.HtmlButton;
-import org.htmlunit.html.HtmlForm;
-import org.htmlunit.html.HtmlPage;
-import org.htmlunit.html.HtmlPasswordInput;
-import org.htmlunit.html.HtmlTextInput;
-import org.jsoup.Jsoup;
-import org.jsoup.nodes.Document;
-import org.jsoup.nodes.Element;
-import org.jsoup.select.Elements;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Value;
-
-import com.example.sbcamel.service.Session;
-
-public class InspectionProcessor implements Processor {
-
- private static final Logger logger = LoggerFactory.getLogger(InspectionProcessor.class);
-
- @Value("${app.htmlunit.login-url}")
- private String loginUrl;
-
- @Value("${app.htmlunit.login-btn-selector}")
- private String loginBtnSelector;
-
- @Value("${app.htmlunit.login-wait-millis:3000}")
- private Long loginWaitMillis;
-
- @Value("${app.htmlunit.user-page-url}")
- private String userPageUrl;
-
- @Value("${app.htmlunit.vip11-page-url}")
- private String vip11PageUrl;
-
- @Value("${app.htmlunit.vip12-page-url}")
- private String vip12PageUrl;
-
- @Value("${app.htmlunit.vip13-page-url}")
- private String vip13PageUrl;
-
- @Value("${app.htmlunit.vip21-page-url}")
- private String vip21PageUrl;
-
- @Value("${app.htmlunit.vip22-page-url}")
- private String vip22PageUrl;
-
- @Value("${app.htmlunit.vip23-page-url}")
- private String vip23PageUrl;
-
- @Value("${app.htmlunit.vip31-page-url}")
- private String vip31PageUrl;
-
- @Value("${app.htmlunit.vip32-page-url}")
- private String vip32PageUrl;
-
- @Value("${app.htmlunit.vip33-page-url}")
- private String vip33PageUrl;
-
- @Value("${app.htmlunit.logout-url}")
- private String logoutUrl;
-
- @Override
- public void process(Exchange exchange) throws Exception {
- Session session = (Session) exchange.getMessage().getBody();
- logger.debug("session: {}", session);
-
- try (final WebClient webClient = new WebClient()) {
-
- final HtmlPage loginPage = webClient.getPage(loginUrl);
- logger.debug("loginPage: {}", loginPage.asXml());
-
- final HtmlForm form = loginPage.getForms().get(0);
- final HtmlTextInput usernameField = form.getInputByName("username");
- usernameField.type(session.getUsername());
- logger.debug("entered username: {}", session.getUsername());
-
- final HtmlPasswordInput passwordField = form.getInputByName("password");
- passwordField.type(session.getPassword());
- logger.debug("entered password: {}", session.getPassword());
-
- HtmlButton loginBtn = loginPage.querySelector(loginBtnSelector);
- logger.debug("loginBtn type: {}", loginBtn.getType());
- loginBtn.click();
-
- Thread.sleep(loginWaitMillis);
-
- HtmlPage userPage = webClient.getPage(userPageUrl);
- logger.debug("userPage hashcode: {}", userPage.hashCode());
-
- Map> reply11 = fillResponseMap(webClient, session, vip11PageUrl);
- Map> reply12 = fillResponseMap(webClient, session, vip12PageUrl);
- Map> reply13 = fillResponseMap(webClient, session, vip13PageUrl);
-
- Map> reply21 = fillResponseMap(webClient, session, vip21PageUrl);
- Map> reply22 = fillResponseMap(webClient, session, vip22PageUrl);
- Map> reply23 = fillResponseMap(webClient, session, vip23PageUrl);
-
- Map> reply31 = fillResponseMap(webClient, session, vip31PageUrl);
- Map> reply32 = fillResponseMap(webClient, session, vip32PageUrl);
- Map> reply33 = fillResponseMap(webClient, session, vip33PageUrl);
-
- webClient.getPage(logoutUrl);
- exchange.getMessage().setBody(Map.of("vip11Page", reply11, "vip12Page", reply12, "vip13Page", reply13,
- "vip21Page", reply21, "vip22Page", reply22, "vip23Page", reply23,
- "vip31Page", reply31, "vip32Page", reply32, "vip33Page", reply33));
-
- } catch (Exception e) {
- logger.error("LoginProcessor process error!", e);
- }
- }
-
- private Map> fillResponseMap(WebClient webClient, Session session, String url)
- throws FailingHttpStatusCodeException, MalformedURLException, IOException {
- Map> reply = new HashMap<>();
- HtmlPage vipPage = webClient.getPage(url);
- Document doc = Jsoup.parse(vipPage.asXml());
- for (String selector : List.of(session.getSelector1(), session.getSelector2(), session.getSelector3())) {
- Elements elements = doc.select(selector);
- List selectedList = new ArrayList<>();
- for (Element element : elements) {
- logger.debug("[fillResponseMap] {} -> {}", selector, element.html());
- selectedList.add(element.html());
- }
- reply.put(selector, selectedList);
- }
- return reply;
- }
-
-}
diff --git a/src/main/java/com/example/sbcamel/processor/TestProcessor.java b/src/main/java/com/example/sbcamel/processor/TestProcessor.java
deleted file mode 100644
index 1e1affa..0000000
--- a/src/main/java/com/example/sbcamel/processor/TestProcessor.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.example.sbcamel.processor;
-
-import java.io.File;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.commons.io.FileUtils;
-import org.apache.cxf.message.MessageContentsList;
-import org.jsoup.Jsoup;
-import org.jsoup.nodes.Document;
-import org.jsoup.nodes.Element;
-import org.jsoup.select.Elements;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Value;
-
-public class TestProcessor implements Processor {
-
- private static final Logger logger = LoggerFactory.getLogger(TestProcessor.class);
-
- @Value("${app.jsoup.html-file}")
- private String htmlFilePath;
-
- @SuppressWarnings("unchecked")
- @Override
- public void process(Exchange exchange) throws Exception {
- logger.info("in class: {}", exchange.getIn().getBody().getClass().getName());
- MessageContentsList mcl = (MessageContentsList) exchange.getIn().getBody();
- List selectors = (List) mcl.get(0);
- logger.info("selectors: {}", selectors);
-
- File htmlFile = new File(htmlFilePath);
- String html = FileUtils.readFileToString(htmlFile, StandardCharsets.UTF_8);
- Document doc = Jsoup.parse(html);
- Map> reply = new HashMap<>();
-
- for (String selector : selectors) {
- Elements elements = doc.select(selector);
- List selectedList = new ArrayList<>();
- for (Element element : elements) {
- logger.info("{} -> {}", selector, element.html());
- selectedList.add(element.html());
- }
- reply.put(selector, selectedList);
- }
- exchange.getMessage().setBody(reply);
- }
-
-}
diff --git a/src/main/java/com/example/sbcamel/service/EmailService.java b/src/main/java/com/example/sbcamel/service/EmailService.java
deleted file mode 100644
index 66048dd..0000000
--- a/src/main/java/com/example/sbcamel/service/EmailService.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package com.example.sbcamel.service;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Properties;
-
-import javax.mail.Message;
-import javax.mail.Session;
-import javax.mail.Transport;
-import javax.mail.internet.InternetAddress;
-import javax.mail.internet.MimeMessage;
-
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-@Service
-public class EmailService {
-
- private static final Logger logger = LoggerFactory.getLogger(EmailService.class);
-
- @Autowired
- private Properties javaMailProperties;
-
- public boolean sendEmail(String fromAddress, String smtpPassword, String[] toAddresses, String subject,
- String content) {
- try {
- logger.debug("[sendEmail] fromAddress: {}, toAddresses: {}", fromAddress, toAddresses);
- if (StringUtils.isEmpty(subject) || StringUtils.isEmpty(smtpPassword) || StringUtils.isEmpty(fromAddress)
- || toAddresses.length == 0) {
- logger.warn("[sendEmail] subject, smtp-password, source-address or target-address is not set");
- return false;
- }
- String emailHost = javaMailProperties.getProperty("mail.smtp.host");
- logger.debug("[sendEmail] {} -> {}, mail.smtp.host: {}", fromAddress, List.of(toAddresses), emailHost);
- if (StringUtils.isNotBlank(emailHost) && StringUtils.isNotBlank(fromAddress) && toAddresses.length > 0) {
- logger.debug("[sendEmail] starting to send message from: {}", fromAddress);
- Session session = Session.getInstance(javaMailProperties);
-
- MimeMessage message = new MimeMessage(session);
- message.setContent(content, "text/html; charset=utf-8");
- message.setFrom(new InternetAddress(fromAddress));
-
- Arrays.asList(toAddresses).forEach(toAddress -> {
- try {
- message.addRecipient(Message.RecipientType.TO, new InternetAddress(toAddress));
- } catch (Exception e) {
- logger.error("sendEmail error!", e);
- }
- });
- message.setSubject(subject);
-
- Transport transport = session.getTransport("smtp");
- transport.connect(emailHost, fromAddress, smtpPassword);
- transport.sendMessage(message, message.getAllRecipients());
- transport.close();
- logger.debug("sendEmail to: {}", Arrays.asList(toAddresses));
-
- return true;
- } else {
- logger.warn("[sendEmail] missing either from-field, to-field or host address!");
- }
- } catch (Exception e) {
- logger.error("sendEmail error!", e);
- }
- return false;
- }
-}
diff --git a/src/main/java/com/example/sbcamel/service/InspectionClient.java b/src/main/java/com/example/sbcamel/service/InspectionClient.java
deleted file mode 100644
index 2711024..0000000
--- a/src/main/java/com/example/sbcamel/service/InspectionClient.java
+++ /dev/null
@@ -1,161 +0,0 @@
-package com.example.sbcamel.service;
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.IOException;
-import java.net.URI;
-import java.nio.charset.StandardCharsets;
-import java.util.Base64;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.tuple.Pair;
-import org.apache.hc.client5.http.classic.methods.HttpUriRequestBase;
-import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
-import org.apache.hc.core5.http.ClassicHttpResponse;
-import org.apache.hc.core5.http.HttpException;
-import org.apache.hc.core5.http.io.HttpClientResponseHandler;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.collect.MapDifference;
-import com.google.common.collect.MapDifference.ValueDifference;
-import com.google.common.collect.Maps;
-
-public class InspectionClient {
-
- private static final Logger logger = LoggerFactory.getLogger(InspectionClient.class);
-
- @Autowired
- private CloseableHttpClient httpClient;
-
- @Autowired
- private EmailService emailService;
-
- @Autowired
- private ObjectMapper objectMapper;
-
- @Value("${app.inspection-client.email-password:}")
- private String smtpPassword;
-
- @Value("${app.inspection-client.email-sender:}")
- private String fromAddress;
-
- @Value("${app.inspection-client.email-recipient:}")
- private String[] toAddresses;
-
- @Value("${app.inspection-client.http-url}")
- private String url;
-
- @Value("${app.inspection-client.http-method}")
- private String httpMethod;
-
- @Value("${app.inspection-client.expected-result-file-path}")
- private String expectedResultFilePath;
-
- @Value("${app.inspection-client.alert-subject}")
- private String alertSubject;
-
- @Value("${app.inspection-client.http-username}")
- private String username;
-
- @Value("${app.inspection-client.http-password}")
- private String password;
-
- private static final String getBasicAuthenticationHeader(String username, String password) {
- String valueToEncode = username + ":" + password;
- return "Basic " + Base64.getEncoder().encodeToString(valueToEncode.getBytes());
- }
-
- public void sendMessage() {
- try {
- File jsonFile = new File(expectedResultFilePath);
- if (!jsonFile.exists()) {
- logger.info("file does not exist: {}", expectedResultFilePath);
- return;
- }
- String jsonString = FileUtils.readFileToString(jsonFile, StandardCharsets.UTF_8);
- logger.info("expected result: {}", jsonString);
- HashMap expectedMap = convertStringToMap(jsonString);
- logger.info("calling {} {}", httpMethod, url);
-
- HttpUriRequestBase req = new HttpUriRequestBase(httpMethod, URI.create(url));
- req.addHeader("Authorization", getBasicAuthenticationHeader(username, password));
- Pair sendEmailResult = httpClient.execute(req,
- new HttpClientResponseHandler>() {
-
- @Override
- public Pair handleResponse(ClassicHttpResponse result)
- throws HttpException, IOException {
-
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- result.getEntity().writeTo(baos);
- String responseText = new String(baos.toByteArray(), StandardCharsets.UTF_8);
- logger.info("actual result: {}", responseText);
-
- if (StringUtils.isEmpty(responseText)) {
- logger.error("actual result is empty!");
- return Pair.of(Boolean.FALSE, Boolean.FALSE);
- }
- baos.close();
- try {
- HashMap resultMap = convertStringToMap(responseText);
- MapDifference diff = Maps.difference(expectedMap, resultMap);
- logger.info("diff.areEqual: {}", diff.areEqual());
- StringBuilder contentBuilder = new StringBuilder();
- if (!diff.areEqual()) {
- Map> entriesDiffering = diff.entriesDiffering();
- entriesDiffering.entrySet().stream().forEach(entry -> {
- logger.info("entriesDiffering key: {}", entry.getKey());
- logger.info("entriesDiffering expected: {}", entry.getValue().leftValue());
- logger.info("entriesDiffering actual: {}", entry.getValue().rightValue());
- contentBuilder.append(entry.getKey() + "
\n");
- contentBuilder.append("EXPECTED: " + entry.getValue().leftValue() + "
\n");
- contentBuilder.append("ACTUAL: " + entry.getValue().rightValue() + "
\n");
- contentBuilder.append("
\n");
- });
- return Pair.of(Boolean.TRUE, emailService.sendEmail(fromAddress, smtpPassword,
- toAddresses, alertSubject, contentBuilder.toString()));
- }
- } catch (IOException e) {
- logger.error("Error occurred while parsing message", e);
- }
- return Pair.of(Boolean.FALSE, Boolean.FALSE);
- }
-
- });
- logger.info("send email result: {}", sendEmailResult);
-
- } catch (Exception e) {
- logger.error("Error occurred while preparing to send message", e);
- }
- }
-
- public HashMap convertStringToMap(String jsonString) throws IOException {
- TypeReference> ref = new TypeReference<>() {
- };
- return new HashMap<>(objectMapper.readValue(jsonString, ref));
- }
-
- public String getUrl() {
- return url;
- }
-
- public void setUrl(String url) {
- this.url = url;
- }
-
- public String getHttpMethod() {
- return httpMethod;
- }
-
- public void setHttpMethod(String httpMethod) {
- this.httpMethod = httpMethod;
- }
-}
diff --git a/src/main/java/com/example/sbcamel/service/Session.java b/src/main/java/com/example/sbcamel/service/Session.java
index 878262b..5ec68b6 100644
--- a/src/main/java/com/example/sbcamel/service/Session.java
+++ b/src/main/java/com/example/sbcamel/service/Session.java
@@ -25,15 +25,6 @@ public class Session implements Serializable {
@Size(min = 3, max = 40)
private String password;
- @NotNull
- private String selector1;
-
- @NotNull
- private String selector2;
-
- @NotNull
- private String selector3;
-
public Session() {
}
@@ -68,30 +59,6 @@ public class Session implements Serializable {
this.password = password;
}
- public String getSelector1() {
- return selector1;
- }
-
- public void setSelector1(String selector1) {
- this.selector1 = selector1;
- }
-
- public String getSelector2() {
- return selector2;
- }
-
- public void setSelector2(String selector2) {
- this.selector2 = selector2;
- }
-
- public String getSelector3() {
- return selector3;
- }
-
- public void setSelector3(String selector3) {
- this.selector3 = selector3;
- }
-
@Override
public String toString() {
return ReflectionToStringBuilder.toString(this);
diff --git a/src/main/resources/schedule.xml b/src/main/resources/schedule.xml
deleted file mode 100644
index 1f11a2f..0000000
--- a/src/main/resources/schedule.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file