RoleRepresentation role = realmResource.roles().get(roleName).toRepresentation();
roles.add(role);
- } catch (javax.ws.rs.NotFoundException e) {
+ } catch (jakarta.ws.rs.NotFoundException e) {
throw new ImportProcessingException(
String.format("Could not find role '%s' in realm '%s'!", roleName, realmName)
);
diff --git a/src/main/java/de/adorsys/keycloak/config/repository/UserProfileRepository.java b/src/main/java/de/adorsys/keycloak/config/repository/UserProfileRepository.java
index b15113b69..2177c8239 100644
--- a/src/main/java/de/adorsys/keycloak/config/repository/UserProfileRepository.java
+++ b/src/main/java/de/adorsys/keycloak/config/repository/UserProfileRepository.java
@@ -22,6 +22,7 @@
import de.adorsys.keycloak.config.exception.KeycloakRepositoryException;
import de.adorsys.keycloak.config.util.JsonUtil;
+import jakarta.ws.rs.core.Response;
import org.keycloak.admin.client.resource.UserProfileResource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -30,7 +31,6 @@
import org.springframework.util.StringUtils;
import java.util.Optional;
-import javax.ws.rs.core.Response;
@Component
public class UserProfileRepository {
diff --git a/src/main/java/de/adorsys/keycloak/config/repository/UserRepository.java b/src/main/java/de/adorsys/keycloak/config/repository/UserRepository.java
index e778751a2..475ee4568 100644
--- a/src/main/java/de/adorsys/keycloak/config/repository/UserRepository.java
+++ b/src/main/java/de/adorsys/keycloak/config/repository/UserRepository.java
@@ -21,6 +21,7 @@
package de.adorsys.keycloak.config.repository;
import de.adorsys.keycloak.config.exception.KeycloakRepositoryException;
+import jakarta.ws.rs.core.Response;
import org.keycloak.admin.client.CreatedResponseUtil;
import org.keycloak.admin.client.resource.RealmResource;
import org.keycloak.admin.client.resource.UserResource;
@@ -32,7 +33,6 @@
import java.util.List;
import java.util.Optional;
-import javax.ws.rs.core.Response;
@Service
public class UserRepository {
diff --git a/src/main/java/de/adorsys/keycloak/config/resource/ManagementPermissions.java b/src/main/java/de/adorsys/keycloak/config/resource/ManagementPermissions.java
index bb46b28fc..6ccf2bc7c 100644
--- a/src/main/java/de/adorsys/keycloak/config/resource/ManagementPermissions.java
+++ b/src/main/java/de/adorsys/keycloak/config/resource/ManagementPermissions.java
@@ -20,11 +20,10 @@
package de.adorsys.keycloak.config.resource;
+import jakarta.ws.rs.*;
import org.keycloak.representations.idm.ManagementPermissionReference;
import org.keycloak.representations.idm.ManagementPermissionRepresentation;
-import javax.ws.rs.*;
-
/**
* Routes which are somehow missing from the official Keycloak client library
*
diff --git a/src/main/java/de/adorsys/keycloak/config/service/ClientAuthorizationImportService.java b/src/main/java/de/adorsys/keycloak/config/service/ClientAuthorizationImportService.java
index 1663b2b7d..5e1ee3cae 100644
--- a/src/main/java/de/adorsys/keycloak/config/service/ClientAuthorizationImportService.java
+++ b/src/main/java/de/adorsys/keycloak/config/service/ClientAuthorizationImportService.java
@@ -32,6 +32,7 @@
import de.adorsys.keycloak.config.util.CloneUtil;
import de.adorsys.keycloak.config.util.JsonUtil;
import de.adorsys.keycloak.config.util.KeycloakUtil;
+import jakarta.ws.rs.NotFoundException;
import org.keycloak.representations.idm.ClientRepresentation;
import org.keycloak.representations.idm.authorization.PolicyRepresentation;
import org.keycloak.representations.idm.authorization.ResourceRepresentation;
@@ -47,7 +48,6 @@
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
-import javax.ws.rs.NotFoundException;
import static de.adorsys.keycloak.config.properties.ImportConfigProperties.ImportManagedProperties.ImportManagedPropertiesValues.FULL;
import static java.lang.Boolean.TRUE;
diff --git a/src/main/java/de/adorsys/keycloak/config/service/ClientImportService.java b/src/main/java/de/adorsys/keycloak/config/service/ClientImportService.java
index ea0c64b53..44a3c02d8 100644
--- a/src/main/java/de/adorsys/keycloak/config/service/ClientImportService.java
+++ b/src/main/java/de/adorsys/keycloak/config/service/ClientImportService.java
@@ -28,6 +28,7 @@
import de.adorsys.keycloak.config.repository.ClientScopeRepository;
import de.adorsys.keycloak.config.service.state.StateService;
import de.adorsys.keycloak.config.util.*;
+import jakarta.ws.rs.WebApplicationException;
import org.apache.commons.lang3.ArrayUtils;
import org.keycloak.common.util.CollectionUtil;
import org.keycloak.representations.idm.ClientRepresentation;
@@ -40,7 +41,6 @@
import java.util.*;
import java.util.function.Consumer;
import java.util.stream.Collectors;
-import javax.ws.rs.WebApplicationException;
import static de.adorsys.keycloak.config.properties.ImportConfigProperties.ImportManagedProperties.ImportManagedPropertiesValues.FULL;
import static java.lang.Boolean.TRUE;
diff --git a/src/main/java/de/adorsys/keycloak/config/service/DefaultGroupsImportService.java b/src/main/java/de/adorsys/keycloak/config/service/DefaultGroupsImportService.java
index 8f7f0823b..666e01b9b 100644
--- a/src/main/java/de/adorsys/keycloak/config/service/DefaultGroupsImportService.java
+++ b/src/main/java/de/adorsys/keycloak/config/service/DefaultGroupsImportService.java
@@ -67,7 +67,7 @@ public void doImport(RealmImport realmImport) {
try {
String newDefaultGroupId = groupRepository.getGroupByPath(realmName, newDefaultGroup).getId();
realmResource.addDefaultGroup(newDefaultGroupId);
- } catch (javax.ws.rs.NotFoundException ignored) {
+ } catch (jakarta.ws.rs.NotFoundException ignored) {
throw new InvalidImportException(String.format("Unable to add default group '%s'. Does group exists?", newDefaultGroup));
}
}
diff --git a/src/main/java/de/adorsys/keycloak/config/service/ExecutionFlowsImportService.java b/src/main/java/de/adorsys/keycloak/config/service/ExecutionFlowsImportService.java
index ae885891f..6984441a3 100644
--- a/src/main/java/de/adorsys/keycloak/config/service/ExecutionFlowsImportService.java
+++ b/src/main/java/de/adorsys/keycloak/config/service/ExecutionFlowsImportService.java
@@ -27,6 +27,7 @@
import de.adorsys.keycloak.config.repository.ExecutionFlowRepository;
import de.adorsys.keycloak.config.util.AuthenticationFlowUtil;
import de.adorsys.keycloak.config.util.ResponseUtil;
+import jakarta.ws.rs.WebApplicationException;
import org.keycloak.representations.idm.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -38,7 +39,6 @@
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
-import javax.ws.rs.WebApplicationException;
/**
* Imports executions and execution-flows of existing top-level flows
diff --git a/src/main/java/de/adorsys/keycloak/config/service/clientauthorization/ClientPermissionResolver.java b/src/main/java/de/adorsys/keycloak/config/service/clientauthorization/ClientPermissionResolver.java
index dbb9f2097..3016cfd03 100644
--- a/src/main/java/de/adorsys/keycloak/config/service/clientauthorization/ClientPermissionResolver.java
+++ b/src/main/java/de/adorsys/keycloak/config/service/clientauthorization/ClientPermissionResolver.java
@@ -23,11 +23,10 @@
import de.adorsys.keycloak.config.exception.ImportProcessingException;
import de.adorsys.keycloak.config.exception.KeycloakRepositoryException;
import de.adorsys.keycloak.config.repository.ClientRepository;
+import jakarta.ws.rs.NotFoundException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.ws.rs.NotFoundException;
-
public class ClientPermissionResolver implements PermissionResolver {
private static final Logger logger = LoggerFactory.getLogger(ClientPermissionResolver.class);
diff --git a/src/main/java/de/adorsys/keycloak/config/service/clientauthorization/GroupPermissionResolver.java b/src/main/java/de/adorsys/keycloak/config/service/clientauthorization/GroupPermissionResolver.java
index 59a0e7231..fcb9d1cc3 100644
--- a/src/main/java/de/adorsys/keycloak/config/service/clientauthorization/GroupPermissionResolver.java
+++ b/src/main/java/de/adorsys/keycloak/config/service/clientauthorization/GroupPermissionResolver.java
@@ -23,11 +23,10 @@
import de.adorsys.keycloak.config.exception.ImportProcessingException;
import de.adorsys.keycloak.config.exception.KeycloakRepositoryException;
import de.adorsys.keycloak.config.repository.GroupRepository;
+import jakarta.ws.rs.NotFoundException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.ws.rs.NotFoundException;
-
public class GroupPermissionResolver implements PermissionResolver {
private static final Logger logger = LoggerFactory.getLogger(GroupPermissionResolver.class);
diff --git a/src/main/java/de/adorsys/keycloak/config/service/clientauthorization/RolePermissionResolver.java b/src/main/java/de/adorsys/keycloak/config/service/clientauthorization/RolePermissionResolver.java
index ec7bef3d5..ac017c387 100644
--- a/src/main/java/de/adorsys/keycloak/config/service/clientauthorization/RolePermissionResolver.java
+++ b/src/main/java/de/adorsys/keycloak/config/service/clientauthorization/RolePermissionResolver.java
@@ -23,11 +23,10 @@
import de.adorsys.keycloak.config.exception.ImportProcessingException;
import de.adorsys.keycloak.config.exception.KeycloakRepositoryException;
import de.adorsys.keycloak.config.repository.RoleRepository;
+import jakarta.ws.rs.NotFoundException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.ws.rs.NotFoundException;
-
public class RolePermissionResolver implements PermissionResolver {
private static final Logger logger = LoggerFactory.getLogger(RolePermissionResolver.class);
diff --git a/src/main/java/de/adorsys/keycloak/config/util/ResponseUtil.java b/src/main/java/de/adorsys/keycloak/config/util/ResponseUtil.java
index df34bda18..328088368 100644
--- a/src/main/java/de/adorsys/keycloak/config/util/ResponseUtil.java
+++ b/src/main/java/de/adorsys/keycloak/config/util/ResponseUtil.java
@@ -20,9 +20,7 @@
package de.adorsys.keycloak.config.util;
-import org.jboss.resteasy.client.jaxrs.internal.ClientResponse;
-
-import javax.ws.rs.WebApplicationException;
+import jakarta.ws.rs.WebApplicationException;
public class ResponseUtil {
ResponseUtil() {
@@ -30,7 +28,12 @@ public class ResponseUtil {
}
public static String getErrorMessage(WebApplicationException error) {
- String errorBody = !((ClientResponse) error.getResponse()).isClosed() ? error.getResponse().readEntity(String.class).trim() : "";
+ String errorBody;
+ try {
+ errorBody = error.getResponse().readEntity(String.class).trim();
+ } catch (Exception ignore) {
+ errorBody = "";
+ }
return error.getMessage() + errorBody;
}
}
diff --git a/src/main/java/de/adorsys/keycloak/config/util/ResteasyUtil.java b/src/main/java/de/adorsys/keycloak/config/util/ResteasyUtil.java
index 79b584628..93e64a91a 100644
--- a/src/main/java/de/adorsys/keycloak/config/util/ResteasyUtil.java
+++ b/src/main/java/de/adorsys/keycloak/config/util/ResteasyUtil.java
@@ -61,7 +61,7 @@ public static ResteasyClient getClient(boolean sslVerification, URL httpProxy, D
);
}
- clientBuilder.register(new CookieClientFilter());
+ clientBuilder.register(CookieClientFilter.class);
return clientBuilder.build();
}
diff --git a/src/main/java/de/adorsys/keycloak/config/util/resteasy/CookieClientFilter.java b/src/main/java/de/adorsys/keycloak/config/util/resteasy/CookieClientFilter.java
index 4608b6aef..9c05cd2ee 100644
--- a/src/main/java/de/adorsys/keycloak/config/util/resteasy/CookieClientFilter.java
+++ b/src/main/java/de/adorsys/keycloak/config/util/resteasy/CookieClientFilter.java
@@ -20,30 +20,37 @@
package de.adorsys.keycloak.config.util.resteasy;
+import jakarta.ws.rs.client.ClientRequestContext;
+import jakarta.ws.rs.client.ClientRequestFilter;
+import jakarta.ws.rs.client.ClientResponseContext;
+import jakarta.ws.rs.client.ClientResponseFilter;
+
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
-import javax.ws.rs.client.ClientRequestContext;
-import javax.ws.rs.client.ClientRequestFilter;
-import javax.ws.rs.client.ClientResponseContext;
-import javax.ws.rs.client.ClientResponseFilter;
// By default, the RESTeasy cookie handling is very limited. There is no access to the underlying httpEngine.
// The underlying httpEngine uses an old CookieSpec by default which is going to refuse valid cookie today.
// Instead, build the httpEngine from scratch, we are using a RESTeasy filter to grab a re-attach cookie.
// Currently, this filter does not valide cookie or is able to remove cookies.
// A cookie managed is required to handle sticky sessions at cookie base
+
public class CookieClientFilter implements ClientRequestFilter, ClientResponseFilter {
- private final Map cookies = new HashMap<>();
+
+ /**
+ * Hold the additional cookies across multiple interactions in the same thread.
+ */
+ private final ThreadLocal