Comments (6)
Hello,
This is how it's supposed to work. Once the MaperFacade has been initialized no more configuration can be done (except class-maps but it's not recommended, and may disappear in the future also)
So be sure to pre-configure all mapping rules in the configuration time.
from orika.
Ohh, thanks for the quick answer! But I was using Ken Blair's idea to instantiate all the custom converters and mappers on Spring applicationContext's initialization...and that doesn't work anymore!
And I am not able to register CustomConverters on a field level neither, getting the same error...
Is there a way to make Orika instantiate the mapperFacade after Spring's ApplicationContext has started?
from orika.
In fact the implementation may miss something, the only problem I can see is that the default constructor is called first which do the initialization of MapperFacade
, so the only thing you have to do is to add a constructor in which you call
super(false); // to delay the initialization
And change post bean initialization do the actual MapperFacade
initialization, by changing the setApplicationContext
method like this:
@Override
public void setApplicationContext(final ApplicationContext applicationContext) throws BeansException {
addAllSpringBeans(applicationContext);
}
from orika.
First, thanks a lot for your time.
I can't see a change between your version of the setApplicationContext()
method and mine! :(
So, I tried your solution (disabling the init from the constructor) :
public OrikaBeanMapper() {
super(false);
}
but I still had to initialize the local factory
befiore setting the mapperFacade
, and since both factory and facade are set in configurableMapper.init()
...the only place to do this is still in the overridden configure()
method where I don't have access to the applicationContext
!
So I came up with the following solution, which works. Please share your toughts and/or a better/cleaner solution ;) :
private MapperFactory factory;
//referencing the ApplicationContext in the class
private ApplicationContext applicationContext;
@Override
public void setApplicationContext(final ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
this.init();//configurableMapper.init()
}
@Override
protected void configure(final MapperFactory factory) {
this.factory = factory;
addAllSpringBeans();//needs the factory to be set
addConverter(new PassThroughConverter(org.joda.time.DateTime.class));
}
Thanks again for your help.
from orika.
Yes! Sorry I forget to modify the snippet in my comment :)
You're solution is good !
from orika.
Thanks :)
from orika.
Related Issues (20)
- 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?
- Is there gonna be any new release for the Orika core?
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.