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);
+}