Overview
Orika is a Java Bean mapping framework that recursively
copies data from one object to another. It can be very useful when developing
multi-layered applications.
While moving data objects back and forth between these
layers it is common to find that we need to convert objects from one instance
into another to accommodate different APIs.
Some ways to achieve this are: hard coding the copying logic
or to implement bean mappers like Dozer. However, it can be used to simplify
the process of mapping between one object layer and another.
Orika uses byte code generation to create fast mappers with
minimal overhead, making it much faster than other reflection-based mappers
like Dozer.
Service Class
======================================================================== How to
convert adapter design pattern from 11.2 version to 11.3 version and result
will display as 4.2 version ======================================================================== import
com.kamical.api.v11_2.purchase.model.request.PaymentDataReq; import
com.kamical.api.v11_2.purchase.model.response.BookResult; public
interface PurchaseService { BookResult purchaseBooking(PaymentDataReq
var1); void setupPaymentData(PaymentDataReq
var1); } |
Adapter class
package
com.kamical.api.purchase.adapter; import
com.kamical.api.common.resources.OrikaClassMapper; import
com.kamical.api.v11_2.purchase.model.request.PaymentDataReq; import
com.kamical.api.v11_2.purchase.model.response.BookResult; import
com.kamical.api.v11_2.purchase.service.PurchaseService; import
org.springframework.beans.factory.annotation.Autowired; import
org.springframework.stereotype.Component; @Component("v11.2.to.v11_3.purchaseService.adapter") public class
V11_2V11_3PurchaseServiceAdapter implements PurchaseService { @Autowired private
com.kamical.api.v11_3.purchase.service.PurchaseService targetService; @Autowired private OrikaClassMapper
orikaClassMapper; @Override public BookingResult
purchaseBooking(PaymentDataReq paymentDataReq) {
com.kamical.api.v11_3.purchase.model.request.PaymentDataReq request =
orikaClassMapper.map(paymentDataReq,
com.kamical.api.v11_3.purchase.model.request.PaymentDataReq.class);
com.kamical.api.v11_3.purchase.model.response.BookResult bookResult =
targetService.purchaseBooking(request); return
orikaClassMapper.map(bookResult, BookResult.class); // the map will
directly call to Orika Core jar file latest version you need to add
dependency in your local } @Override public void
setupPaymentData(PaymentDataReq paymentDataReq) {
com.kamical.api.v11_3.purchase.model.request.PaymentDataReq map =
orikaClassMapper.map(paymentDataReq,
com.kamical.api.v11_3.purchase.model.request.PaymentDataReq.class); targetService.setupPaymentData(map); } } |
OrikaClassMapper
package
com.kamical.api.common.resources; import
java.util.function.Consumer; import
ma.glasnost.orika.MapperFactory; import
ma.glasnost.orika.converter.builtin.PassThroughConverter; import
ma.glasnost.orika.impl.ConfigurableMapper; import
org.joda.time.DateTime; import
org.joda.time.DateTimeZone; import
org.joda.time.LocalDate; import
org.joda.time.LocalDateTime; import
org.joda.time.LocalTime; import
org.joda.time.Period; import
org.joda.time.YearMonth; public class
OrikaClassMapper extends ConfigurableMapper { private static final PassThroughConverter
PASS_THROUGH_CLASSES = new PassThroughConverter( LocalTime.class, LocalDate.class, LocalDateTime.class, Period.class, DateTimeZone.class, DateTime.class, YearMonth.class); private final
Consumer<MapperFactory> mapperFactorySetup; public OrikaClassMapper() { this(mapperFactory -> { }); } public
OrikaClassMapper(Consumer<MapperFactory> mapperFactorySetup) { super(false); this.mapperFactorySetup =
mapperFactorySetup; init(); } protected void configure(MapperFactory
factory) {
factory.getConverterFactory().registerConverter(PASS_THROUGH_CLASSES);
factory.getConverterFactory().registerConverter(new
CustomEnumConverter());
factory.getConverterFactory().registerConverter(new
ListOfListsConverter());
factory.getConverterFactory().registerConverter(new
SimpleSetConverter()); mapperFactorySetup.accept(factory); } } |
You need to plugin Orika core:
https://mvnrepository.com/artifact/ma.glasnost.orika/orika-core<!--
https://mvnrepository.com/artifact/ma.glasnost.orika/orika-core -->
xml
<dependency>
<groupId>ma.glasnost.orika</groupId>
<artifactId>orika-core</artifactId> <version>1.5.4</version> </dependency> |
0 Comments