From 5086ef84e13419776be0fddea2418452fa1d47bc Mon Sep 17 00:00:00 2001 From: Sebastian Simson Date: Mon, 28 Aug 2023 13:31:11 +0200 Subject: [PATCH 1/2] Add Java 17 target and support --- logback.xml | 16 ++++++++++++ pom.xml | 25 +++++++++++++------ .../io/castle/example/ChallengeServlet.java | 6 ++--- .../example/EmailChangeRequestServlet.java | 12 ++++----- .../io/castle/example/EmailChangeServlet.java | 12 ++++----- .../java/io/castle/example/LoginServlet.java | 12 ++++----- .../java/io/castle/example/LogoutServlet.java | 12 ++++----- .../castle/example/PasswordChangeServlet.java | 12 ++++----- .../example/PasswordResetRequiredServlet.java | 12 ++++----- .../castle/example/PasswordResetServlet.java | 12 ++++----- .../java/io/castle/example/SetupListener.java | 23 ++++++++++++++--- src/main/resources/castle_sdk.properties | 6 +++++ 12 files changed, 104 insertions(+), 56 deletions(-) create mode 100644 logback.xml diff --git a/logback.xml b/logback.xml new file mode 100644 index 0000000..e824d25 --- /dev/null +++ b/logback.xml @@ -0,0 +1,16 @@ + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 8e667ba..c5189f2 100644 --- a/pom.xml +++ b/pom.xml @@ -4,30 +4,35 @@ io.castle.example castle-example war - 1.4.0 + 1.6 Castle Java JDK Example https://github.com/castle/castle-java-example org.slf4j slf4j-api - 1.7.12 + 1.7.36 ch.qos.logback logback-classic - 1.2.3 + 1.4.11 - javax.servlet - javax.servlet-api - 3.0.1 + jakarta.servlet + jakarta.servlet-api + 6.0.0 provided io.castle castle-java - 1.4.0 + 2.3.3 + + + com.google.guava + guava + 32.1.2-jre @@ -37,8 +42,12 @@ org.eclipse.jetty jetty-maven-plugin - 9.4.6.v20170531 + 11.0.15 + + 17 + 17 + diff --git a/src/main/java/io/castle/example/ChallengeServlet.java b/src/main/java/io/castle/example/ChallengeServlet.java index 87eb5e5..637aa7e 100644 --- a/src/main/java/io/castle/example/ChallengeServlet.java +++ b/src/main/java/io/castle/example/ChallengeServlet.java @@ -4,9 +4,9 @@ import io.castle.client.api.CastleApi; import io.castle.example.model.TestUser; -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.*; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.*; import java.io.IOException; diff --git a/src/main/java/io/castle/example/EmailChangeRequestServlet.java b/src/main/java/io/castle/example/EmailChangeRequestServlet.java index 222e5b1..47d735b 100644 --- a/src/main/java/io/castle/example/EmailChangeRequestServlet.java +++ b/src/main/java/io/castle/example/EmailChangeRequestServlet.java @@ -4,12 +4,12 @@ import io.castle.client.api.CastleApi; import io.castle.example.model.TestUser; -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; import java.io.IOException; diff --git a/src/main/java/io/castle/example/EmailChangeServlet.java b/src/main/java/io/castle/example/EmailChangeServlet.java index 870ffea..ddf55a1 100644 --- a/src/main/java/io/castle/example/EmailChangeServlet.java +++ b/src/main/java/io/castle/example/EmailChangeServlet.java @@ -5,12 +5,12 @@ import io.castle.example.model.TestUser; import io.castle.example.model.UserAuthenticationBackend; -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; import java.io.IOException; diff --git a/src/main/java/io/castle/example/LoginServlet.java b/src/main/java/io/castle/example/LoginServlet.java index 631e889..52a15b1 100644 --- a/src/main/java/io/castle/example/LoginServlet.java +++ b/src/main/java/io/castle/example/LoginServlet.java @@ -7,12 +7,12 @@ import io.castle.example.model.TestUser; import io.castle.example.model.UserAuthenticationBackend; -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; import com.google.common.collect.ImmutableMap; diff --git a/src/main/java/io/castle/example/LogoutServlet.java b/src/main/java/io/castle/example/LogoutServlet.java index 20a9d58..0ae96ce 100644 --- a/src/main/java/io/castle/example/LogoutServlet.java +++ b/src/main/java/io/castle/example/LogoutServlet.java @@ -4,12 +4,12 @@ import io.castle.client.api.CastleApi; import io.castle.example.model.TestUser; -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; import com.google.common.collect.ImmutableMap; diff --git a/src/main/java/io/castle/example/PasswordChangeServlet.java b/src/main/java/io/castle/example/PasswordChangeServlet.java index 2f4fcba..820d1e7 100644 --- a/src/main/java/io/castle/example/PasswordChangeServlet.java +++ b/src/main/java/io/castle/example/PasswordChangeServlet.java @@ -5,12 +5,12 @@ import io.castle.example.model.TestUser; import io.castle.example.model.UserAuthenticationBackend; -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; import java.io.IOException; diff --git a/src/main/java/io/castle/example/PasswordResetRequiredServlet.java b/src/main/java/io/castle/example/PasswordResetRequiredServlet.java index 7c43d21..f4dbce5 100644 --- a/src/main/java/io/castle/example/PasswordResetRequiredServlet.java +++ b/src/main/java/io/castle/example/PasswordResetRequiredServlet.java @@ -5,12 +5,12 @@ import io.castle.example.model.TestUser; import io.castle.example.model.UserAuthenticationBackend; -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; import com.google.common.collect.ImmutableMap; diff --git a/src/main/java/io/castle/example/PasswordResetServlet.java b/src/main/java/io/castle/example/PasswordResetServlet.java index 25bf61d..be25645 100644 --- a/src/main/java/io/castle/example/PasswordResetServlet.java +++ b/src/main/java/io/castle/example/PasswordResetServlet.java @@ -5,12 +5,12 @@ import io.castle.example.model.TestUser; import io.castle.example.model.UserAuthenticationBackend; -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; import java.io.IOException; diff --git a/src/main/java/io/castle/example/SetupListener.java b/src/main/java/io/castle/example/SetupListener.java index 58be792..518560b 100644 --- a/src/main/java/io/castle/example/SetupListener.java +++ b/src/main/java/io/castle/example/SetupListener.java @@ -1,10 +1,14 @@ package io.castle.example; import io.castle.client.Castle; +import io.castle.client.internal.backend.CastleBackendProvider; +import io.castle.client.model.AuthenticateAction; +import io.castle.client.model.AuthenticateFailoverStrategy; import io.castle.client.model.CastleSdkConfigurationException; -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletContextListener; +import jakarta.servlet.ServletContextEvent; +import jakarta.servlet.ServletContextListener; +import java.util.Arrays; public class SetupListener implements ServletContextListener { @@ -17,9 +21,22 @@ public class SetupListener implements ServletContextListener { public void contextInitialized(ServletContextEvent sce) { try { Castle castle = Castle.verifySdkConfigurationAndInitialize(); + + /*Castle castle = Castle.initialize(Castle.configurationBuilder() + .apiSecret("abcd") + .withAllowListHeaders("User-Agent", "Accept-Language", "Accept-Encoding") + .withDenyListHeaders("Cookie") + .withTimeout(500) + .withBackendProvider(CastleBackendProvider.OKHTTP) + .withAuthenticateFailoverStrategy(new AuthenticateFailoverStrategy(AuthenticateAction.ALLOW)) + .withApiBaseUrl("https://api.castle.io/") + .withLogHttpRequests(true) + .ipHeaders(Arrays.asList("X-Forwarded-For", "CF-Connecting-IP")) + .build());*/ + Castle.setSingletonInstance(castle); } catch (CastleSdkConfigurationException e) { - //The sdk configuration is incorrect. We recommend to shutdown the application by throwing a runtime exception + //The sdk configuration is incorrect. We recommend to shut down the application by throwing a runtime exception throw new IllegalStateException("The Castle SDK configuration is not correct", e); } } diff --git a/src/main/resources/castle_sdk.properties b/src/main/resources/castle_sdk.properties index b43d82a..a7c38cd 100644 --- a/src/main/resources/castle_sdk.properties +++ b/src/main/resources/castle_sdk.properties @@ -3,3 +3,9 @@ black_list=Cookie,Connection log_http=true # The rest of the setting will use default values, when there are some. +app_id=566492732398746 +api_secret=dnpKLkR1Xjd4wjhPxBEqshzz9be9F8wg +timeout=10000 +backend_provider=OKHTTP +failover_strategy=CHALLENGE +base_url=https://api.castle.io/v1/ \ No newline at end of file From 897e853a865dc0019a9dd87086391a51495857a0 Mon Sep 17 00:00:00 2001 From: Sebastian Simson Date: Tue, 29 Aug 2023 14:56:11 +0200 Subject: [PATCH 2/2] Update circleci --- .circleci/config.yml | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 87db593..e274538 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,12 +1,16 @@ -version: 2 # use CircleCI 2.0 -jobs: # a collection of steps - build: # runs not using Workflows must have a `build` job as entry point +# Java Maven CircleCI 2.0 configuration file +# +# Check https://circleci.com/docs/2.0/language-java/ for more details +# +version: 2 +jobs: + build: + docker: + # specify the version you desire here + - image: cimg/openjdk:17.0.8-browsers working_directory: ~/castle-java-example # directory where steps will run - docker: # run the steps with Docker - - image: circleci/openjdk:8-jdk-browsers # ...with this image as the primary container; this is where all `steps` will run - steps: # a collection of executable commands - checkout # check out source code to working directory