From 6b05eaa5a2dec0c8f15581a6497bb8cfe1e2bd39 Mon Sep 17 00:00:00 2001 From: Andreas Gudian Date: Wed, 10 Jun 2015 22:54:16 +0200 Subject: [PATCH] #4 Demonstrate the usage of MapStruct for bean mappings --- oasp4j-bom/pom.xml | 6 ++++ oasp4j-samples/oasp4j-sample-core/pom.xml | 36 ++++++++++++++++++- .../general/common/api/to/AbstractEto.java | 11 ++++++ .../logic/base/usecase/AbstractTableUc.java | 14 ++++++++ .../logic/impl/usecase/UcFindTableImpl.java | 8 ++--- .../logic/impl/usecase/UcManageTableImpl.java | 4 +-- .../logic/mapper/TableMapper.java | 18 ++++++++++ 7 files changed, 90 insertions(+), 7 deletions(-) create mode 100644 oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/tablemanagement/logic/mapper/TableMapper.java diff --git a/oasp4j-bom/pom.xml b/oasp4j-bom/pom.xml index 01d774256..c7329469b 100644 --- a/oasp4j-bom/pom.xml +++ b/oasp4j-bom/pom.xml @@ -188,6 +188,12 @@ validation-api 1.1.0.Final + + + org.mapstruct + mapstruct + 1.0.0.CR1 + diff --git a/oasp4j-samples/oasp4j-sample-core/pom.xml b/oasp4j-samples/oasp4j-sample-core/pom.xml index 93e5c7334..53091a1c6 100644 --- a/oasp4j-samples/oasp4j-sample-core/pom.xml +++ b/oasp4j-samples/oasp4j-sample-core/pom.xml @@ -134,6 +134,11 @@ hibernate-validator + + org.mapstruct + mapstruct + + org.apache.cxf @@ -196,7 +201,36 @@ config/env/* - + + + org.bsc.maven + maven-processor-plugin + 2.2.4 + + + ${project.build.directory}/generated-sources + + + org.mapstruct.ap.MappingProcessor + + + + + process + generate-sources + + process + + + + + + org.mapstruct + mapstruct-processor + 1.0.0.CR1 + + + diff --git a/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/general/common/api/to/AbstractEto.java b/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/general/common/api/to/AbstractEto.java index 295c09214..e518a4eb6 100644 --- a/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/general/common/api/to/AbstractEto.java +++ b/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/general/common/api/to/AbstractEto.java @@ -20,4 +20,15 @@ public AbstractEto() { super(); } + @Override + public void setId(Long id) { + + super.setId(id); + } + + @Override + public Long getId() { + + return super.getId(); + } } diff --git a/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/tablemanagement/logic/base/usecase/AbstractTableUc.java b/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/tablemanagement/logic/base/usecase/AbstractTableUc.java index 5846b8919..7443ee147 100644 --- a/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/tablemanagement/logic/base/usecase/AbstractTableUc.java +++ b/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/tablemanagement/logic/base/usecase/AbstractTableUc.java @@ -2,6 +2,7 @@ import io.oasp.gastronomy.restaurant.general.logic.base.AbstractUc; import io.oasp.gastronomy.restaurant.tablemanagement.dataaccess.api.dao.TableDao; +import io.oasp.gastronomy.restaurant.tablemanagement.logic.mapper.TableMapper; import javax.inject.Inject; @@ -13,6 +14,8 @@ public abstract class AbstractTableUc extends AbstractUc { /** @see #getTableDao() */ private TableDao tableDao; + + private TableMapper tableMapper; /** * @return the {@link TableDao} instance. @@ -31,4 +34,15 @@ public void setTableDao(TableDao tableDao) { this.tableDao = tableDao; } + public TableMapper getTableMapper() { + + return tableMapper; + } + + @Inject + public void setTableMapper(TableMapper tableMapper) { + + this.tableMapper = tableMapper; + } + } diff --git a/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/tablemanagement/logic/impl/usecase/UcFindTableImpl.java b/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/tablemanagement/logic/impl/usecase/UcFindTableImpl.java index 06970cbe3..c090d8095 100644 --- a/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/tablemanagement/logic/impl/usecase/UcFindTableImpl.java +++ b/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/tablemanagement/logic/impl/usecase/UcFindTableImpl.java @@ -37,7 +37,7 @@ public class UcFindTableImpl extends AbstractTableUc implements UcFindTable { public TableEto findTable(Long id) { LOG.debug("Get table with id '" + id + "' from database."); - return getBeanMapper().map(getTableDao().findOne(id), TableEto.class); + return getTableMapper().toTableEto(getTableDao().findOne(id)); } /** @@ -49,7 +49,7 @@ public List findAllTables() { LOG.debug("Get all restaurant tables from database."); List tables = getTableDao().findAll(); - return getBeanMapper().mapList(tables, TableEto.class); + return getTableMapper().toTableEtos(tables); } /** @@ -62,7 +62,7 @@ public List findFreeTables() { LOG.debug("Get all free restaurant tables from database."); List tables = getTableDao().getFreeTables(); - return getBeanMapper().mapList(tables, TableEto.class); + return getTableMapper().toTableEtos(tables); } /** @@ -75,7 +75,7 @@ public PaginatedListTo findTableEtos(TableSearchCriteriaTo criteria) { criteria.limitMaximumPageSize(MAXIMUM_HIT_LIMIT); PaginatedListTo tables = getTableDao().findTables(criteria); - return mapPaginatedEntityList(tables, TableEto.class); + return new PaginatedListTo<>(getTableMapper().toTableEtos(tables.getResult()), tables.getPagination()); } } diff --git a/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/tablemanagement/logic/impl/usecase/UcManageTableImpl.java b/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/tablemanagement/logic/impl/usecase/UcManageTableImpl.java index baadd25a6..928385b54 100644 --- a/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/tablemanagement/logic/impl/usecase/UcManageTableImpl.java +++ b/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/tablemanagement/logic/impl/usecase/UcManageTableImpl.java @@ -69,7 +69,7 @@ public TableEto saveTable(@Valid TableEto table) { Long tableId = table.getId(); - TableEntity tableEntity = getBeanMapper().map(table, TableEntity.class); + TableEntity tableEntity = getTableMapper().toTableEntity(table); // initialize if (tableEntity.getState() == null) { tableEntity.setState(TableState.FREE); @@ -85,7 +85,7 @@ public TableEto saveTable(@Valid TableEto table) { getTableDao().save(tableEntity); LOG.debug("Table with id '{}' has been created.", tableEntity.getId()); - return getBeanMapper().map(tableEntity, TableEto.class); + return getTableMapper().toTableEto(tableEntity); } /** diff --git a/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/tablemanagement/logic/mapper/TableMapper.java b/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/tablemanagement/logic/mapper/TableMapper.java new file mode 100644 index 000000000..25f17524a --- /dev/null +++ b/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/tablemanagement/logic/mapper/TableMapper.java @@ -0,0 +1,18 @@ +package io.oasp.gastronomy.restaurant.tablemanagement.logic.mapper; + +import io.oasp.gastronomy.restaurant.tablemanagement.dataaccess.api.TableEntity; +import io.oasp.gastronomy.restaurant.tablemanagement.logic.api.to.TableEto; + +import java.util.List; + +import org.mapstruct.Mapper; + +@Mapper(componentModel = "jsr330") +public interface TableMapper { + + TableEto toTableEto(TableEntity table); + + TableEntity toTableEntity(TableEto table); + + List toTableEtos(List tables); +}