Undertow JakartaEE adapter in the testsuite

This commit is contained in:
Martin Bartoš 2023-01-10 18:32:51 +01:00 committed by Václav Muzikář
parent 124591ce1a
commit 77a494d3be
13 changed files with 177 additions and 31 deletions

View file

@ -196,18 +196,7 @@ public class UndertowHttpFacade implements HttpFacade {
inputStream = new BufferedInputStream(exchange.getInputStream()); inputStream = new BufferedInputStream(exchange.getInputStream());
context.setServletRequest(new HttpServletRequestWrapper((HttpServletRequest) servletRequest) { context.setServletRequest(UndertowHttpServletRequest.setupServletInputStream(servletRequest, inputStream));
@Override
public ServletInputStream getInputStream() {
inputStream.mark(0);
return new ServletInputStream() {
@Override
public int read() throws IOException {
return inputStream.read();
}
};
}
});
return inputStream; return inputStream;
} }

View file

@ -26,7 +26,7 @@ import java.io.InputStream;
public class UndertowHttpServletRequest { public class UndertowHttpServletRequest {
public static HttpServletRequestWrapper setupServletInputStream(ServletRequest servletRequest, InputStream inputStream) { public static HttpServletRequestWrapper setupServletInputStream(ServletRequest servletRequest, final InputStream inputStream) {
return new HttpServletRequestWrapper((HttpServletRequest) servletRequest) { return new HttpServletRequestWrapper((HttpServletRequest) servletRequest) {
@Override @Override
public ServletInputStream getInputStream() { public ServletInputStream getInputStream() {

View file

@ -41,7 +41,7 @@
<cache.server.java.home>${java.home}</cache.server.java.home> <cache.server.java.home>${java.home}</cache.server.java.home>
<!--component versions--> <!--component versions-->
<arquillian-core.version>1.6.0.Final</arquillian-core.version> <arquillian-core.version>1.7.0.Alpha13</arquillian-core.version>
<!--the version of shrinkwrap_resolver should align with the version in arquillian-bom--> <!--the version of shrinkwrap_resolver should align with the version in arquillian-bom-->
<shrinkwrap-resolver.version>3.1.4</shrinkwrap-resolver.version> <shrinkwrap-resolver.version>3.1.4</shrinkwrap-resolver.version>
<selenium.version>3.14.0</selenium.version> <selenium.version>3.14.0</selenium.version>

View file

@ -0,0 +1,16 @@
# Adapter SPI
This module is primarily used for custom adapters in the testsuite.
## Undertow
Modules related to Undertow:
* Keycloak Undertow Adapter SPI (`undertow-adapter-spi-jakarta`)
* Keycloak Undertow OIDC adapter (`undertow-adapter-jakarta`)
* Keycloak Undertow SAML adapter (`undertow-adapter-saml-jakarta`)
These modules are automatically generated from the Keycloak adapters module (`/adapters`) and converted to adapters supporting JakartaEE.
You can override files from the original module by putting the class with the same name into the `src` directory.
Do not forget to edit `.gitignore` file for changes, which should be kept in the module.
You can check the behavior in `undertow-adapter-spi-jakarta` module and class `UndertowHttpServletRequest`.

View file

@ -14,8 +14,9 @@
<name>Testsuite Adapter SPI</name> <name>Testsuite Adapter SPI</name>
<modules> <modules>
<module>undertow-adapter-jakarta-spi</module> <module>undertow-adapter-spi-jakarta</module>
<module>undertow-adapter-jakarta</module> <module>undertow-adapter-jakarta</module>
<module>undertow-adapter-saml-jakarta</module>
</modules> </modules>
<properties> <properties>

View file

@ -11,7 +11,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>keycloak-undertow-adapter-jakarta</artifactId> <artifactId>keycloak-undertow-adapter-jakarta</artifactId>
<name>App Server - Undertow (JakartaEE)</name> <name>Undertow OIDC Adapter (JakartaEE)</name>
<packaging>jar</packaging> <packaging>jar</packaging>
<properties> <properties>
@ -27,12 +27,16 @@
*;resolution:=optional *;resolution:=optional
</keycloak.osgi.import> </keycloak.osgi.import>
<undertow-adapter-spi-base>${project.basedir}/../../../../../adapters/oidc/undertow</undertow-adapter-spi-base> <jakarta-transformer-sources>${project.basedir}/../../../../../adapters/oidc/undertow</jakarta-transformer-sources>
<jakarta-transformer-sources>${undertow-adapter-spi-base}/</jakarta-transformer-sources>
<jakarta-transformer-target>${project.basedir}</jakarta-transformer-target> <jakarta-transformer-target>${project.basedir}</jakarta-transformer-target>
</properties> </properties>
<dependencies> <dependencies>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-undertow-adapter-spi-jakarta</artifactId>
<version>${project.version}</version>
</dependency>
<dependency> <dependency>
<groupId>org.jboss.logging</groupId> <groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId> <artifactId>jboss-logging</artifactId>
@ -46,11 +50,6 @@
<groupId>org.keycloak</groupId> <groupId>org.keycloak</groupId>
<artifactId>keycloak-adapter-spi</artifactId> <artifactId>keycloak-adapter-spi</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>integration-arquillian-undertow-jakarta-spi</artifactId>
<version>${project.version}</version>
</dependency>
<dependency> <dependency>
<groupId>org.keycloak</groupId> <groupId>org.keycloak</groupId>
<artifactId>keycloak-adapter-core</artifactId> <artifactId>keycloak-adapter-core</artifactId>

View file

@ -0,0 +1,138 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>integration-arquillian-servers</artifactId>
<groupId>org.keycloak.testsuite</groupId>
<version>999-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>keycloak-saml-undertow-adapter-jakarta</artifactId>
<name>Undertow SAML Adapter (JakartaEE)</name>
<packaging>jar</packaging>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<jakarta-transformer-sources>${project.basedir}/../../../../../adapters/saml/undertow</jakarta-transformer-sources>
<jakarta-transformer-target>${project.basedir}</jakarta-transformer-target>
</properties>
<dependencies>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-saml-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-adapter-spi</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-common</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-saml-adapter-api-public</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-saml-adapter-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.keycloak.testsuite</groupId>
<artifactId>keycloak-undertow-adapter-jakarta</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.spec.javax.servlet</groupId>
<artifactId>jboss-servlet-api_3.0_spec</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.undertow</groupId>
<artifactId>undertow-servlet</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.undertow</groupId>
<artifactId>undertow-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>transform</id>
<phase>initialize</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<property name="plugin_classpath" refid="maven.plugin.classpath" />
<java classname="org.eclipse.transformer.jakarta.JakartaTransformer">
<arg value="-o" />
<arg value="${jakarta-transformer-sources}" />
<arg value="${jakarta-transformer-target}/tmp" />
<classpath>
<pathelement path="${plugin_classpath}" />
</classpath>
</java>
<touch>
<fileset dir="${jakarta-transformer-target}"/>
</touch>
<copy todir="${jakarta-transformer-target}" overwrite="false">
<fileset dir="${jakarta-transformer-target}/tmp"/>
</copy>
<delete dir="${jakarta-transformer-target}/tmp"/>
</target>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.eclipse.transformer</groupId>
<artifactId>org.eclipse.transformer.cli</artifactId>
<version>0.2.0</version>
</dependency>
<dependency>
<groupId>ant-contrib</groupId>
<artifactId>ant-contrib</artifactId>
<version>1.0b3</version>
<exclusions>
<exclusion>
<groupId>ant</groupId>
<artifactId>ant</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>

View file

@ -10,15 +10,15 @@
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>integration-arquillian-undertow-jakarta-spi</artifactId> <artifactId>keycloak-undertow-adapter-spi-jakarta</artifactId>
<name>App Server - Undertow SPI (JakartaEE)</name> <name>Adapter Undertow SPI (JakartaEE)</name>
<properties> <properties>
<maven.compiler.source>11</maven.compiler.source> <maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target> <maven.compiler.target>11</maven.compiler.target>
<undertow-adapter-spi-base>${project.basedir}/../../../../../adapters/spi/undertow-adapter-spi</undertow-adapter-spi-base> <undertow-adapter-base>${project.basedir}/../../../../../adapters/spi/undertow-adapter-spi</undertow-adapter-base>
<jakarta-transformer-sources>${undertow-adapter-spi-base}/src/main/java/org/keycloak/adapters/undertow/</jakarta-transformer-sources> <jakarta-transformer-sources>${undertow-adapter-base}/src/main/java/org/keycloak/adapters/undertow/</jakarta-transformer-sources>
<jakarta-transformer-target>${project.basedir}/src/main/java/org/keycloak/adapters/undertow/</jakarta-transformer-target> <jakarta-transformer-target>${project.basedir}/src/main/java/org/keycloak/adapters/undertow/</jakarta-transformer-target>
</properties> </properties>

View file

@ -34,8 +34,9 @@
<version>${project.version}</version> <version>${project.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.keycloak</groupId> <groupId>org.keycloak.testsuite</groupId>
<artifactId>keycloak-saml-undertow-adapter</artifactId> <artifactId>keycloak-saml-undertow-adapter-jakarta</artifactId>
<version>${project.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.keycloak</groupId> <groupId>org.keycloak</groupId>

View file

@ -186,8 +186,9 @@
<artifactId>keycloak-servlet-filter-adapter</artifactId> <artifactId>keycloak-servlet-filter-adapter</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.keycloak</groupId> <groupId>org.keycloak.testsuite</groupId>
<artifactId>keycloak-saml-undertow-adapter</artifactId> <artifactId>keycloak-saml-undertow-adapter-jakarta</artifactId>
<version>${project.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.keycloak</groupId> <groupId>org.keycloak</groupId>