Skip to content

Commit c970c48

Browse files
authored
Migrate to Jackson 3 (#1095)
1 parent 4b23fd2 commit c970c48

File tree

182 files changed

+2819
-2538
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

182 files changed

+2819
-2538
lines changed

.github/workflows/build.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,10 @@ jobs:
3434
- name: Build
3535
run: ./mvnw --batch-mode --no-transfer-progress --show-version --settings .github/maven/settings.xml verify
3636

37-
# Run tests against Jackson 2.12 to ensure runtime compatibility (do not recompile)
38-
- name: Test Jackson 2.12.x
39-
run: ./mvnw --batch-mode --no-transfer-progress --show-version --settings .github/maven/settings.xml -Pcompat-jackson surefire:test
37+
# Re-enable after upgrading Jackson to 3.1+
38+
# # Run tests against Jackson 3.0.0 to ensure runtime compatibility (do not recompile)
39+
# - name: Test Jackson 3.0.0
40+
# run: ./mvnw --batch-mode --no-transfer-progress --show-version --settings .github/maven/settings.xml -Pcompat-jackson surefire:test
4041

4142
- name: Upload Test Reports to Github
4243
uses: actions/upload-artifact@v4

.github/workflows/release.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ jobs:
77
release:
88
name: release
99
runs-on: ubuntu-24.04
10-
needs: [build]
1110
if: github.repository == 'logfellow/logstash-logback-encoder' && github.ref == 'refs/heads/main'
1211
steps:
1312
- name: Checkout Code

README.md

Lines changed: 142 additions & 116 deletions
Large diffs are not rendered by default.

pom.xml

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
2424

2525
<!-- runtime dependencies -->
26-
<jackson.version>2.20.0</jackson.version>
26+
<jackson.version>3.0.0</jackson.version>
2727
<java-uuid-generator.version>5.1.1</java-uuid-generator.version>
2828
<logback-core.version>1.5.19</logback-core.version>
2929
<logback-access.version>2.0.6</logback-access.version>
@@ -64,7 +64,10 @@
6464

6565
<!-- maven-javadoc-plugin configuration -->
6666
<maven.javadoc.failOnError>true</maven.javadoc.failOnError>
67-
<maven.javadoc.failOnWarnings>true</maven.javadoc.failOnWarnings>
67+
<!-- A warning is emitted when javadoc is missing on a public/protected method.
68+
Disable failure in this case until the code is fully documented.
69+
-->
70+
<maven.javadoc.failOnWarnings>false</maven.javadoc.failOnWarnings>
6871

6972
<!-- the server id the maven-release-plugin uses to obtain credentials to use when pushing tags/commits -->
7073
<project.scm.id>github</project.scm.id>
@@ -116,7 +119,7 @@
116119
<dependencyManagement>
117120
<dependencies>
118121
<dependency>
119-
<groupId>com.fasterxml.jackson</groupId>
122+
<groupId>tools.jackson</groupId>
120123
<artifactId>jackson-bom</artifactId>
121124
<version>${jackson.version}</version>
122125
<type>pom</type>
@@ -165,27 +168,27 @@
165168
<optional>true</optional>
166169
</dependency>
167170
<dependency>
168-
<groupId>com.fasterxml.jackson.core</groupId>
171+
<groupId>tools.jackson.core</groupId>
169172
<artifactId>jackson-databind</artifactId>
170173
</dependency>
171174
<dependency>
172-
<groupId>com.fasterxml.jackson.dataformat</groupId>
175+
<groupId>tools.jackson.dataformat</groupId>
173176
<artifactId>jackson-dataformat-cbor</artifactId>
174177
<!--
175178
Only needed if net.logstash.logback.decorate.cbor is used.
176179
-->
177180
<optional>true</optional>
178181
</dependency>
179182
<dependency>
180-
<groupId>com.fasterxml.jackson.dataformat</groupId>
183+
<groupId>tools.jackson.dataformat</groupId>
181184
<artifactId>jackson-dataformat-smile</artifactId>
182185
<!--
183186
Only needed if net.logstash.logback.decorate.smile is used.
184187
-->
185188
<optional>true</optional>
186189
</dependency>
187190
<dependency>
188-
<groupId>com.fasterxml.jackson.dataformat</groupId>
191+
<groupId>tools.jackson.dataformat</groupId>
189192
<artifactId>jackson-dataformat-yaml</artifactId>
190193
<!--
191194
Only needed if net.logstash.logback.decorate.yaml is used.
@@ -270,7 +273,7 @@
270273
higher than the minimum JDK version we support.
271274
-->
272275
<enforceBytecodeVersion>
273-
<maxJdkVersion>11</maxJdkVersion>
276+
<maxJdkVersion>17</maxJdkVersion>
274277
<ignoreClasses>
275278
<ignoreClass>META-INF/versions/*</ignoreClass>
276279
</ignoreClasses>
@@ -548,8 +551,8 @@
548551
<link>https://javadoc.io/doc/ch.qos.logback/logback-classic/${logback-core.version}</link>
549552
<link>https://javadoc.io/doc/ch.qos.logback.access/logback-access-common/${logback-access.version}</link>
550553

551-
<link>https://javadoc.io/doc/com.fasterxml.jackson.core/jackson-core/${jackson.version}</link>
552-
<link>https://javadoc.io/doc/com.fasterxml.jackson.core/jackson-databind/${jackson.version}</link>
554+
<link>https://javadoc.io/doc/tools.jackson.core/jackson-core/${jackson.version}</link>
555+
<link>https://javadoc.io/doc/tools.jackson.core/jackson-databind/${jackson.version}</link>
553556
</links>
554557

555558
<!-- Explicitly set version. This should help to get rid of the following
@@ -682,19 +685,6 @@
682685
</build>
683686
</profile>
684687

685-
<profile>
686-
<id>java15</id>
687-
<activation>
688-
<jdk>[1.15,)</jdk>
689-
</activation>
690-
<properties>
691-
<!-- A warning is emitted when javadoc is missing on a public/protected method.
692-
Temporarily disable failure in this case until the code is fully documented.
693-
-->
694-
<maven.javadoc.failOnWarnings>false</maven.javadoc.failOnWarnings>
695-
</properties>
696-
</profile>
697-
698688
<profile>
699689
<id>github</id>
700690
<activation>
@@ -777,15 +767,19 @@
777767
</profile>
778768

779769
<!--
780-
Profile used to run backward compatibility tests against jackson 2.12
770+
Profile used to run backward compatibility tests against Jackson 3.0.0
771+
772+
Re-enable after upgrading Jackson to 3.1+
781773
-->
774+
<!--
782775
<profile>
783776
<id>compat-jackson</id>
784777
<properties>
785-
<jackson.version>2.12.7</jackson.version>
778+
<jackson.version>3.0.0</jackson.version>
786779
<surefire.reportsSubDir>jackson-${jackson.version}</surefire.reportsSubDir>
787780
</properties>
788781
</profile>
782+
-->
789783
</profiles>
790784

791785
</project>

src/main/java/net/logstash/logback/LogstashAccessFormatter.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
import ch.qos.logback.access.common.spi.IAccessEvent;
4545
import ch.qos.logback.core.joran.spi.DefaultClass;
4646
import ch.qos.logback.core.spi.ContextAware;
47-
import com.fasterxml.jackson.databind.JsonNode;
47+
import tools.jackson.databind.JsonNode;
4848

4949
/**
5050
* A {@link AccessEventCompositeJsonFormatter} that contains a common
@@ -119,12 +119,11 @@ private void updateMessageProvider() {
119119
//
120120
// { "fieldName": "messagePattern" }
121121
//
122-
String accessEventPattern = new StringBuilder("{\"")
123-
.append(this.fieldNames.getMessage())
124-
.append("\": \"")
125-
.append(escapeJson(this.messagePattern))
126-
.append("\"}")
127-
.toString();
122+
String accessEventPattern = "{\""
123+
+ this.fieldNames.getMessage()
124+
+ "\": \""
125+
+ escapeJson(this.messagePattern)
126+
+ "\"}";
128127

129128
AccessEventPatternJsonProvider messagePatternProvider = new AccessEventPatternJsonProvider();
130129
messagePatternProvider.setPattern(accessEventPattern);
@@ -184,7 +183,7 @@ public String getCustomFieldsAsString() {
184183
}
185184

186185
public void setCustomFieldsFromString(String customFields) {
187-
if (customFields == null || customFields.length() == 0) {
186+
if (customFields == null || customFields.isEmpty()) {
188187
getProviders().removeProvider(globalCustomFieldsProvider);
189188
globalCustomFieldsProvider = null;
190189
} else {

src/main/java/net/logstash/logback/LogstashFormatter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@
4545
import ch.qos.logback.classic.pattern.ThrowableHandlingConverter;
4646
import ch.qos.logback.classic.spi.ILoggingEvent;
4747
import ch.qos.logback.core.spi.ContextAware;
48-
import com.fasterxml.jackson.databind.JsonNode;
4948
import org.slf4j.MDC;
5049
import org.slf4j.event.KeyValuePair;
50+
import tools.jackson.databind.JsonNode;
5151

5252
/**
5353
* A {@link LoggingEventCompositeJsonFormatter} that contains a common
@@ -176,7 +176,7 @@ public String getCustomFieldsAsString() {
176176
}
177177

178178
public void setCustomFieldsFromString(String customFields) {
179-
if (customFields == null || customFields.length() == 0) {
179+
if (customFields == null || customFields.isEmpty()) {
180180
getProviders().removeProvider(globalCustomFieldsProvider);
181181
globalCustomFieldsProvider = null;
182182
} else {

src/main/java/net/logstash/logback/argument/DeferredStructuredArgument.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,14 @@
1515
*/
1616
package net.logstash.logback.argument;
1717

18-
import java.io.IOException;
1918
import java.util.Objects;
2019
import java.util.function.Supplier;
2120

2221
import net.logstash.logback.marker.EmptyLogstashMarker;
2322

2423
import ch.qos.logback.classic.spi.LoggingEvent;
25-
import com.fasterxml.jackson.core.JsonGenerator;
2624
import org.slf4j.Logger;
25+
import tools.jackson.core.JsonGenerator;
2726

2827
/**
2928
* A {@link StructuredArgument} that defers the creation of another {@link StructuredArgument} until
@@ -66,7 +65,7 @@ public DeferredStructuredArgument(Supplier<? extends StructuredArgument> structu
6665
}
6766

6867
@Override
69-
public void writeTo(JsonGenerator generator) throws IOException {
68+
public void writeTo(JsonGenerator generator) {
7069
getSuppliedValue().writeTo(generator);
7170
}
7271

src/main/java/net/logstash/logback/argument/StructuredArgument.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,10 @@
1515
*/
1616
package net.logstash.logback.argument;
1717

18-
import java.io.IOException;
19-
2018
import net.logstash.logback.composite.loggingevent.ArgumentsJsonProvider;
2119

22-
import com.fasterxml.jackson.core.JsonGenerator;
2320
import org.slf4j.Logger;
21+
import tools.jackson.core.JsonGenerator;
2422

2523
/**
2624
* A wrapper for an argument passed to a log method (e.g. {@link Logger#info(String, Object...)})
@@ -32,9 +30,8 @@ public interface StructuredArgument {
3230
* Writes the data associated with this argument to the given {@link JsonGenerator}.
3331
*
3432
* @param generator the {@link JsonGenerator} to produce JSON content
35-
* @throws IOException if an I/O error occurs
3633
*/
37-
void writeTo(JsonGenerator generator) throws IOException;
34+
void writeTo(JsonGenerator generator);
3835

3936
/**
4037
* Writes the data associated with this argument to a {@link String} to be

0 commit comments

Comments
 (0)