Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Spring 6 Spring Boot 3.x Support With Additional Spring 5 Backwards Compatibility #1467

Merged
merged 29 commits into from
Mar 27, 2023
Merged
Show file tree
Hide file tree
Changes from 28 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
b0159d6
Migrate to Spring 6 / Spring Boot 3
sdousti Feb 16, 2023
729fedb
Set JDK version to 17 in build.yaml
sdousti Feb 16, 2023
4814abb
Try version 3 of GitHub Actions
sdousti Feb 16, 2023
3d2d188
Add required 'distribution' parameter
sdousti Feb 16, 2023
f814777
Remove compilation warnings
sdousti Feb 16, 2023
ee118f8
Use -Opt-in rather than deprecated -XOpt-in
sdousti Feb 16, 2023
f3fe0d4
Use Optional.ofNullable instead of if
sdousti Feb 16, 2023
c14c1e9
Replace deprecated rawStatusCode()
msdousti Feb 16, 2023
a39e77c
Adapt new way to import AutoConfiguration
msdousti Feb 16, 2023
122d09d
fixed tests
ChristianLohmann Mar 20, 2023
0df458d
prepare to have a spring 5 backwards compatible version; Filter regis…
ChristianLohmann Mar 24, 2023
72b8ff2
removed unnecessary dependency
ChristianLohmann Mar 24, 2023
a6f48a7
Merge branch 'main' into spring-6-only
ChristianLohmann Mar 26, 2023
fe5db83
added deprecation suppression due to deprecated rawStatusCode method …
ChristianLohmann Mar 26, 2023
e92fc7f
distinguish between javax and jakarta servlet filter registration
ChristianLohmann Mar 26, 2023
da05d2d
fixed test
ChristianLohmann Mar 26, 2023
50e1604
fixed ConditionalOnClass annotation for javax config
ChristianLohmann Mar 26, 2023
63ab692
Make IntelliJ understand shaded artifact location
msdousti Mar 27, 2023
0d651a5
fix build-maven-helper-plugin execution
ChristianLohmann Mar 27, 2023
2639622
fixed filter bean name, added test for javax filter registration
ChristianLohmann Mar 27, 2023
359180b
combining compile and test step due to shaded dependency dependency i…
ChristianLohmann Mar 27, 2023
7158162
splitting compile & test step into to separate ones
ChristianLohmann Mar 27, 2023
dbd81b5
bump spring and spring boot versions
ChristianLohmann Mar 27, 2023
36fd12a
using project.build variable, added version to buil-helper-maven-plugin
ChristianLohmann Mar 27, 2023
4e63913
removed debug output in JavaxFilterTest
ChristianLohmann Mar 27, 2023
03e8bf3
removed unnecessary import
ChristianLohmann Mar 27, 2023
f237f5b
added spring 5 support documentation
ChristianLohmann Mar 27, 2023
3bc043b
using project.build.finalName instead of build.finalName
ChristianLohmann Mar 27, 2023
f48f4d2
extended docs, used Java 8 for compiler settings, removed unnecessary…
ChristianLohmann Mar 27, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:
java-version: 17
cache: 'maven'
- name: Compile
run: ./mvnw clean test-compile -B
run: ./mvnw clean package -DskipTests
- name: Test
run: ./mvnw verify -P "${{ matrix.profile }}" -B
- name: Coverage
Expand Down
19 changes: 16 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,15 @@ Logbook is ready to use out of the box for most common setups. Even for uncommon

## Dependencies

- Java 8
- Java 17
- Any build tool using Maven Central, or direct download
- Servlet Container (optional)
- Apache HTTP Client 4.x **or 5.x** (optional)
- JAX-RS 2.x Client and Server (optional)
- Netty 4.x (optional)
- OkHttp 2.x **or 3.x** (optional)
- Spring 5.x** (optional)
- Spring Boot 2.x** (optional)
- Spring **6.x** or Spring 5.x (optional, see instructions below)
- Spring Boot **3.x** or 2.x (optional)
- Ktor (optional)
- logstash-logback-encoder 5.x (optional)

Expand All @@ -52,6 +52,19 @@ Add the following dependency to your project:
</dependency>
```

### Spring 5 Support

For Spring 5 backwards compatibility please use the following import:

```xml
<dependency>
<groupId>org.zalando</groupId>
<artifactId>logbook-servlet</artifactId>
<version>${logbook.version}</version>
<classifier>javax</classifier>
</dependency>
```

Additional modules/artifacts of Logbook always share the same version number.

Alternatively, you can import our *bill of materials*...
Expand Down
6 changes: 3 additions & 3 deletions logbook-jaxrs/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@
<artifactId>logbook-api</artifactId>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.1.1</version>
<groupId>jakarta.ws.rs</groupId>
<artifactId>jakarta.ws.rs-api</artifactId>
<version>2.1.6</version>
</dependency>
<!-- testing -->
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import kotlin.annotation.AnnotationTarget.*
*
* Any usage of a declaration annotated with `@ExperimentalLogbookKtorApi` must be accepted either by
* annotating that usage with the [OptIn] annotation, e.g. `@OptIn(ExperimentalLogbookKtorApi::class)`,
* or by using the compiler argument `-Xopt-in=org.zalando.logbook.ktor.ExperimentalLogbookKtorApi`.
* or by using the compiler argument `-Opt-in=org.zalando.logbook.ktor.ExperimentalLogbookKtorApi`.
*/
@RequiresOptIn(level = WARNING)
@Retention(BINARY)
Expand Down
20 changes: 10 additions & 10 deletions logbook-parent/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>17</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>

<jackson.version>2.14.2</jackson.version>
<json-path.version>2.7.0</json-path.version>
Expand All @@ -36,12 +39,9 @@
<reactor-netty.version>1.1.3</reactor-netty.version>
<slf4j.version>1.7.36</slf4j.version>

<spring5.version>5.3.25</spring5.version>
<spring-security5.version>5.6.10</spring-security5.version>

<spring.version>5.3.25</spring.version>
<spring-boot.version>2.7.8</spring-boot.version>
<spring-security.version>5.8.1</spring-security.version>
<spring.version>6.0.7</spring.version>
<spring-boot.version>3.0.5</spring-boot.version>
<spring-security.version>6.0.1</spring-security.version>

<junit.version>5.9.2</junit.version>
<mockito.version>5.1.1</mockito.version>
Expand Down Expand Up @@ -133,9 +133,9 @@
</dependency>
<!-- javax -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>
<!-- JsonPath -->
Expand Down Expand Up @@ -385,7 +385,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<version>3.10.1</version>
<configuration>
<compilerArgs>
<compilerArg>-Xlint:unchecked,deprecation</compilerArg>
Expand Down
69 changes: 67 additions & 2 deletions logbook-servlet/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@
<connection>scm:git:[email protected]:zalando/logbook.git</connection>
<developerConnection>scm:git:[email protected]:zalando/logbook.git</developerConnection>
</scm>

<properties>
<shadedClassifierName>javax</shadedClassifierName>
</properties>

<dependencies>
<dependency>
<groupId>org.zalando</groupId>
Expand All @@ -24,8 +29,8 @@
<artifactId>logbook-core</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
</dependency>
<!-- testing -->
<dependency>
Expand Down Expand Up @@ -109,4 +114,64 @@
<artifactId>json-path-assert</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<id>jakarta</id>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>${shadedClassifierName}</shadedClassifierName>
<artifactSet>
<includes>
<include>${project.groupId}:${project.artifactId}</include>
</includes>
</artifactSet>
<relocations>
<relocation>
<pattern>jakarta.servlet</pattern>
<shadedPattern>javax.servlet</shadedPattern>
</relocation>
<relocation>
<pattern>org.zalando.logbook.servlet</pattern>
<shadedPattern>org.zalando.logbook.servlet.javax</shadedPattern>
</relocation>
</relocations>
</configuration>
</execution>
</executions>
</plugin>

<!-- Make IntelliJ understand the shaded artifact location -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
lukasniemeier-zalando marked this conversation as resolved.
Show resolved Hide resolved
<version>3.3.0</version>
<executions>
<execution>
<id>compile</id>
<phase>package</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>${project.build.directory}/${project.build.finalName}-${shadedClassifierName}.jar</file>
<classifier>${shadedClassifierName}</classifier>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package org.zalando.logbook.servlet;

import jakarta.servlet.AsyncEvent;

import java.io.IOException;
import javax.servlet.AsyncEvent;

@FunctionalInterface
interface AsyncOnCompleteListener {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package org.zalando.logbook.servlet;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.Filter;
import jakarta.servlet.FilterChain;
import jakarta.servlet.FilterConfig;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

interface HttpFilter extends Filter {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
package org.zalando.logbook.servlet;

import jakarta.servlet.ServletOutputStream;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.WriteListener;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletResponseWrapper;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.zalando.logbook.HttpHeaders;
import org.zalando.logbook.HttpResponse;
import org.zalando.logbook.Origin;

import javax.servlet.ServletOutputStream;
import javax.servlet.ServletResponse;
import javax.servlet.WriteListener;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package org.zalando.logbook.servlet;

import jakarta.servlet.AsyncEvent;
import jakarta.servlet.AsyncListener;

import java.io.IOException;
import javax.servlet.AsyncEvent;
import javax.servlet.AsyncListener;

class LogbookAsyncListener implements AsyncListener {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,9 @@
package org.zalando.logbook.servlet;

import java.io.IOException;
import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.annotation.Nullable;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.AllArgsConstructor;
import lombok.With;
import org.apiguardian.api.API;
Expand All @@ -18,7 +13,14 @@
import org.zalando.logbook.Logbook.ResponseProcessingStage;
import org.zalando.logbook.Logbook.ResponseWritingStage;
import org.zalando.logbook.Strategy;
import static javax.servlet.DispatcherType.ASYNC;

import javax.annotation.Nullable;
import java.io.IOException;
import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicBoolean;

import static jakarta.servlet.DispatcherType.ASYNC;
import static lombok.AccessLevel.PRIVATE;
import static org.apiguardian.api.API.Status.STABLE;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,20 @@
package org.zalando.logbook.servlet;

import jakarta.servlet.AsyncContext;
import jakarta.servlet.AsyncListener;
import jakarta.servlet.ServletInputStream;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequestWrapper;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.SneakyThrows;
import org.zalando.logbook.HttpHeaders;
import org.zalando.logbook.HttpRequest;
import org.zalando.logbook.Origin;
import org.zalando.logbook.common.MediaTypeQuery;

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
Expand All @@ -13,20 +28,7 @@
import java.util.Optional;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Predicate;
import javax.servlet.AsyncContext;
import javax.servlet.AsyncListener;
import javax.servlet.ServletInputStream;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.SneakyThrows;
import org.zalando.logbook.HttpHeaders;
import org.zalando.logbook.HttpRequest;
import org.zalando.logbook.Origin;
import org.zalando.logbook.common.MediaTypeQuery;

import static java.nio.charset.StandardCharsets.ISO_8859_1;
import static java.util.Collections.list;
import static java.util.stream.Collectors.joining;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package org.zalando.logbook.servlet;

import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.apiguardian.api.API;
import org.zalando.logbook.Logbook;
import org.zalando.logbook.SecurityStrategy;

import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

import static org.apiguardian.api.API.Status.STABLE;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package org.zalando.logbook.servlet;

import jakarta.servlet.ReadListener;
import jakarta.servlet.ServletInputStream;
import lombok.AllArgsConstructor;

import javax.servlet.ReadListener;
import javax.servlet.ServletInputStream;
import java.io.ByteArrayInputStream;
import java.io.IOException;

Expand Down
Loading