diff --git a/pom.xml b/pom.xml index c44968e..90d0170 100644 --- a/pom.xml +++ b/pom.xml @@ -30,9 +30,9 @@ UTF-8 io.phasetwo.keycloak.events 4.13.2 - 21.1.1 - 1.18.22 - 1.0.1 + 22.0.0 + 1.18.28 + 1.1.1 https://s01.oss.sonatype.org true @@ -179,25 +179,25 @@ com.google.guava guava - 30.1-jre + 32.0.0-jre provided - jakarta.persistence - jakarta.persistence-api - 2.2.3 + jakarta.validation + jakarta.validation-api + 3.0.2 provided - javax.ws.rs - javax.ws.rs-api - 2.1.1 + jakarta.ws.rs + jakarta.ws.rs-api + 3.1.0 provided - javax.validation - validation-api - 1.1.0.Final + jakarta.persistence + jakarta.persistence-api + 3.1.0 provided @@ -239,7 +239,7 @@ io.phasetwo.keycloak keycloak-orgs - [0.35,) + [0.37,) test diff --git a/src/main/java/io/phasetwo/keycloak/config/ConfigurationAware.java b/src/main/java/io/phasetwo/keycloak/config/ConfigurationAware.java index 2c0f898..8c17e07 100644 --- a/src/main/java/io/phasetwo/keycloak/config/ConfigurationAware.java +++ b/src/main/java/io/phasetwo/keycloak/config/ConfigurationAware.java @@ -6,6 +6,7 @@ import java.util.Map; import java.util.stream.Collectors; import org.keycloak.models.KeycloakSession; +import org.keycloak.models.RealmModel; public interface ConfigurationAware { @@ -13,12 +14,31 @@ public interface ConfigurationAware { default List> getConfigurations(KeycloakSession session) { return RealmAttributesConfigLoader.loadConfigurations( - session, session.getContext().getRealm().getName(), getId()) + session, getRealm(session).getName(), getId()) .stream() .map(config -> RealmAttributesConfigLoader.safeConvertToMap(config)) .collect(Collectors.toList()); } + /** Potential workaround for keycloak/keycloak#20105 */ + static RealmModel getRealm(KeycloakSession session) { + if (session.getContext() == null) { + return null; + } + if (session.getContext().getRealm() != null) { + return session.getContext().getRealm(); + } + if (session.getContext().getAuthenticationSession() != null + && session.getContext().getAuthenticationSession().getRealm() != null) { + return session.getContext().getAuthenticationSession().getRealm(); + } + if (session.getContext().getClient() != null + && session.getContext().getClient().getRealm() != null) { + return session.getContext().getClient().getRealm(); + } + return null; + } + default Map getConfiguration(KeycloakSession session) { List> configs = getConfigurations(session); if (configs == null || configs.size() == 0) return ImmutableMap.of(); diff --git a/src/main/java/io/phasetwo/keycloak/config/RealmAttributesConfigLoader.java b/src/main/java/io/phasetwo/keycloak/config/RealmAttributesConfigLoader.java index 865a977..a10b4ca 100644 --- a/src/main/java/io/phasetwo/keycloak/config/RealmAttributesConfigLoader.java +++ b/src/main/java/io/phasetwo/keycloak/config/RealmAttributesConfigLoader.java @@ -1,12 +1,12 @@ package io.phasetwo.keycloak.config; import com.fasterxml.jackson.core.type.TypeReference; +import jakarta.persistence.EntityManager; +import jakarta.persistence.TypedQuery; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; -import javax.persistence.EntityManager; -import javax.persistence.TypedQuery; import lombok.extern.jbosslog.JBossLog; import org.keycloak.connections.jpa.JpaConnectionProvider; import org.keycloak.models.KeycloakSession; diff --git a/src/main/java/io/phasetwo/keycloak/model/jpa/JpaWebhookProvider.java b/src/main/java/io/phasetwo/keycloak/model/jpa/JpaWebhookProvider.java index bf539a9..5388d33 100644 --- a/src/main/java/io/phasetwo/keycloak/model/jpa/JpaWebhookProvider.java +++ b/src/main/java/io/phasetwo/keycloak/model/jpa/JpaWebhookProvider.java @@ -3,10 +3,10 @@ import io.phasetwo.keycloak.model.WebhookModel; import io.phasetwo.keycloak.model.WebhookProvider; import io.phasetwo.keycloak.model.jpa.entity.WebhookEntity; +import jakarta.persistence.EntityManager; +import jakarta.persistence.Query; +import jakarta.persistence.TypedQuery; import java.util.stream.Stream; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.TypedQuery; import org.keycloak.models.KeycloakSession; import org.keycloak.models.RealmModel; import org.keycloak.models.UserModel; diff --git a/src/main/java/io/phasetwo/keycloak/model/jpa/JpaWebhookProviderFactory.java b/src/main/java/io/phasetwo/keycloak/model/jpa/JpaWebhookProviderFactory.java index 14b7c55..d899ac8 100644 --- a/src/main/java/io/phasetwo/keycloak/model/jpa/JpaWebhookProviderFactory.java +++ b/src/main/java/io/phasetwo/keycloak/model/jpa/JpaWebhookProviderFactory.java @@ -3,7 +3,7 @@ import com.google.auto.service.AutoService; import io.phasetwo.keycloak.model.WebhookProvider; import io.phasetwo.keycloak.model.WebhookProviderFactory; -import javax.persistence.EntityManager; +import jakarta.persistence.EntityManager; import org.keycloak.Config.Scope; import org.keycloak.connections.jpa.JpaConnectionProvider; import org.keycloak.models.KeycloakSession; diff --git a/src/main/java/io/phasetwo/keycloak/model/jpa/WebhookAdapter.java b/src/main/java/io/phasetwo/keycloak/model/jpa/WebhookAdapter.java index 7086ed0..b5cd6c1 100644 --- a/src/main/java/io/phasetwo/keycloak/model/jpa/WebhookAdapter.java +++ b/src/main/java/io/phasetwo/keycloak/model/jpa/WebhookAdapter.java @@ -2,9 +2,9 @@ import io.phasetwo.keycloak.model.WebhookModel; import io.phasetwo.keycloak.model.jpa.entity.WebhookEntity; +import jakarta.persistence.EntityManager; import java.util.Date; import java.util.Set; -import javax.persistence.EntityManager; import org.keycloak.models.KeycloakSession; import org.keycloak.models.RealmModel; import org.keycloak.models.UserModel; diff --git a/src/main/java/io/phasetwo/keycloak/model/jpa/entity/WebhookEntity.java b/src/main/java/io/phasetwo/keycloak/model/jpa/entity/WebhookEntity.java index dc332c6..bfb671a 100644 --- a/src/main/java/io/phasetwo/keycloak/model/jpa/entity/WebhookEntity.java +++ b/src/main/java/io/phasetwo/keycloak/model/jpa/entity/WebhookEntity.java @@ -1,9 +1,9 @@ package io.phasetwo.keycloak.model.jpa.entity; +import jakarta.persistence.*; import java.util.Date; import java.util.HashSet; import java.util.Set; -import javax.persistence.*; @NamedQueries({ @NamedQuery( diff --git a/src/main/java/io/phasetwo/keycloak/resources/AbstractAdminResource.java b/src/main/java/io/phasetwo/keycloak/resources/AbstractAdminResource.java index c7f85ab..c644660 100644 --- a/src/main/java/io/phasetwo/keycloak/resources/AbstractAdminResource.java +++ b/src/main/java/io/phasetwo/keycloak/resources/AbstractAdminResource.java @@ -1,10 +1,10 @@ package io.phasetwo.keycloak.resources; -import javax.validation.constraints.*; -import javax.ws.rs.*; -import javax.ws.rs.NotAuthorizedException; -import javax.ws.rs.NotFoundException; -import javax.ws.rs.core.HttpHeaders; +import jakarta.validation.constraints.*; +import jakarta.ws.rs.*; +import jakarta.ws.rs.NotAuthorizedException; +import jakarta.ws.rs.NotFoundException; +import jakarta.ws.rs.core.HttpHeaders; import lombok.extern.jbosslog.JBossLog; import org.keycloak.common.ClientConnection; import org.keycloak.jose.jws.JWSInput; diff --git a/src/main/java/io/phasetwo/keycloak/resources/CorsResource.java b/src/main/java/io/phasetwo/keycloak/resources/CorsResource.java index bcd2201..27568f5 100644 --- a/src/main/java/io/phasetwo/keycloak/resources/CorsResource.java +++ b/src/main/java/io/phasetwo/keycloak/resources/CorsResource.java @@ -1,7 +1,7 @@ package io.phasetwo.keycloak.resources; -import javax.ws.rs.*; -import javax.ws.rs.core.Response; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.Response; import lombok.extern.jbosslog.JBossLog; import org.keycloak.http.HttpRequest; import org.keycloak.http.HttpResponse; diff --git a/src/main/java/io/phasetwo/keycloak/resources/EventsResource.java b/src/main/java/io/phasetwo/keycloak/resources/EventsResource.java index cc9648a..15c0f9f 100644 --- a/src/main/java/io/phasetwo/keycloak/resources/EventsResource.java +++ b/src/main/java/io/phasetwo/keycloak/resources/EventsResource.java @@ -4,15 +4,15 @@ import io.phasetwo.keycloak.events.WebhookSenderEventListenerProviderFactory; import io.phasetwo.keycloak.representation.ExtendedAdminEvent; import io.phasetwo.keycloak.representation.ExtendedAuthDetails; +import jakarta.validation.Valid; +import jakarta.validation.constraints.*; +import jakarta.ws.rs.*; +import jakarta.ws.rs.BadRequestException; +import jakarta.ws.rs.ClientErrorException; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; import java.util.Optional; import java.util.function.Supplier; -import javax.validation.Valid; -import javax.validation.constraints.*; -import javax.ws.rs.*; -import javax.ws.rs.BadRequestException; -import javax.ws.rs.ClientErrorException; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; import lombok.extern.jbosslog.JBossLog; import org.keycloak.events.EventListenerProvider; import org.keycloak.models.KeycloakSession; diff --git a/src/main/java/io/phasetwo/keycloak/resources/RealmAttributesResource.java b/src/main/java/io/phasetwo/keycloak/resources/RealmAttributesResource.java index 89a780b..cb20059 100644 --- a/src/main/java/io/phasetwo/keycloak/resources/RealmAttributesResource.java +++ b/src/main/java/io/phasetwo/keycloak/resources/RealmAttributesResource.java @@ -1,20 +1,20 @@ package io.phasetwo.keycloak.resources; import io.phasetwo.keycloak.representation.RealmAttributeRepresentation; +import jakarta.validation.constraints.*; +import jakarta.ws.rs.*; +import jakarta.ws.rs.BadRequestException; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.ForbiddenException; +import jakarta.ws.rs.NotFoundException; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; import java.util.Map; import java.util.stream.Collectors; -import javax.validation.constraints.*; -import javax.ws.rs.*; -import javax.ws.rs.BadRequestException; -import javax.ws.rs.Consumes; -import javax.ws.rs.ForbiddenException; -import javax.ws.rs.NotFoundException; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; import lombok.extern.jbosslog.JBossLog; import org.keycloak.models.KeycloakSession; diff --git a/src/main/java/io/phasetwo/keycloak/resources/WebhooksResource.java b/src/main/java/io/phasetwo/keycloak/resources/WebhooksResource.java index 1534dfc..c0a9b88 100644 --- a/src/main/java/io/phasetwo/keycloak/resources/WebhooksResource.java +++ b/src/main/java/io/phasetwo/keycloak/resources/WebhooksResource.java @@ -3,20 +3,20 @@ import io.phasetwo.keycloak.model.WebhookModel; import io.phasetwo.keycloak.model.WebhookProvider; import io.phasetwo.keycloak.representation.WebhookRepresentation; +import jakarta.validation.constraints.*; +import jakarta.ws.rs.*; +import jakarta.ws.rs.BadRequestException; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.NotFoundException; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; import java.net.URI; import java.net.URISyntaxException; import java.util.stream.Stream; -import javax.validation.constraints.*; -import javax.ws.rs.*; -import javax.ws.rs.BadRequestException; -import javax.ws.rs.Consumes; -import javax.ws.rs.NotFoundException; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; import lombok.extern.jbosslog.JBossLog; import org.keycloak.models.KeycloakSession; import org.keycloak.services.resources.admin.AdminRoot;