Comments (5)
Thanks Adam !
from orika.
Forget to mention that you can fix them manually (aType,bType) in the subclass constructor as a workaround
from orika.
Unfortunately I don't think it's possible in that particular case. Since CustomMapper
constructor has:
public CustomMapper() {
java.lang.reflect.Type genericSuperclass = getClass().getGenericSuperclass();
if (genericSuperclass != null && genericSuperclass instanceof ParameterizedType) {
ParameterizedType superType = (ParameterizedType)getClass().getGenericSuperclass();
try {
aType = TypeFactory.valueOf(superType.getActualTypeArguments()[0]);
bType = TypeFactory.valueOf(superType.getActualTypeArguments()[1]);
} catch (IllegalArgumentException e) {
/* do nothing; this was not extended by a user
* getXXType methods must be manually overridden
*/
}
}
}
You can see that (referring to my example) if I construct ConcreteMapper
its constructor has to call a constructor of GenericSuperMapper
and this in turn calls the constructor of Orika's CustomMapper
.
There in CustomMapper
constructor, this
is ConcreteMapper
, so genericSuperclass
becomes the GenericSuperMapper
generic type, which is still an instance of ParameterizedType
. So superType
is also equal to the GenericSuperMapper
generic type (we could just cast genericSuperclass
instead of calling getClass().getGenericSuperclass()
again btw.).
But GenericSuperMapper
itself has only one type parameter, so the line
bType = TypeFactory.valueOf(superType.getActualTypeArguments()[1]);
fails with ArrayIndexOutOfBoundsException
. The try/catch block catches only IllegalArgumentException
, so the ArrayIndexOutOfBoundsException
bubbles uncaught, thus failing the whole constructor of the mapper without an option to adjust the A/B types manually.
from orika.
I just pushed a fix, can you please confirm if it fix your issue I also added a quick test.
from orika.
I checked 1.4.7-SNAPSHOT and it works fine with your fix. Thanks!
from orika.
Related Issues (20)
- 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.
- Is there gonna be any new release for the Orika core? HOT 1
- Same object with different fields?
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.