diff --git a/conf/springboot.yml b/conf/springboot.yml
index 3dc1922..c3cd420 100644
--- a/conf/springboot.yml
+++ b/conf/springboot.yml
@@ -23,6 +23,11 @@ app:
username: "app"
password: "app"
mapper-package: "com.example.sbcamel.mapper"
+ htmlunit:
+ login-url: ""
+ login-btn-selector: ""
+ home-page-selector: ""
+ logout-btn-selector: ""
eureka:
client:
diff --git a/conf2/springboot.yml b/conf2/springboot.yml
index 6cef5d2..6cf157a 100644
--- a/conf2/springboot.yml
+++ b/conf2/springboot.yml
@@ -23,6 +23,11 @@ app:
username: "app"
password: "app"
mapper-package: "com.example.sbcamel.mapper"
+ htmlunit:
+ login-url: ""
+ login-btn-selector: ""
+ home-page-selector: ""
+ logout-btn-selector: ""
eureka:
client:
diff --git a/pom.xml b/pom.xml
index 9ff49e2..847e7a9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
com.example
camel-springboot-activemq6-example
- 3.0.1
+ 3.0.2
camel-springboot-activemq6-example
diff --git a/src/main/java/com/example/sbcamel/processor/LoginProcessor.java b/src/main/java/com/example/sbcamel/processor/LoginProcessor.java
index 3a39ec3..e4c209d 100644
--- a/src/main/java/com/example/sbcamel/processor/LoginProcessor.java
+++ b/src/main/java/com/example/sbcamel/processor/LoginProcessor.java
@@ -2,16 +2,68 @@ package com.example.sbcamel.processor;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
+import org.htmlunit.Page;
+import org.htmlunit.WebClient;
+import org.htmlunit.html.DomNode;
+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.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+
+import com.example.sbcamel.service.Session;
public class LoginProcessor implements Processor {
private static final Logger logger = LoggerFactory.getLogger(LoginProcessor.class);
+
+ @Value("${app.htmlunit.login-url}")
+ private String loginUrl;
+
+ @Value("${app.htmlunit.login-btn-selector}")
+ private String loginBtnSelector;
+
+ @Value("${app.htmlunit.home-page-selector}")
+ private String homePageSelector;
+
+ @Value("${app.htmlunit.logout-btn-selector}")
+ private String logoutBtnSelector;
@Override
public void process(Exchange exchange) throws Exception {
- logger.info("response body: {}", exchange.getMessage().getBody());
+ Session session = (Session) exchange.getMessage().getBody();
+ logger.info("session: {}", session);
+
+ try (final WebClient webClient = new WebClient()) {
+
+ final HtmlPage loginPage = webClient.getPage(loginUrl);
+ final HtmlForm form = loginPage.getForms().get(0);
+ final HtmlTextInput usernameField = form.getInputByName("username");
+ usernameField.type(session.getUsername());
+ logger.info("entered username: {}", session.getUsername());
+
+ final HtmlPasswordInput passwordField = form.getInputByName("password");
+ passwordField.type(session.getPassword());
+ logger.info("entered password: {}", session.getPassword());
+
+ HtmlButton loginBtn = loginPage.querySelector(loginBtnSelector);
+ HtmlPage defaultPage = loginBtn.click();
+ logger.info("loginBtn clicked, defaultPage: {}", defaultPage);
+
+ HtmlButton homePageBtn = defaultPage.querySelector(homePageSelector);
+ HtmlPage homePage = homePageBtn.click();
+ logger.info("homePageBtn clicked, homePage: {}", homePage);
+
+ HtmlButton logoutBtn = homePage.querySelector(logoutBtnSelector);
+ HtmlPage loginPage2 = logoutBtn.click();
+ logger.info("logoutBtn clicked, loginPage2: {}", loginPage2);
+
+ } catch (Exception e) {
+ logger.error("LoginProcessor process error!", e);
+ }
}
}