Comments (4)
Thanks for reporting this issue.
This case should be fixed by registering TreeSet
as default implementation for SortedSet
:
factory.registerConcreteType(SortedSet.class, TreeSet.class);
Unfortunately the problem lay in MultiOccurrenceVariableRef#newInstance
see here which is kind of dirty method for creating new instances of collection without taking care of registered concrete types for a given interface. This have to be fixed :)
As a matter of workaround you can register a custom mapper for SortedSet
:
factory.registerMapper(new CustomMapper<SortedSet<Object>, SortedSet<Object>>() {
@Override
public void mapAtoB(SortedSet<Object> a, SortedSet<Object> b, MappingContext context) {
b.clear();
b.addAll(mapper.mapAsList(a, context.getResolvedDestinationType().getNestedType(1).getRawType(), context));
}
@Override
public void mapBtoA(SortedSet<Object> a, SortedSet<Object> b, MappingContext context) {
a.clear();
b.addAll(mapper.mapAsList(b, context.getResolvedDestinationType().getNestedType(1).getRawType(), context));
}
});
from orika.
Thanks for the workaround! I did struggled around with the registerConcreteType
unsuccessfully, trying to get it working. Just for the benefit of the community, you have a few typos in your snippet. The correct code is:
factory.registerConcreteType(SortedSet.class, TreeSet.class);
factory.registerMapper(new CustomMapper<SortedSet<Object>, SortedSet<Object>>() {
@Override
public void mapAtoB(SortedSet<Object> a, SortedSet<Object> b, MappingContext context) {
b.clear();
b.addAll(mapper.mapAsList(a, context.getResolvedDestinationType().getNestedType(0).getRawType(), context));
}
@Override
public void mapBtoA(SortedSet<Object> a, SortedSet<Object> b, MappingContext context) {
a.clear();
a.addAll(mapper.mapAsList(b, context.getResolvedDestinationType().getNestedType(0).getRawType(), context));
}
});
from orika.
Awesome !
from orika.
UPDATE : Should be fixed in 1.4.6
Adding support of SortedSet and SortedMap interfaces.
Still need to fix : MultiOccurrenceVariableRef#newInstance
from orika.
Related Issues (20)
- copy LinkedHashSet cause Out of order
- Why no release since 2 Years HOT 12
- Enums which implement methods can't be converted since v1.5.1
- Null Pointer exception during mapping of complex objects HOT 1
- ScoringClassMapBuilder generated the wrong map
- Problems with Java 17 HOT 20
- Orika cannot find correct converter with class type define equals to compare typekey HOT 3
- can not converter source list to destination list with same enum property
- Workaround for multiple CustomConverters with the same (could be anonymous) classes.
- Integer how to map thrift TEnum
- Thank you for replying to the question about converting Java objects from map
- NPE while mapAsList invocation
- bean has list<Map> can't do trans completed! HOT 2
- Wrong ObjectFactory generated when destination object has no args and all args constructor HOT 1
- Provide built-in support for type com.fasterxml.jackson.databind.JsonNode
- Totally remove java-szieof
- Optimize MapperGenerator class so that there will be no method code length limit
- Mapping Member inner class from another simple class not working
- not support jdk17? HOT 9
- 【BUG】Generic object mapping ClassCastException occut.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from orika.