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

Use JPSG instead of gen.py in eclipse-collections; extract some common functionality into primitive-collections-base module #51

Merged
merged 7 commits into from
Oct 21, 2019
96 changes: 0 additions & 96 deletions eclipse-collections/gen.py

This file was deleted.

101 changes: 55 additions & 46 deletions eclipse-collections/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,56 +2,65 @@
<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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatypes-collections</artifactId>
<version>3.0.0-SNAPSHOT</version>
</parent>
<artifactId>jackson-datatype-eclipse-collections</artifactId>
<name>Jackson datatype: eclipse-collections</name>
<packaging>bundle</packaging>
<description>Add-on datatype-support module for Jackson (https://github.com/FasterXML/jackson) that handles
eclipse-collections (https://www.eclipse.org/collections/) types
</description>
<url>https://github.com/FasterXML/jackson-datatypes-collections</url>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatypes-collections</artifactId>
<version>3.0.0-SNAPSHOT</version>
</parent>
<artifactId>jackson-datatype-eclipse-collections</artifactId>
<name>Jackson datatype: eclipse-collections</name>
<packaging>bundle</packaging>
<description>Add-on datatype-support module for Jackson (https://github.com/FasterXML/jackson) that handles
eclipse-collections (https://www.eclipse.org/collections/) types
</description>
<url>https://github.com/FasterXML/jackson-datatypes-collections</url>

<contributors>
<contributor>
<name>Jonas Konrad</name>
<email>[email protected]</email>
</contributor>
</contributors>
<contributors>
<contributor>
<name>Jonas Konrad</name>
<email>[email protected]</email>
</contributor>
</contributors>

<properties>
<version.eclipse-collections>9.1.0</version.eclipse-collections>
<properties>
<version.eclipse-collections>9.1.0</version.eclipse-collections>

<!-- Generate PackageVersion.java into this directory. -->
<packageVersion.dir>com/fasterxml/jackson/datatype/eclipsecollections</packageVersion.dir>
<packageVersion.package>${project.groupId}.eclipsecollections</packageVersion.package>
<!-- Generate PackageVersion.java into this directory. -->
<packageVersion.dir>com/fasterxml/jackson/datatype/eclipsecollections</packageVersion.dir>
<packageVersion.package>${project.groupId}.eclipsecollections</packageVersion.package>

<javac.src.version>1.8</javac.src.version>
<javac.target.version>1.8</javac.target.version>
</properties>
<javac.src.version>1.8</javac.src.version>
<javac.target.version>1.8</javac.target.version>
</properties>

<dependencies>
<dependency>
<groupId>org.eclipse.collections</groupId>
<artifactId>eclipse-collections</artifactId>
<version>9.1.0</version>
</dependency>
</dependencies>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-primitive-collections-base</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.collections</groupId>
<artifactId>eclipse-collections</artifactId>
<version>${version.eclipse-collections}</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
</plugin>
<plugin>
<groupId>org.moditect</groupId>
<artifactId>moditect-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<build>
<plugins>
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
</plugin>
<plugin>
<groupId>org.moditect</groupId>
<artifactId>moditect-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>io.timeandspace</groupId>
<artifactId>jpsg-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import com.fasterxml.jackson.databind.DeserializationConfig;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.KeyDeserializer;
import com.fasterxml.jackson.databind.deser.Deserializers;
import com.fasterxml.jackson.databind.jsontype.TypeDeserializer;
Expand All @@ -17,16 +16,15 @@
import com.fasterxml.jackson.datatype.eclipsecollections.deser.list.FixedSizeListDeserializer;
import com.fasterxml.jackson.datatype.eclipsecollections.deser.list.ImmutableListDeserializer;
import com.fasterxml.jackson.datatype.eclipsecollections.deser.list.MutableListDeserializer;
import com.fasterxml.jackson.datatype.eclipsecollections.deser.map.EclipseMapDeserializer;
import com.fasterxml.jackson.datatype.eclipsecollections.deser.map.EclipseMapDeserializers;
import com.fasterxml.jackson.datatype.eclipsecollections.deser.set.ImmutableSetDeserializer;
import com.fasterxml.jackson.datatype.eclipsecollections.deser.set.ImmutableSortedSetDeserializer;
import com.fasterxml.jackson.datatype.eclipsecollections.deser.set.MutableSetDeserializer;
import com.fasterxml.jackson.datatype.eclipsecollections.deser.set.MutableSortedSetDeserializer;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import java.util.*;

import com.fasterxml.jackson.datatype.primitive_collections_base.deser.map.MapDeserializer;
import org.eclipse.collections.api.BooleanIterable;
import org.eclipse.collections.api.ByteIterable;
import org.eclipse.collections.api.CharIterable;
Expand Down Expand Up @@ -156,9 +154,10 @@ public final class EclipseCollectionsDeserializers extends Deserializers.Base {
// are faster to construct.

// initialized below
static final Map<Class<? extends PrimitiveIterable>, JsonDeserializer<?>> PRIMITIVE_DESERIALIZERS = new HashMap<>();
private static final Map<Class<? extends PrimitiveIterable>, JsonDeserializer<?>> PRIMITIVE_DESERIALIZERS
= new HashMap<>();
@SuppressWarnings("rawtypes")
static final Set<Class<? extends InternalIterable>> REFERENCE_TYPES = new HashSet<>();
private static final Set<Class<? extends InternalIterable>> REFERENCE_TYPES = new HashSet<>();

@Override
public JsonDeserializer<?> findCollectionDeserializer(
Expand All @@ -167,8 +166,7 @@ public JsonDeserializer<?> findCollectionDeserializer(
BeanDescription beanDesc,
TypeDeserializer elementTypeDeserializer,
JsonDeserializer<?> elementDeserializer
) throws JsonMappingException {
//noinspection SuspiciousMethodCalls
) {
if (REFERENCE_TYPES.contains(type.getRawClass())) {
return findReferenceDeserializer(type, elementTypeDeserializer, elementDeserializer);
}
Expand All @@ -183,35 +181,33 @@ public JsonDeserializer<?> findMapDeserializer(
KeyDeserializer keyDeserializer,
TypeDeserializer elementTypeDeserializer,
JsonDeserializer<?> elementDeserializer
) throws JsonMappingException {
) {

return findBeanDeserializer(type, config, beanDesc);
}

@Override
public JsonDeserializer<?> findBeanDeserializer(
JavaType type, DeserializationConfig config, BeanDescription beanDesc
) throws JsonMappingException {
@SuppressWarnings("SuspiciousMethodCalls")
) {
JsonDeserializer<?> deserializer = PRIMITIVE_DESERIALIZERS.get(type.getRawClass());
if (deserializer != null) {
return deserializer;
}

//noinspection SuspiciousMethodCalls
if (REFERENCE_TYPES.contains(type.getRawClass())) {
return findReferenceDeserializer(type, null, null);
}

EclipseMapDeserializer<?, ?, ?, ?> mapDeserializer = EclipseMapDeserializers.createDeserializer(type);
MapDeserializer<?, ?, ?, ?> mapDeserializer = EclipseMapDeserializers.createDeserializer(type);
if (mapDeserializer != null) {
return mapDeserializer;
}

return null;
}

@SuppressWarnings({ "ObjectEquality", "LocalVariableNamingConvention", "ConstantConditions" })
@SuppressWarnings({ "ObjectEquality", "LocalVariableNamingConvention" })
private JsonDeserializer<?> findReferenceDeserializer(
JavaType containerType,
TypeDeserializer elementTypeDeserializer, JsonDeserializer<?> elementDeserializer
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,13 @@
import com.fasterxml.jackson.datatype.eclipsecollections.ser.IntIterableSerializer;
import com.fasterxml.jackson.datatype.eclipsecollections.ser.LongIterableSerializer;
import com.fasterxml.jackson.datatype.eclipsecollections.ser.ShortIterableSerializer;
import com.fasterxml.jackson.datatype.eclipsecollections.ser.map.PrimitiveMapSerializer;
import com.fasterxml.jackson.datatype.eclipsecollections.ser.map.PrimitivePrimitiveMapSerializers;
import com.fasterxml.jackson.datatype.eclipsecollections.ser.map.PrimitiveRefMapSerializer;
import com.fasterxml.jackson.datatype.eclipsecollections.ser.map.RefPrimitiveMapSerializer;
import com.fasterxml.jackson.datatype.eclipsecollections.ser.map.RefRefMapSerializer;
import com.fasterxml.jackson.datatype.eclipsecollections.ser.map.PrimitiveRefMapSerializers;
import com.fasterxml.jackson.datatype.eclipsecollections.ser.map.RefPrimitiveMapSerializers;
import com.fasterxml.jackson.datatype.eclipsecollections.ser.map.RefRefMapIterableSerializer;
import java.util.Map;

import com.fasterxml.jackson.datatype.primitive_collections_base.ser.map.PrimitiveMapSerializer;
import org.eclipse.collections.api.BooleanIterable;
import org.eclipse.collections.api.ByteIterable;
import org.eclipse.collections.api.CharIterable;
Expand Down Expand Up @@ -55,44 +56,44 @@ public JsonSerializer<?> findSerializer(SerializationConfig config,
Class<?> rawClass = type.getRawClass();

if (MapIterable.class.isAssignableFrom(rawClass)) {
return new RefRefMapSerializer(type, null, null, null, null);
return new RefRefMapIterableSerializer(type, null, null, null, null);
}

if (PrimitiveObjectMap.class.isAssignableFrom(rawClass)) {
if (ByteObjectMap.class.isAssignableFrom(rawClass)) {
return new PrimitiveRefMapSerializer.Byte<>(type, null, null, null);
return new PrimitiveRefMapSerializers.Byte<>(type, null, null, null);
} else if (ShortObjectMap.class.isAssignableFrom(rawClass)) {
return new PrimitiveRefMapSerializer.Short<>(type, null, null, null);
return new PrimitiveRefMapSerializers.Short<>(type, null, null, null);
} else if (CharObjectMap.class.isAssignableFrom(rawClass)) {
return new PrimitiveRefMapSerializer.Char<>(type, null, null, null);
return new PrimitiveRefMapSerializers.Char<>(type, null, null, null);
} else if (IntObjectMap.class.isAssignableFrom(rawClass)) {
return new PrimitiveRefMapSerializer.Int<>(type, null, null, null);
return new PrimitiveRefMapSerializers.Int<>(type, null, null, null);
} else if (FloatObjectMap.class.isAssignableFrom(rawClass)) {
return new PrimitiveRefMapSerializer.Float<>(type, null, null, null);
return new PrimitiveRefMapSerializers.Float<>(type, null, null, null);
} else if (LongObjectMap.class.isAssignableFrom(rawClass)) {
return new PrimitiveRefMapSerializer.Long<>(type, null, null, null);
return new PrimitiveRefMapSerializers.Long<>(type, null, null, null);
} else if (DoubleObjectMap.class.isAssignableFrom(rawClass)) {
return new PrimitiveRefMapSerializer.Double<>(type, null, null, null);
return new PrimitiveRefMapSerializers.Double<>(type, null, null, null);
}
}

if (PrimitiveIterable.class.isAssignableFrom(rawClass)) {
if (ObjectBooleanMap.class.isAssignableFrom(rawClass)) {
return new RefPrimitiveMapSerializer.Boolean<>(type, null, null);
return new RefPrimitiveMapSerializers.Boolean<>(type, null, null);
} else if (ObjectByteMap.class.isAssignableFrom(rawClass)) {
return new RefPrimitiveMapSerializer.Byte<>(type, null, null);
return new RefPrimitiveMapSerializers.Byte<>(type, null, null);
} else if (ObjectShortMap.class.isAssignableFrom(rawClass)) {
return new RefPrimitiveMapSerializer.Short<>(type, null, null);
return new RefPrimitiveMapSerializers.Short<>(type, null, null);
} else if (ObjectCharMap.class.isAssignableFrom(rawClass)) {
return new RefPrimitiveMapSerializer.Char<>(type, null, null);
return new RefPrimitiveMapSerializers.Char<>(type, null, null);
} else if (ObjectIntMap.class.isAssignableFrom(rawClass)) {
return new RefPrimitiveMapSerializer.Int<>(type, null, null);
return new RefPrimitiveMapSerializers.Int<>(type, null, null);
} else if (ObjectFloatMap.class.isAssignableFrom(rawClass)) {
return new RefPrimitiveMapSerializer.Float<>(type, null, null);
return new RefPrimitiveMapSerializers.Float<>(type, null, null);
} else if (ObjectLongMap.class.isAssignableFrom(rawClass)) {
return new RefPrimitiveMapSerializer.Long<>(type, null, null);
return new RefPrimitiveMapSerializers.Long<>(type, null, null);
} else if (ObjectDoubleMap.class.isAssignableFrom(rawClass)) {
return new RefPrimitiveMapSerializer.Double<>(type, null, null);
return new RefPrimitiveMapSerializers.Double<>(type, null, null);
}

for (Map.Entry<Class<? extends PrimitiveIterable>, PrimitiveMapSerializer<?>> entry :
Expand Down
Loading