Skip to content

Commit

Permalink
Add JavaTimeFeature as placeholder
Browse files Browse the repository at this point in the history
  • Loading branch information
cowtowncoder committed Nov 11, 2023
1 parent 74a058b commit 4a78fd8
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 1 deletion.
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
strategy:
fail-fast: false
matrix:
java_version: ['8', '11', '17', '18']
java_version: ['8', '11', '17', '21']
os: ['ubuntu-20.04']
env:
JAVA_OPTS: "-XX:+TieredCompilation -XX:TieredStopAtLevel=1"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.fasterxml.jackson.datatype.jsr310;

import com.fasterxml.jackson.core.util.JacksonFeature;

/**
* Configurable on/off features for Java 8 Date/Time module ({@link JavaTimeModule}).
*
* @since 2.16
*/
public enum JavaTimeFeature implements JacksonFeature
{
/**
* Placeholder
*/
BOGUS(false);

/**
* Whether feature is enabled or disabled by default.
*/
private final boolean _defaultState;

private final int _mask;

JavaTimeFeature(boolean enabledByDefault) {
_defaultState = enabledByDefault;
_mask = (1 << ordinal());
}

@Override
public boolean enabledByDefault() { return _defaultState; }

@Override
public boolean enabledIn(int flags) { return (flags & _mask) != 0; }

@Override
public int getMask() { return _mask; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

import java.time.*;

import com.fasterxml.jackson.core.util.JacksonFeatureSet;
import com.fasterxml.jackson.databind.BeanDescription;
import com.fasterxml.jackson.databind.DeserializationConfig;
import com.fasterxml.jackson.databind.JavaType;
Expand Down Expand Up @@ -109,10 +110,17 @@ public final class JavaTimeModule extends SimpleModule
{
private static final long serialVersionUID = 1L;

/**
* @since 2.16
*/
private JacksonFeatureSet<JavaTimeFeature> _features;

public JavaTimeModule()
{
super(PackageVersion.VERSION);

_features = JacksonFeatureSet.fromDefaults(JavaTimeFeature.values());

// First deserializers

// // Instant variants:
Expand Down Expand Up @@ -178,6 +186,16 @@ public JavaTimeModule()
addKeyDeserializer(ZoneOffset.class, ZoneOffsetKeyDeserializer.INSTANCE);
}

public JavaTimeModule enable(JavaTimeFeature f) {
_features = _features.with(f);
return this;
}

public JavaTimeModule disable(JavaTimeFeature f) {
_features = _features.without(f);
return this;
}

@Override
public void setupModule(SetupContext context) {
super.setupModule(context);
Expand Down

0 comments on commit 4a78fd8

Please sign in to comment.