eclipse-ee4j / eclipse-ee4j/yasson

yasson should support (de)serializing of "java.math.MathContext"

Open
#571 7 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Java
Stars
218
Forks
109
Avg merge
1d 5h
Merged PRs (30d)
9

Description

**Describe the bug**
I get this error when trying to create json output of an instance of `java.math.MathContext`.

```
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field final java.math.RoundingMode java.math.MathContext.roundingMode accessible: module java.base does not "opens java.math" to unnamed module @4dca0ecd
at java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354) ~[?:?]
at java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) ~[?:?]
at java.lang.reflect.Field.checkCanSetAccessible(Field.java:178) ~[?:?]
at java.lang.reflect.Field.setAccessible(Field.java:172) ~[?:?]
at org.eclipse.yasson.internal.model.PropertyValuePropagation.lambda$overrideAccessible$2(PropertyValuePropagation.java:153) ~[yasson-1.0.9.jar:?]
at java.security.AccessController.doPrivileged(AccessController.java:318) ~[?:?]
at org.eclipse.yasson.internal.model.PropertyValuePropagation.overrideAccessible(PropertyValuePropagation.java:152) ~[yasson-1.0.9.jar:?]
at org.eclipse.yasson.internal.model.PropertyValuePropagation.isFieldVisible(PropertyValuePropagation.java:127) ~[yasson-1.0.9.jar:?]
at org.eclipse.yasson.internal.model.PropertyValuePropagation.initReadable(PropertyValuePropagation.java:94) ~[yasson-1.0.9.jar:?]
at org.eclipse.yasson.internal.model.PropertyValuePropagation.(PropertyValuePropagation.java:80) ~[yasson-1.0.9.jar:?]
at org.eclipse.yasson.internal.model.ReflectionPropagation.(ReflectionPropagation.java:39) ~[yasson-1.0.9.jar:?]
at org.eclipse.yasson.internal.model.PropertyModel.(PropertyModel.java:134) ~[yasson-1.0.9.jar:?]
at org.eclipse.yasson.internal.ClassParser.lambda$parseProperties$0(ClassParser.java:71) ~[yasson-1.0.9.jar:?]
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[?:?]
at java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1779) ~[?:?]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[?:?]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?]
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) ~[?:?]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) ~[?:?]
at org.eclipse.yasson.internal.ClassParser.parseProperties(ClassParser.java:72) ~[yasson-1.0.9.jar:?]
at org.eclipse.yasson.internal.MappingContext.lambda$createParseClassModelFunction$1(MappingContext.java:97) ~[yasson-1.0.9.jar:?]
at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708) ~[?:?]
at org.eclipse.yasson.internal.MappingContext.getOrCreateClassModel(MappingContext.java:81) ~[yasson-1.0.9.jar:?]
at org.eclipse.yasson.internal.serializer.ObjectSerializer.serializeInternal(ObjectSerializer.java:65) ~[yasson-1.0.9.jar:?]
at org.eclipse.yasson.internal.serializer.AbstractContainerSerializer.serialize(AbstractContainerSerializer.java:107) ~[yasson-1.0.9.jar:?]
at org.eclipse.yasson.internal.serializer.AbstractContainerSerializer.serializerCaptor(AbstractContainerSerializer.java:125) ~[yasson-1.0.9.jar:?]
at org.eclipse.yasson.internal.serializer.ObjectSerializer.marshallProperty(ObjectSerializer.java:121) ~[yasson-1.0.9.jar:?]
at org.eclipse.yasson.internal.serializer.ObjectSerializer.serializeInternal(ObjectSerializer.java:69) ~[yasson-1.0.9.jar:?]
at org.eclipse.yasson.internal.serializer.AbstractContainerSerializer.serialize(AbstractContainerSerializer.java:107) ~[yasson-1.0.9.jar:?]
at org.eclipse.yasson.internal.serializer.AbstractContainerSerializer.serializerCaptor(AbstractContainerSerializer.java:125) ~[yasson-1.0.9.jar:?]
at org.eclipse.yasson.internal.serializer.ObjectSerializer.marshallProperty(ObjectSerializer.java:121) ~[yasson-1.0.9.jar:?]
at org.eclipse.yasson.internal.serializer.ObjectSerializer.serializeInternal(ObjectSerializer.java:69) ~[yasson-1.0.9.jar:?]
at org.eclipse.yasson.internal.serializer.AbstractContainerSerializer.serialize(AbstractContainerSerializer.java:107) ~[yasson-1.0.9.jar:?]
at org.eclipse.yasson.internal.serializer.AbstractContainerSerializer.serializerCaptor(AbstractContainerSerializer.java:125) ~[yasson-1.0.9.jar:?]
at org.eclipse.yasson.internal.serializer.AbstractContainerSerializer.serializeItem(AbstractContainerSerializer.java:194) ~[yasson-1.0.9.jar:?]
at org.eclipse.yasson.internal.serializer.MapToObjectSerializer.serializeContainer(MapToObjectSerializer.java:99) ~[yasson-1.0.9.jar:?]
at org.eclipse.yasson.internal.serializer.MapSerializer.serializeInternal(MapSerializer.java:156) ~[yasson-1.0.9.jar:?]
at org.eclipse.yasson.internal.serializer.MapSerializer.serializeInternal(MapSerializer.java:27) ~[yasson-1.0.9.jar:?]
at org.eclipse.yasson.internal.serializer.AbstractContainerSerializer.serialize(AbstractContainerSerializer.java:107) ~[yasson-1.0.9.jar:?]
at org.eclipse.yasson.internal.serializer.AbstractContainerSerializer.serializerCaptor(AbstractContainerSerializer.java:125) ~[yasson-1.0.9.jar:?]
at org.eclipse.yasson.internal.serializer.ObjectSerializer.marshallProperty(ObjectSerializer.java:121) ~[yasson-1.0.9.jar:?]
at org.eclipse.yasson.internal.serializer.ObjectSerializer.serializeInternal(ObjectSerializer.java:69) ~[yasson-1.0.9.jar:?]
... 79 more
```

**To Reproduce**
Steps to reproduce the bug

**Expected behavior**
To be able to (de)serialize `java.math.MathContext`.

**System information:**
- OS: Mac
- Java Version: 17
- Yasson Version: 1.0.9

Contributor guide

Open the contributing guide

Research direction

Start with the PropertyValuePropagation and related serializer classes named in the stack trace, then inspect how Yasson currently handles java.math.MathContext. Reproduce the Java 17 failure and define coverage for both serialization and deserialization; done means MathContext can be processed without reflective access errors.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
api, backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.