diff --git a/.github/workflows/dep_build_v2.yml b/.github/workflows/dep_build_v2.yml
index 2f27651a..54758c09 100644
--- a/.github/workflows/dep_build_v2.yml
+++ b/.github/workflows/dep_build_v2.yml
@@ -19,9 +19,9 @@ jobs:
env:
JAVA_OPTS: "-XX:+TieredCompilation -XX:TieredStopAtLevel=1"
steps:
- - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Set up JDK
- uses: actions/setup-java@6a0805fcefea3d4657a47ac4c165951e33482018 # v4.2.2
+ uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0
with:
distribution: 'temurin'
java-version: ${{ matrix.java_version }}
diff --git a/.github/workflows/dep_build_v3.yml b/.github/workflows/dep_build_v3.yml
index 207b38f0..f4f980e1 100644
--- a/.github/workflows/dep_build_v3.yml
+++ b/.github/workflows/dep_build_v3.yml
@@ -15,15 +15,15 @@ jobs:
strategy:
fail-fast: false
matrix:
- java_version: ['8', '17', '21']
+ java_version: ['17', '21']
env:
JAVA_OPTS: "-XX:+TieredCompilation -XX:TieredStopAtLevel=1"
steps:
- - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: master
- name: Set up JDK
- uses: actions/setup-java@6a0805fcefea3d4657a47ac4c165951e33482018 # v4.2.2
+ uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0
with:
distribution: 'temurin'
java-version: ${{ matrix.java_version }}
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 01b48a85..00039838 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -14,7 +14,7 @@ permissions:
env:
GUAVA_DEFAULT: '25.1-jre'
- GUAVA_MIN: '20.0'
+ GUAVA_MIN: '22.0'
GUAVA_MAX: '33.1.0-jre'
jobs:
build:
@@ -32,9 +32,9 @@ jobs:
env:
JAVA_OPTS: "-XX:+TieredCompilation -XX:TieredStopAtLevel=1"
steps:
- - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Set up JDK
- uses: actions/setup-java@6a0805fcefea3d4657a47ac4c165951e33482018 # v4.2.2
+ uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0
with:
distribution: 'temurin'
java-version: ${{ matrix.java_version }}
@@ -66,7 +66,7 @@ jobs:
run: ./mvnw -B -q -ff -ntp test
- name: Publish code coverage
if: ${{ github.event_name != 'pull_request' && matrix.snapshot && endsWith(steps.projectVersion.outputs.version, '-SNAPSHOT') }}
- uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # v4.5.0
+ uses: codecov/codecov-action@1e68e06f1dbfde0e4cefc87efeba9e4643565303 # v5.1.2
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: ./target/site/jacoco/jacoco.xml
diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
index 642d572c..b9b1153a 100644
--- a/.mvn/wrapper/maven-wrapper.properties
+++ b/.mvn/wrapper/maven-wrapper.properties
@@ -1,2 +1,18 @@
-distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
-wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip
+wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.3.2/maven-wrapper-3.3.2.jar
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 6bff9862..00000000
--- a/.travis.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-language: java
-
-jdk:
- - openjdk8
- - openjdk11
-
-branches:
- only:
- - "2.13"
- - "master"
-
-script: mvn -B clean verify
diff --git a/eclipse-collections/pom.xml b/eclipse-collections/pom.xml
index 82db77a7..2d6322c4 100644
--- a/eclipse-collections/pom.xml
+++ b/eclipse-collections/pom.xml
@@ -9,7 +9,7 @@
com.fasterxml.jackson.datatype
jackson-datatypes-collections
- 2.18.5-SNAPSHOT
+ 2.19.0-SNAPSHOT
jackson-datatype-eclipse-collections
Jackson datatype: eclipse-collections
diff --git a/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/BooleanIterableSerializer.java b/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/BooleanIterableSerializer.java
index 4dd12d81..cbc1fa80 100644
--- a/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/BooleanIterableSerializer.java
+++ b/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/BooleanIterableSerializer.java
@@ -1,25 +1,18 @@
package com.fasterxml.jackson.datatype.eclipsecollections.ser;
+import java.io.IOException;
+
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.BeanProperty;
-import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.type.TypeFactory;
-import java.io.IOException;
+
import org.eclipse.collections.api.BooleanIterable;
import org.eclipse.collections.api.iterator.BooleanIterator;
public final class BooleanIterableSerializer extends PrimitiveIterableSerializer {
private static final long serialVersionUID = 1L;
- private static final JavaType ELEMENT_TYPE = TypeFactory.defaultInstance().constructType(boolean.class);
-
public BooleanIterableSerializer(BeanProperty property, Boolean unwrapSingle) {
- super(BooleanIterable.class, ELEMENT_TYPE, property, unwrapSingle);
- }
-
- @Override
- protected BooleanIterableSerializer withResolved(BeanProperty property, Boolean unwrapSingle) {
- return new BooleanIterableSerializer(property, unwrapSingle);
+ super(BooleanIterable.class, elementType(boolean.class), property, unwrapSingle);
}
@Override
diff --git a/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/DoubleIterableSerializer.java b/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/DoubleIterableSerializer.java
index 1c809eed..ef828b4b 100644
--- a/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/DoubleIterableSerializer.java
+++ b/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/DoubleIterableSerializer.java
@@ -1,25 +1,18 @@
package com.fasterxml.jackson.datatype.eclipsecollections.ser;
+import java.io.IOException;
+
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.BeanProperty;
-import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.type.TypeFactory;
-import java.io.IOException;
+
import org.eclipse.collections.api.DoubleIterable;
import org.eclipse.collections.api.iterator.DoubleIterator;
public final class DoubleIterableSerializer extends PrimitiveIterableSerializer {
private static final long serialVersionUID = 1L;
- private static final JavaType ELEMENT_TYPE = TypeFactory.defaultInstance().constructType(double.class);
-
public DoubleIterableSerializer(BeanProperty property, Boolean unwrapSingle) {
- super(DoubleIterable.class, ELEMENT_TYPE, property, unwrapSingle);
- }
-
- @Override
- protected DoubleIterableSerializer withResolved(BeanProperty property, Boolean unwrapSingle) {
- return new DoubleIterableSerializer(property, unwrapSingle);
+ super(DoubleIterable.class, elementType(double.class), property, unwrapSingle);
}
@Override
diff --git a/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/FloatIterableSerializer.java b/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/FloatIterableSerializer.java
index 863a6b7a..bc5ec343 100644
--- a/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/FloatIterableSerializer.java
+++ b/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/FloatIterableSerializer.java
@@ -1,25 +1,18 @@
package com.fasterxml.jackson.datatype.eclipsecollections.ser;
+import java.io.IOException;
+
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.BeanProperty;
-import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.type.TypeFactory;
-import java.io.IOException;
+
import org.eclipse.collections.api.FloatIterable;
import org.eclipse.collections.api.iterator.FloatIterator;
public final class FloatIterableSerializer extends PrimitiveIterableSerializer {
private static final long serialVersionUID = 1L;
- private static final JavaType ELEMENT_TYPE = TypeFactory.defaultInstance().constructType(float.class);
-
public FloatIterableSerializer(BeanProperty property, Boolean unwrapSingle) {
- super(FloatIterable.class, ELEMENT_TYPE, property, unwrapSingle);
- }
-
- @Override
- protected FloatIterableSerializer withResolved(BeanProperty property, Boolean unwrapSingle) {
- return new FloatIterableSerializer(property, unwrapSingle);
+ super(FloatIterable.class, elementType(float.class), property, unwrapSingle);
}
@Override
diff --git a/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/IntIterableSerializer.java b/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/IntIterableSerializer.java
index 991098ce..4da7bc82 100644
--- a/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/IntIterableSerializer.java
+++ b/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/IntIterableSerializer.java
@@ -1,25 +1,18 @@
package com.fasterxml.jackson.datatype.eclipsecollections.ser;
+import java.io.IOException;
+
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.BeanProperty;
-import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.type.TypeFactory;
-import java.io.IOException;
+
import org.eclipse.collections.api.IntIterable;
import org.eclipse.collections.api.iterator.IntIterator;
public final class IntIterableSerializer extends PrimitiveIterableSerializer {
private static final long serialVersionUID = 1L;
- private static final JavaType ELEMENT_TYPE = TypeFactory.defaultInstance().constructType(int.class);
-
public IntIterableSerializer(BeanProperty property, Boolean unwrapSingle) {
- super(IntIterable.class, ELEMENT_TYPE, property, unwrapSingle);
- }
-
- @Override
- protected IntIterableSerializer withResolved(BeanProperty property, Boolean unwrapSingle) {
- return new IntIterableSerializer(property, unwrapSingle);
+ super(IntIterable.class, elementType(int.class), property, unwrapSingle);
}
@Override
diff --git a/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/LongIterableSerializer.java b/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/LongIterableSerializer.java
index aba00ca0..c3c280aa 100644
--- a/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/LongIterableSerializer.java
+++ b/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/LongIterableSerializer.java
@@ -1,25 +1,18 @@
package com.fasterxml.jackson.datatype.eclipsecollections.ser;
+import java.io.IOException;
+
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.BeanProperty;
-import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.type.TypeFactory;
-import java.io.IOException;
+
import org.eclipse.collections.api.LongIterable;
import org.eclipse.collections.api.iterator.LongIterator;
public final class LongIterableSerializer extends PrimitiveIterableSerializer {
private static final long serialVersionUID = 1L;
- private static final JavaType ELEMENT_TYPE = TypeFactory.defaultInstance().constructType(long.class);
-
public LongIterableSerializer(BeanProperty property, Boolean unwrapSingle) {
- super(LongIterable.class, ELEMENT_TYPE, property, unwrapSingle);
- }
-
- @Override
- protected LongIterableSerializer withResolved(BeanProperty property, Boolean unwrapSingle) {
- return new LongIterableSerializer(property, unwrapSingle);
+ super(LongIterable.class, elementType(long.class), property, unwrapSingle);
}
@Override
diff --git a/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/PrimitiveIterableSerializer.java b/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/PrimitiveIterableSerializer.java
index 2b286d62..753933e2 100644
--- a/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/PrimitiveIterableSerializer.java
+++ b/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/PrimitiveIterableSerializer.java
@@ -10,6 +10,8 @@
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
import com.fasterxml.jackson.databind.ser.ContainerSerializer;
+import com.fasterxml.jackson.databind.type.TypeFactory;
+
import java.io.IOException;
import org.eclipse.collections.api.PrimitiveIterable;
@@ -31,8 +33,6 @@ public PrimitiveIterableSerializer(
_unwrapSingle = unwrapSingle;
}
- protected abstract PrimitiveIterableSerializer withResolved(BeanProperty property, Boolean unwrapSingle);
-
@Override
public boolean isEmpty(SerializerProvider prov, C value) {
return value.isEmpty();
@@ -87,4 +87,9 @@ public void serializeWithType(C value, JsonGenerator g, SerializerProvider provi
}
protected abstract void serializeContents(C value, JsonGenerator gen) throws IOException;
+
+ // @since 2.19
+ protected static JavaType elementType(Class> rawElementType) {
+ return TypeFactory.defaultInstance().constructType(rawElementType);
+ }
}
diff --git a/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/ShortIterableSerializer.java b/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/ShortIterableSerializer.java
index 365a73a6..2d6c65c2 100644
--- a/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/ShortIterableSerializer.java
+++ b/eclipse-collections/src/main/java/com/fasterxml/jackson/datatype/eclipsecollections/ser/ShortIterableSerializer.java
@@ -1,25 +1,18 @@
package com.fasterxml.jackson.datatype.eclipsecollections.ser;
+import java.io.IOException;
+
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.BeanProperty;
-import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.type.TypeFactory;
-import java.io.IOException;
+
import org.eclipse.collections.api.ShortIterable;
import org.eclipse.collections.api.iterator.ShortIterator;
public final class ShortIterableSerializer extends PrimitiveIterableSerializer {
private static final long serialVersionUID = 1L;
- private static final JavaType ELEMENT_TYPE = TypeFactory.defaultInstance().constructType(short.class);
-
public ShortIterableSerializer(BeanProperty property, Boolean unwrapSingle) {
- super(ShortIterable.class, ELEMENT_TYPE, property, unwrapSingle);
- }
-
- @Override
- protected ShortIterableSerializer withResolved(BeanProperty property, Boolean unwrapSingle) {
- return new ShortIterableSerializer(property, unwrapSingle);
+ super(ShortIterable.class, elementType(short.class), property, unwrapSingle);
}
@Override
diff --git a/eclipse-collections/src/test/java/com/fasterxml/jackson/datatype/eclipsecollections/DeserializerTest.java b/eclipse-collections/src/test/java/com/fasterxml/jackson/datatype/eclipsecollections/DeserializerTest.java
index f990e2f6..28e9a1e6 100644
--- a/eclipse-collections/src/test/java/com/fasterxml/jackson/datatype/eclipsecollections/DeserializerTest.java
+++ b/eclipse-collections/src/test/java/com/fasterxml/jackson/datatype/eclipsecollections/DeserializerTest.java
@@ -167,21 +167,22 @@
import org.eclipse.collections.impl.factory.primitive.ShortSets;
import org.eclipse.collections.impl.tuple.Tuples;
import org.eclipse.collections.impl.tuple.primitive.PrimitiveTuples;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
public final class DeserializerTest extends ModuleTestBase {
private void testCollection(T expected, String json, TypeReference type) throws IOException {
ObjectMapper objectMapper = mapperWithModule();
T value = objectMapper.readValue(json, type);
- Assert.assertEquals(expected, value);
- Assert.assertTrue(objectMapper.getTypeFactory().constructType(type).getRawClass().isInstance(value));
+ assertEquals(expected, value);
+ assertTrue(objectMapper.getTypeFactory().constructType(type).getRawClass().isInstance(value));
}
private void testCollection(T expected, String json, Class type) throws IOException {
T value = mapperWithModule().readValue(json, type);
- Assert.assertEquals(expected, value);
- Assert.assertTrue(type.isInstance(value));
+ assertEquals(expected, value);
+ assertTrue(type.isInstance(value));
}
@Test
@@ -465,7 +466,7 @@ static void primitiveMaps0(ObjectMapper mapper, boolean serialize) throws Except
.getMethod("ofAll", baseMapType)
.invoke(immutableFactory, mutableSample);
- Assert.assertEquals(mutableSample, immutableSample);
+ assertEquals(mutableSample, immutableSample);
Function, JavaType> generify;
if (key == Object.class || value == Object.class) {
@@ -483,21 +484,21 @@ static void primitiveMaps0(ObjectMapper mapper, boolean serialize) throws Except
mapper.writerFor(generify.apply(baseMapType)).writeValueAsString(mutableSample);
String polyPrinted = mapper.writeValueAsString(mutableSample);
// compare trees so property order doesn't matter
- Assert.assertEquals(mapper.readTree(json), mapper.readTree(mutablePrinted));
- Assert.assertEquals(mapper.readTree(json), mapper.readTree(immutablePrinted));
- Assert.assertEquals(mapper.readTree(json), mapper.readTree(basePrinted));
- Assert.assertEquals(mapper.readTree(json), mapper.readTree(polyPrinted));
+ assertEquals(mapper.readTree(json), mapper.readTree(mutablePrinted));
+ assertEquals(mapper.readTree(json), mapper.readTree(immutablePrinted));
+ assertEquals(mapper.readTree(json), mapper.readTree(basePrinted));
+ assertEquals(mapper.readTree(json), mapper.readTree(polyPrinted));
} else {
Object mutableParsed = mapper.readValue(json, generify.apply(mutableMapType));
Object immutableParsed = mapper.readValue(json, generify.apply(immutableMapType));
Object baseParsed = mapper.readValue(json, generify.apply(baseMapType));
- Assert.assertEquals(mutableSample, mutableParsed);
- Assert.assertEquals(immutableSample, immutableParsed);
- Assert.assertEquals(mutableSample, baseParsed);
+ assertEquals(mutableSample, mutableParsed);
+ assertEquals(immutableSample, immutableParsed);
+ assertEquals(mutableSample, baseParsed);
- Assert.assertTrue(mutableMapType.isInstance(mutableParsed));
- Assert.assertTrue(immutableMapType.isInstance(immutableParsed));
- Assert.assertTrue(baseMapType.isInstance(baseParsed));
+ assertTrue(mutableMapType.isInstance(mutableParsed));
+ assertTrue(immutableMapType.isInstance(immutableParsed));
+ assertTrue(baseMapType.isInstance(baseParsed));
}
}
}
@@ -509,19 +510,19 @@ private static String capitalize(String simpleName) {
@Test
public void objectObjectMaps() throws IOException {
- Assert.assertEquals(
+ assertEquals(
mapperWithModule().readValue("{\"abc\":\"def\"}", new TypeReference>() {}),
Maps.mutable.of("abc", "def")
);
- Assert.assertEquals(
+ assertEquals(
mapperWithModule().readValue("{\"abc\":\"def\"}", new TypeReference>() {}),
Maps.immutable.of("abc", "def")
);
- Assert.assertEquals(
+ assertEquals(
mapperWithModule().readValue("{\"abc\":\"def\"}", new TypeReference>() {}),
Maps.mutable.of("abc", "def")
);
- Assert.assertEquals(
+ assertEquals(
mapperWithModule().readValue("{\"abc\":\"def\"}",
new TypeReference>() {}),
Maps.mutable.of("abc", "def")
@@ -544,7 +545,7 @@ private static Object randomSample(Class> type) {
@Test
public void typeInfoObjectMap() throws IOException {
- Assert.assertEquals(
+ assertEquals(
mapperWithModule()
.readValue("{\"map\":{\"0\":{\"@c\":\".DeserializerTest$B\"}}}", Container.class).map,
IntObjectMaps.immutable.of(0, new B())
@@ -581,7 +582,7 @@ public void typeInfoNestedMapList() throws IOException {
// test case for jackson-datatypes-collections#71
ImmutableMap> property =
Maps.immutable.of("foo", Lists.immutable.of(new B()));
- Assert.assertEquals(
+ assertEquals(
mapperWithModule().readValue(
"{\"foo\": [{\"@c\": \".DeserializerTest$B\"}]}",
new TypeReference>>() {}),
@@ -594,7 +595,7 @@ public void typeInfoNestedMapMap() throws IOException {
// auxiliary test case for jackson-datatypes-collections#71 - also worked before fix
ImmutableMap> property =
Maps.immutable.of("foo", Maps.immutable.of("bar", new B()));
- Assert.assertEquals(
+ assertEquals(
mapperWithModule().readValue(
"{\"foo\": {\"bar\": {\"@c\": \".DeserializerTest$B\"}}}",
new TypeReference>>() {}),
@@ -656,8 +657,8 @@ public void primitivePairs() throws Exception {
+ ",\"two\":" + mapperWithModule().writeValueAsString(sampleTwo) + "}";
Object samplePair = factory.invoke(null, sampleOne, sampleTwo);
- Assert.assertEquals(expectedJson, mapperWithModule().writeValueAsString(samplePair));
- Assert.assertEquals(samplePair, mapperWithModule().readValue(expectedJson, pairType));
+ assertEquals(expectedJson, mapperWithModule().writeValueAsString(samplePair));
+ assertEquals(samplePair, mapperWithModule().readValue(expectedJson, pairType));
}
}
}
@@ -670,8 +671,8 @@ public void twin() throws Exception {
String expectedJson = "{\"one\":" + mapper.writeValueAsString(sampleOne)
+ ",\"two\":" + mapper.writeValueAsString(sampleTwo) + "}";
Twin twin = Tuples.twin((String) sampleOne, (String) sampleTwo);
- Assert.assertEquals(expectedJson, mapper.writeValueAsString(twin));
- Assert.assertEquals(twin, mapper.readValue(expectedJson, new TypeReference>() {}));
+ assertEquals(expectedJson, mapper.writeValueAsString(twin));
+ assertEquals(twin, mapper.readValue(expectedJson, new TypeReference>() {}));
}
@Test
@@ -681,8 +682,8 @@ public void pairTyped() throws Exception {
final String actJson = mapper.writerFor(new TypeReference>() {})
.writeValueAsString(pair);
String expJson = "{\"one\":{\"@c\":\".DeserializerTest$B\"},\"two\":5}";
- Assert.assertEquals(mapper.readTree(expJson), mapper.readTree(actJson));
- Assert.assertEquals(pair,
+ assertEquals(mapper.readTree(expJson), mapper.readTree(actJson));
+ assertEquals(pair,
mapper.readValue(actJson, new TypeReference>() {})
);
}
@@ -693,8 +694,8 @@ public void nestedMap() throws Exception {
String json = "{\"a\":{\"b\":\"c\"}}";
TypeReference>> type =
new TypeReference>>() {};
- Assert.assertEquals(json, mapperWithModule().writerFor(type).writeValueAsString(pair));
- Assert.assertEquals(pair, mapperWithModule().readValue(json, type));
+ assertEquals(json, mapperWithModule().writerFor(type).writeValueAsString(pair));
+ assertEquals(pair, mapperWithModule().readValue(json, type));
}
@Test
@@ -704,8 +705,8 @@ public void triple() throws Exception {
String actJson = mapper.writerFor(new TypeReference>() {})
.writeValueAsString(triple);
String expJson = "{\"one\":\"a\",\"two\":2,\"three\":false}";
- Assert.assertEquals(mapper.readTree(expJson), mapper.readTree(actJson));
- Assert.assertEquals(
+ assertEquals(mapper.readTree(expJson), mapper.readTree(actJson));
+ assertEquals(
triple,
mapper.readValue(actJson, new TypeReference>() {})
);
@@ -718,8 +719,8 @@ public void triplet() throws Exception {
String actJson = mapper.writerFor(new TypeReference>() {})
.writeValueAsString(triple);
String expJson = "{\"one\":\"a\",\"two\":\"b\",\"three\":\"c\"}";
- Assert.assertEquals(mapper.readTree(expJson), mapper.readTree(actJson));
- Assert.assertEquals(
+ assertEquals(mapper.readTree(expJson), mapper.readTree(actJson));
+ assertEquals(
triple,
mapper.readValue(actJson, new TypeReference>() {})
);
diff --git a/eclipse-collections/src/test/java/com/fasterxml/jackson/datatype/eclipsecollections/Fuzz124_64629Test.java b/eclipse-collections/src/test/java/com/fasterxml/jackson/datatype/eclipsecollections/Fuzz124_64629Test.java
index f9cee32d..72a2810b 100644
--- a/eclipse-collections/src/test/java/com/fasterxml/jackson/datatype/eclipsecollections/Fuzz124_64629Test.java
+++ b/eclipse-collections/src/test/java/com/fasterxml/jackson/datatype/eclipsecollections/Fuzz124_64629Test.java
@@ -1,15 +1,13 @@
package com.fasterxml.jackson.datatype.eclipsecollections;
-import static org.junit.Assert.assertTrue;
-
-import org.junit.Assert;
-import org.junit.Test;
-
import org.eclipse.collections.api.map.primitive.MutableCharCharMap;
+import org.junit.jupiter.api.Test;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.exc.MismatchedInputException;
+import static org.junit.jupiter.api.Assertions.*;
+
/**
* Unit tests for verifying the fixes for OSS-Fuzz issues
* work as expected
@@ -25,7 +23,7 @@ public void testOSSFuzzIssue64629() throws Exception
// Invalid token {"x?":[x?]: where ? is not ascii characters
final char[] invalid = {123, 34, 824, 34, 58, 91, 120, 7, 93};
- MismatchedInputException e = Assert.assertThrows(
+ MismatchedInputException e = assertThrows(
MismatchedInputException.class,
() -> MAPPER.readValue(new String(invalid), MutableCharCharMap.class));
assertTrue(e.getMessage().contains("Cannot convert a JSON Null into a char element of map"));
diff --git a/eclipse-collections/src/test/java/com/fasterxml/jackson/datatype/eclipsecollections/ModuleTestBase.java b/eclipse-collections/src/test/java/com/fasterxml/jackson/datatype/eclipsecollections/ModuleTestBase.java
index 3acbd1e6..6082a6a2 100644
--- a/eclipse-collections/src/test/java/com/fasterxml/jackson/datatype/eclipsecollections/ModuleTestBase.java
+++ b/eclipse-collections/src/test/java/com/fasterxml/jackson/datatype/eclipsecollections/ModuleTestBase.java
@@ -3,7 +3,7 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Arrays;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.fail;
public abstract class ModuleTestBase {
diff --git a/eclipse-collections/src/test/java/com/fasterxml/jackson/datatype/eclipsecollections/SerializerTest.java b/eclipse-collections/src/test/java/com/fasterxml/jackson/datatype/eclipsecollections/SerializerTest.java
index 600727a6..6b6375f2 100644
--- a/eclipse-collections/src/test/java/com/fasterxml/jackson/datatype/eclipsecollections/SerializerTest.java
+++ b/eclipse-collections/src/test/java/com/fasterxml/jackson/datatype/eclipsecollections/SerializerTest.java
@@ -24,13 +24,15 @@
import org.eclipse.collections.impl.factory.primitive.IntObjectMaps;
import org.eclipse.collections.impl.factory.primitive.LongLists;
import org.eclipse.collections.impl.factory.primitive.ShortLists;
-import org.junit.Assert;
-import org.junit.Test;
+
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
public final class SerializerTest extends ModuleTestBase {
@Test
public void ref() throws IOException {
- Assert.assertEquals(
+ assertEquals(
"[\"a\",\"b\",\"c\"]",
mapperWithModule().writeValueAsString(Sets.immutable.of("a", "b", "c"))
);
@@ -38,26 +40,26 @@ public void ref() throws IOException {
@Test
public void primitive() throws IOException {
- Assert.assertEquals("[true,false,true]", mapperWithModule().writeValueAsString(
+ assertEquals("[true,false,true]", mapperWithModule().writeValueAsString(
BooleanLists.immutable.of(true, false, true)));
- Assert.assertEquals("[1,2,3]", mapperWithModule().writeValueAsString(
+ assertEquals("[1,2,3]", mapperWithModule().writeValueAsString(
ShortLists.immutable.of((short) 1, (short) 2, (short) 3)));
- Assert.assertEquals("[1,2,3]", mapperWithModule().writeValueAsString(
+ assertEquals("[1,2,3]", mapperWithModule().writeValueAsString(
IntLists.immutable.of(1, 2, 3)));
- Assert.assertEquals("[1.1,2.3,3.5]", mapperWithModule().writeValueAsString(
+ assertEquals("[1.1,2.3,3.5]", mapperWithModule().writeValueAsString(
FloatLists.immutable.of(1.1F, 2.3F, 3.5F)));
- Assert.assertEquals("[1,2,3]", mapperWithModule().writeValueAsString(
+ assertEquals("[1,2,3]", mapperWithModule().writeValueAsString(
LongLists.immutable.of(1, 2, 3)));
- Assert.assertEquals("[1.1,2.3,3.5]", mapperWithModule().writeValueAsString(
+ assertEquals("[1.1,2.3,3.5]", mapperWithModule().writeValueAsString(
DoubleLists.immutable.of(1.1, 2.3, 3.5)));
- Assert.assertEquals(
+ assertEquals(
mapperWithModule().writeValueAsString(new byte[]{ 1, 2, 3 }),
mapperWithModule().writeValueAsString(ByteLists.immutable.of((byte) 1, (byte) 2, (byte) 3)));
- Assert.assertEquals(
+ assertEquals(
mapperWithModule().writeValueAsString(new char[]{ '1', '2', '3' }),
mapperWithModule().writeValueAsString(CharLists.immutable.of('1', '2', '3')));
- Assert.assertEquals(
+ assertEquals(
mapperWithModule().configure(SerializationFeature.WRITE_CHAR_ARRAYS_AS_JSON_ARRAYS, true)
.writeValueAsString(new char[]{ '1', '2', '3' }),
mapperWithModule().configure(SerializationFeature.WRITE_CHAR_ARRAYS_AS_JSON_ARRAYS, true)
@@ -82,7 +84,7 @@ class Wrapper {
Wrapper wrapper = new Wrapper();
wrapper.object = iterable;
- Assert.assertEquals("{\"object\":[\"" + iterable.getClass().getName() + "\"," + data + "]}",
+ assertEquals("{\"object\":[\"" + iterable.getClass().getName() + "\"," + data + "]}",
objectMapper.writeValueAsString(wrapper));
}
@@ -117,27 +119,27 @@ public void primitiveMaps() throws Exception
@Test
public void objectObjectMaps() throws IOException {
- Assert.assertEquals(
+ assertEquals(
"{\"abc\":\"def\"}",
mapperWithModule().writerFor(MutableMap.class).writeValueAsString(Maps.mutable.of("abc", "def"))
);
- Assert.assertEquals(
+ assertEquals(
"{\"abc\":\"def\"}",
mapperWithModule().writerFor(ImmutableMap.class).writeValueAsString(Maps.immutable.of("abc", "def"))
);
- Assert.assertEquals(
+ assertEquals(
"{\"abc\":\"def\"}",
mapperWithModule().writerFor(MapIterable.class).writeValueAsString(Maps.immutable.of("abc", "def"))
);
- Assert.assertEquals(
+ assertEquals(
"{\"abc\":\"def\"}",
mapperWithModule().writerFor(MutableMapIterable.class).writeValueAsString(Maps.mutable.of("abc", "def"))
);
- Assert.assertEquals(
+ assertEquals(
"{\"abc\":\"def\"}",
mapperWithModule().writeValueAsString(Maps.immutable.of("abc", "def"))
);
- Assert.assertEquals(
+ assertEquals(
"{\"abc\":\"def\"}",
mapperWithModule().writerFor(new TypeReference>() {})
.writeValueAsString(Maps.immutable.of("abc", "def"))
@@ -146,7 +148,7 @@ public void objectObjectMaps() throws IOException {
@Test
public void typeInfoObjectMap() throws IOException {
- Assert.assertEquals(
+ assertEquals(
"{\"map\":{\"0\":{\"@c\":\".SerializerTest$B\"}}}",
mapperWithModule().writeValueAsString(new Container())
);
diff --git a/guava/pom.xml b/guava/pom.xml
index e949f2ca..f02d0119 100644
--- a/guava/pom.xml
+++ b/guava/pom.xml
@@ -8,7 +8,7 @@
com.fasterxml.jackson.datatype
jackson-datatypes-collections
- 2.18.5-SNAPSHOT
+ 2.19.0-SNAPSHOT
jackson-datatype-guava
Jackson datatype: Guava
@@ -66,6 +66,13 @@ com.google.common.*;version="${version.guava.osgi}",
guava
${version.guava}
+
+
+
+ junit
+ junit
+ test
+
diff --git a/guava/src/main/java/com/fasterxml/jackson/datatype/guava/GuavaDeserializers.java b/guava/src/main/java/com/fasterxml/jackson/datatype/guava/GuavaDeserializers.java
index 7f9c135a..d01a595d 100644
--- a/guava/src/main/java/com/fasterxml/jackson/datatype/guava/GuavaDeserializers.java
+++ b/guava/src/main/java/com/fasterxml/jackson/datatype/guava/GuavaDeserializers.java
@@ -1,7 +1,12 @@
package com.fasterxml.jackson.datatype.guava;
+import com.fasterxml.jackson.datatype.guava.deser.table.HashBasedTableDeserializer;
+import com.fasterxml.jackson.datatype.guava.deser.table.ImmutableTableDeserializer;
+import com.fasterxml.jackson.datatype.guava.deser.table.TreeBasedTableDeserializer;
import java.io.Serializable;
+import com.fasterxml.jackson.databind.type.CollectionLikeType;
+import com.fasterxml.jackson.datatype.guava.ser.ImmutableDoubleArraySerializer;
import com.google.common.base.Optional;
import com.google.common.cache.Cache;
import com.google.common.collect.*;
@@ -21,6 +26,8 @@
import com.fasterxml.jackson.datatype.guava.deser.multimap.list.LinkedListMultimapDeserializer;
import com.fasterxml.jackson.datatype.guava.deser.multimap.set.HashMultimapDeserializer;
import com.fasterxml.jackson.datatype.guava.deser.multimap.set.LinkedHashMultimapDeserializer;
+import com.google.common.primitives.ImmutableDoubleArray;
+import com.google.common.primitives.ImmutableIntArray;
/**
* Custom deserializers module offers.
@@ -129,7 +136,6 @@ public JsonDeserializer> findCollectionDeserializer(CollectionType type,
elementDeserializer, elementTypeDeserializer,
null, null);
}
-
return null;
}
@@ -259,11 +265,18 @@ public JsonDeserializer> findMapLikeDeserializer(MapLikeType type,
}
if (Table.class.isAssignableFrom(raw)) {
- // !!! TODO
+ if (HashBasedTable.class.isAssignableFrom(raw)) {
+ return new HashBasedTableDeserializer(type);
+ }
+ if (TreeBasedTable.class.isAssignableFrom(raw)) {
+ return new TreeBasedTableDeserializer(type);
+ }
+ return new ImmutableTableDeserializer(type);
}
+
// @since 2.16 : support Cache deserialization
- java.util.Optional> cacheDeserializer = findCacheDeserializer(raw, type, config,
- beanDesc, keyDeserializer, elementTypeDeserializer, elementDeserializer);
+ java.util.Optional> cacheDeserializer = findCacheDeserializer(raw, type, config,
+ beanDesc, keyDeserializer, elementTypeDeserializer, elementDeserializer);
if (cacheDeserializer.isPresent()) {
return cacheDeserializer.get();
}
@@ -281,9 +294,9 @@ public JsonDeserializer> findMapLikeDeserializer(MapLikeType type,
* @return An optional {@link JsonDeserializer} for the cache type, if found.
* @since 2.16
*/
- private java.util.Optional> findCacheDeserializer(Class> raw, MapLikeType type,
- DeserializationConfig config, BeanDescription beanDesc, KeyDeserializer keyDeserializer,
- TypeDeserializer elementTypeDeserializer, JsonDeserializer> elementDeserializer)
+ private java.util.Optional> findCacheDeserializer(Class> raw, MapLikeType type,
+ DeserializationConfig config, BeanDescription beanDesc, KeyDeserializer keyDeserializer,
+ TypeDeserializer elementTypeDeserializer, JsonDeserializer> elementDeserializer)
{
/* // Example implementations
if (LoadingCache.class.isAssignableFrom(raw)) {
@@ -315,7 +328,7 @@ public JsonDeserializer> findReferenceDeserializer(ReferenceType refType,
public JsonDeserializer> findBeanDeserializer(final JavaType type, DeserializationConfig config,
BeanDescription beanDesc)
{
- if (RangeSet.class.isAssignableFrom(type.getRawClass())) {
+ if (type.isTypeOrSubTypeOf(RangeSet.class)) {
return new RangeSetDeserializer();
}
if (type.hasRawClass(Range.class)) {
@@ -330,6 +343,12 @@ public JsonDeserializer> findBeanDeserializer(final JavaType type, Deserializa
if (type.hasRawClass(HashCode.class)) {
return HashCodeDeserializer.std;
}
+ if (type.hasRawClass(ImmutableIntArray.class)) {
+ return new ImmutableIntArrayDeserializer();
+ }
+ if (type.hasRawClass(ImmutableDoubleArray.class)) {
+ return new ImmutableDoubleArrayDeserializer();
+ }
return null;
}
@@ -348,6 +367,8 @@ public boolean hasDeserializerFor(DeserializationConfig config, Class> valueTy
|| ImmutableMap.class.isAssignableFrom(valueType)
|| BiMap.class.isAssignableFrom(valueType)
|| ImmutableRangeSet.class.isAssignableFrom(valueType)
+ || (valueType == ImmutableIntArray.class)
+ || (valueType == ImmutableDoubleArray.class)
;
}
return false;
diff --git a/guava/src/main/java/com/fasterxml/jackson/datatype/guava/GuavaSerializers.java b/guava/src/main/java/com/fasterxml/jackson/datatype/guava/GuavaSerializers.java
index 6b795227..302449e7 100644
--- a/guava/src/main/java/com/fasterxml/jackson/datatype/guava/GuavaSerializers.java
+++ b/guava/src/main/java/com/fasterxml/jackson/datatype/guava/GuavaSerializers.java
@@ -13,7 +13,6 @@
import com.fasterxml.jackson.databind.type.ReferenceType;
import com.fasterxml.jackson.databind.ser.std.StdDelegatingSerializer;
import com.fasterxml.jackson.databind.util.StdConverter;
-import com.fasterxml.jackson.datatype.guava.ser.RangeSetSerializer;
import com.google.common.base.Optional;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
@@ -26,10 +25,15 @@
import com.google.common.hash.HashCode;
import com.google.common.net.HostAndPort;
import com.google.common.net.InternetDomainName;
+import com.google.common.primitives.ImmutableDoubleArray;
+import com.google.common.primitives.ImmutableIntArray;
import com.fasterxml.jackson.datatype.guava.ser.CacheSerializer;
import com.fasterxml.jackson.datatype.guava.ser.GuavaOptionalSerializer;
+import com.fasterxml.jackson.datatype.guava.ser.ImmutableDoubleArraySerializer;
+import com.fasterxml.jackson.datatype.guava.ser.ImmutableIntArraySerializer;
import com.fasterxml.jackson.datatype.guava.ser.MultimapSerializer;
import com.fasterxml.jackson.datatype.guava.ser.RangeSerializer;
+import com.fasterxml.jackson.datatype.guava.ser.RangeSetSerializer;
import com.fasterxml.jackson.datatype.guava.ser.TableSerializer;
public class GuavaSerializers extends Serializers.Base
@@ -47,7 +51,7 @@ public Iterable> convert(Object value) {
}
@Override
- public JsonSerializer> findReferenceSerializer(SerializationConfig config,
+ public JsonSerializer> findReferenceSerializer(SerializationConfig config,
ReferenceType refType, BeanDescription beanDesc,
TypeSerializer contentTypeSerializer, JsonSerializer
-