Skip to content

java.sql.Date fails to convert #79

@asalabaev

Description

@asalabaev

Description

It might be a feature request but starting as a bug since it does not work as "expected" from the first sight.

Since java.sql.Date overrides the toInstance as

    @Override
    public Instant toInstant() {
        throw new java.lang.UnsupportedOperationException();
    }

the following error may occur:

java.lang.UnsupportedOperationException: null
	at java.sql/java.sql.Date.toInstant(Date.java:316)
	at dev.toonformat.jtoon.normalizer.JsonNormalizer.tryNormalizeTemporal(JsonNormalizer.java:225)
	at dev.toonformat.jtoon.normalizer.JsonNormalizer.lambda$normalizeWithStrategy$0(JsonNormalizer.java:111)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.AbstractList$RandomAccessSpliterator.tryAdvance(AbstractList.java:706)
	at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129)
	at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:647)
	at dev.toonformat.jtoon.normalizer.JsonNormalizer.normalizeWithStrategy(JsonNormalizer.java:113)
	at dev.toonformat.jtoon.normalizer.JsonNormalizer.normalize(JsonNormalizer.java:102)
	at dev.toonformat.jtoon.normalizer.JsonNormalizer.lambda$normalizeMap$2(JsonNormalizer.java:266)
	at java.base/java.util.HashMap.forEach(HashMap.java:1421)
	at dev.toonformat.jtoon.normalizer.JsonNormalizer.normalizeMap(JsonNormalizer.java:266)
	at dev.toonformat.jtoon.normalizer.JsonNormalizer.tryNormalizeCollection(JsonNormalizer.java:246)
	at dev.toonformat.jtoon.normalizer.JsonNormalizer.lambda$normalizeWithStrategy$0(JsonNormalizer.java:111)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.AbstractList$RandomAccessSpliterator.tryAdvance(AbstractList.java:706)
	at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129)
	at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:647)
	at dev.toonformat.jtoon.normalizer.JsonNormalizer.normalizeWithStrategy(JsonNormalizer.java:113)
	at dev.toonformat.jtoon.normalizer.JsonNormalizer.normalize(JsonNormalizer.java:102)
	at dev.toonformat.jtoon.normalizer.JsonNormalizer.lambda$normalizeCollection$1(JsonNormalizer.java:257)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at dev.toonformat.jtoon.normalizer.JsonNormalizer.normalizeCollection(JsonNormalizer.java:257)
	at dev.toonformat.jtoon.normalizer.JsonNormalizer.tryNormalizeCollection(JsonNormalizer.java:244)
	at dev.toonformat.jtoon.normalizer.JsonNormalizer.lambda$normalizeWithStrategy$0(JsonNormalizer.java:111)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.AbstractList$RandomAccessSpliterator.tryAdvance(AbstractList.java:706)
	at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129)
	at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:647)
	at dev.toonformat.jtoon.normalizer.JsonNormalizer.normalizeWithStrategy(JsonNormalizer.java:113)
	at dev.toonformat.jtoon.normalizer.JsonNormalizer.normalize(JsonNormalizer.java:102)
	at dev.toonformat.jtoon.JToon.encode(JToon.java:46)
	at dev.toonformat.jtoon.JToon.encode(JToon.java:30)```

### Reproduction Steps

1. Call JToon.encode(obj);
where obj is a Map containing java.sql.Date (which might be a ResultSet column value)
2. Observe the result

### Expected Behavior

I expect the conversion will work with no error. Perhaps the java.sql.Date could be processed like LocalDate

### Actual Behavior

The error occurs on processing java.sql.Date

### Environment

implementation 'dev.toonformat:jtoon:1.0.7'

### Additional Context

_No response_

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions