Skip to content

Commit 084bdad

Browse files
authored
Fix #131: add method for extensions to check state of JSON.Features (#132)
1 parent 68f23bf commit 084bdad

File tree

5 files changed

+32
-2
lines changed

5 files changed

+32
-2
lines changed

jr-objects/src/main/java/com/fasterxml/jackson/jr/ob/JSON.java

+5
Original file line numberDiff line numberDiff line change
@@ -1685,6 +1685,11 @@ private static class ExtContextImpl extends ExtensionContext {
16851685
_builder = b;
16861686
}
16871687

1688+
@Override
1689+
public boolean isEnabled(JSON.Feature feature) {
1690+
return _builder.isEnabled(feature);
1691+
}
1692+
16881693
@Override
16891694
public ExtensionContext setTreeCodec(TreeCodec tc) {
16901695
_builder.treeCodec(tc);

jr-objects/src/main/java/com/fasterxml/jackson/jr/ob/api/ExtensionContext.java

+14
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.fasterxml.jackson.jr.ob.api;
22

33
import com.fasterxml.jackson.core.TreeCodec;
4+
import com.fasterxml.jackson.jr.ob.JSON;
45

56
/**
67
* API that lets {@link com.fasterxml.jackson.jr.ob.JacksonJrExtension}s to register handlers
@@ -10,6 +11,19 @@
1011
*/
1112
public abstract class ExtensionContext
1213
{
14+
// // // Config access
15+
16+
/**
17+
* Method for checking whether given {@code JSON.Feature} is enabled.
18+
*
19+
* @param feature Feature to check
20+
*
21+
* @return True if given {@code JSON.Feature} is enabled; {@code false} if not
22+
*
23+
* @since 2.17
24+
*/
25+
public abstract boolean isEnabled(JSON.Feature feature);
26+
1327
// // // Override of (and access to) singleton handlers
1428

1529
/**

jr-stree/src/main/java/com/fasterxml/jackson/jr/stree/JacksonJrsTreeCodec.java

+9-1
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,11 @@ public class JacksonJrsTreeCodec extends TreeCodec
1616

1717
public static final JacksonJrsTreeCodec SINGLETON = new JacksonJrsTreeCodec();
1818

19-
protected ObjectCodec _objectCodec;
19+
protected final ObjectCodec _objectCodec;
2020

21+
// @since 2.17
22+
protected boolean _failOnDuplicateKeys;
23+
2124
public JacksonJrsTreeCodec() {
2225
this(null);
2326
}
@@ -26,6 +29,11 @@ public JacksonJrsTreeCodec(ObjectCodec codec) {
2629
_objectCodec = codec;
2730
}
2831

32+
// @since 2.17
33+
public void setFailOnDuplicateKeys(boolean state) {
34+
_failOnDuplicateKeys = state;
35+
}
36+
2937
@SuppressWarnings("unchecked")
3038
@Override
3139
public <T extends TreeNode> T readTree(JsonParser p) throws IOException {

jr-stree/src/main/java/com/fasterxml/jackson/jr/stree/JrSimpleTreeExtension.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.fasterxml.jackson.jr.stree;
22

3+
import com.fasterxml.jackson.jr.ob.JSON;
34
import com.fasterxml.jackson.jr.ob.JacksonJrExtension;
45
import com.fasterxml.jackson.jr.ob.api.ExtensionContext;
56

@@ -23,9 +24,10 @@ public JrSimpleTreeExtension() {
2324
public JrSimpleTreeExtension(JacksonJrsTreeCodec tc) {
2425
_codec = tc;
2526
}
26-
27+
2728
@Override
2829
protected void register(ExtensionContext ctxt) {
30+
_codec.setFailOnDuplicateKeys(ctxt.isEnabled(JSON.Feature.FAIL_ON_DUPLICATE_MAP_KEYS));
2931
ctxt.setTreeCodec(_codec);
3032
}
3133
}

release-notes/VERSION-2.x

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ Not yet released
1515

1616
#7: Support deserialization of `int[]`
1717
(contributed by @Shounaks)
18+
#131: Add mechanism for `JacksonJrExtension`s to access state of `JSON.Feature`s
1819

1920
2.17.0-rc1 (26-Feb-2024)
2021

0 commit comments

Comments
 (0)