eclipse-ee4j / eclipse-ee4j/yasson
yasson should support (de)serializing of "java.math.MathContext"
- 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
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