diff --git a/layers/pom.xml b/layers/pom.xml
deleted file mode 100644
index dd036e74c..000000000
--- a/layers/pom.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
- 4.0.0
-
- com.iluwatar
- java-design-patterns
- 1.5.0
-
- com.iluwatar.layers
- layers
-
-
- org.springframework.data
- spring-data-jpa
-
-
- org.hibernate
- hibernate-entitymanager
-
-
- commons-dbcp
- commons-dbcp
-
-
- com.h2database
- h2
-
-
- junit
- junit
- test
-
-
-
diff --git a/layers/src/main/java/com/iluwatar/layers/App.java b/layers/src/main/java/com/iluwatar/layers/App.java
deleted file mode 100644
index 239674d02..000000000
--- a/layers/src/main/java/com/iluwatar/layers/App.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.iluwatar.layers;
-
-import java.util.Arrays;
-
-public class App {
-
- public static void main(String[] args) {
-
- CakeBakingService service = new CakeBakingServiceImpl();
- service.saveNewLayer(new CakeLayerInfo("chocolate", 1200));
- service.saveNewLayer(new CakeLayerInfo("banana", 900));
- service.saveNewLayer(new CakeLayerInfo("strawberry", 950));
- service.getAllLayers().stream().forEach((layer) -> System.out.println(layer));
-
- service.saveNewTopping(new CakeToppingInfo("candies", 350));
- service.getAllToppings().stream().forEach((topping) -> System.out.println(topping));
-
- CakeInfo cakeInfo = new CakeInfo(new CakeToppingInfo("candies", 0),
- Arrays.asList(new CakeLayerInfo("chocolate", 0), new CakeLayerInfo("chocolate", 0),
- new CakeLayerInfo("chocolate", 0)));
- try {
- service.bakeNewCake(cakeInfo);
- } catch (CakeBakingException e) {
- e.printStackTrace();
- }
- }
-}
diff --git a/layers/src/main/java/com/iluwatar/layers/Cake.java b/layers/src/main/java/com/iluwatar/layers/Cake.java
deleted file mode 100644
index 5bdb4ae51..000000000
--- a/layers/src/main/java/com/iluwatar/layers/Cake.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.iluwatar.layers;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.OneToMany;
-import javax.persistence.OneToOne;
-
-@Entity
-public class Cake {
-
- @Id
- @GeneratedValue
- private Long id;
-
- @OneToOne(cascade = CascadeType.ALL)
- private CakeTopping topping;
-
- @OneToMany(cascade = CascadeType.ALL)
- private List layers;
-
- public Cake() {
- setLayers(new ArrayList<>());
- }
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public CakeTopping getTopping() {
- return topping;
- }
-
- public void setTopping(CakeTopping topping) {
- this.topping = topping;
- }
-
- public List getLayers() {
- return layers;
- }
-
- public void setLayers(List layers) {
- this.layers = layers;
- }
-
- public void addLayer(CakeLayer layer) {
- this.layers.add(layer);
- }
-}
diff --git a/layers/src/main/java/com/iluwatar/layers/CakeBakingException.java b/layers/src/main/java/com/iluwatar/layers/CakeBakingException.java
deleted file mode 100644
index 2b131da19..000000000
--- a/layers/src/main/java/com/iluwatar/layers/CakeBakingException.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.iluwatar.layers;
-
-public class CakeBakingException extends Exception {
-
- public CakeBakingException() {
- }
-
- public CakeBakingException(String message) {
- super(message);
- }
-}
diff --git a/layers/src/main/java/com/iluwatar/layers/CakeBakingService.java b/layers/src/main/java/com/iluwatar/layers/CakeBakingService.java
deleted file mode 100644
index 731650d7e..000000000
--- a/layers/src/main/java/com/iluwatar/layers/CakeBakingService.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.iluwatar.layers;
-
-import java.util.List;
-
-public interface CakeBakingService {
-
- void bakeNewCake(CakeInfo cakeInfo) throws CakeBakingException;
-
- void saveNewTopping(CakeToppingInfo toppingInfo);
-
- List getAllToppings();
-
- void saveNewLayer(CakeLayerInfo layerInfo);
-
- List getAllLayers();
-}
diff --git a/layers/src/main/java/com/iluwatar/layers/CakeBakingServiceImpl.java b/layers/src/main/java/com/iluwatar/layers/CakeBakingServiceImpl.java
deleted file mode 100644
index 419a31d4f..000000000
--- a/layers/src/main/java/com/iluwatar/layers/CakeBakingServiceImpl.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package com.iluwatar.layers;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Optional;
-import java.util.stream.Collectors;
-
-import org.springframework.context.support.AbstractApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-@Service
-@Transactional
-public class CakeBakingServiceImpl implements CakeBakingService {
-
- private AbstractApplicationContext context;
-
- public CakeBakingServiceImpl() {
- this.context = new ClassPathXmlApplicationContext("applicationContext.xml");
- }
-
- @Override
- public void bakeNewCake(CakeInfo cakeInfo) throws CakeBakingException {
- List allToppings = getAllToppings();
- List matchingToppings = allToppings.stream()
- .filter((t) -> t.name.equals(cakeInfo.cakeToppingInfo.name)).collect(Collectors.toList());
- if (matchingToppings.isEmpty()) {
- throw new CakeBakingException(String.format("Topping %s is not available", cakeInfo.cakeToppingInfo.name));
- }
- List allLayers = getAllLayerEntities();
- List foundLayers = new ArrayList<>();
- for (CakeLayerInfo info: cakeInfo.cakeLayerInfos) {
- Optional found = allLayers.stream().filter((layer) -> layer.getName().equals(info.name)).findFirst();
- if (!found.isPresent()) {
- throw new CakeBakingException(String.format("Layer %s is not available", info.name));
- } else {
- foundLayers.add(found.get());
- }
- }
- CakeToppingDao toppingBean = context.getBean(CakeToppingDao.class);
- CakeTopping topping = toppingBean.findOne(matchingToppings.iterator().next().id.get());
- CakeDao cakeBean = context.getBean(CakeDao.class);
- Cake cake = new Cake();
- cake = cakeBean.save(cake);
- cake.setTopping(topping);
- topping.setCake(cake);
- cake.setLayers(foundLayers);
- for (CakeLayer layer: foundLayers) {
- layer.setCake(cake);
- }
- cakeBean.save(cake);
- }
-
- @Override
- public void saveNewTopping(CakeToppingInfo toppingInfo) {
- CakeToppingDao bean = context.getBean(CakeToppingDao.class);
- bean.save(new CakeTopping(toppingInfo.name, toppingInfo.calories));
- }
-
- @Override
- public void saveNewLayer(CakeLayerInfo layerInfo) {
- CakeLayerDao bean = context.getBean(CakeLayerDao.class);
- bean.save(new CakeLayer(layerInfo.name, layerInfo.calories));
- }
-
- private List getAllToppingEntities() {
- CakeToppingDao bean = context.getBean(CakeToppingDao.class);
- List result = new ArrayList<>();
- Iterator iterator = bean.findAll().iterator();
- while (iterator.hasNext()) {
- result.add(iterator.next());
- }
- return result;
- }
-
- @Override
- public List getAllToppings() {
- CakeToppingDao bean = context.getBean(CakeToppingDao.class);
- List result = new ArrayList<>();
- Iterator iterator = bean.findAll().iterator();
- while (iterator.hasNext()) {
- CakeTopping next = iterator.next();
- result.add(new CakeToppingInfo(next.getId(), next.getName(), next.getCalories()));
- }
- return result;
- }
-
- private List getAllLayerEntities() {
- CakeLayerDao bean = context.getBean(CakeLayerDao.class);
- List result = new ArrayList<>();
- Iterator iterator = bean.findAll().iterator();
- while (iterator.hasNext()) {
- result.add(iterator.next());
- }
- return result;
- }
-
- @Override
- public List getAllLayers() {
- CakeLayerDao bean = context.getBean(CakeLayerDao.class);
- List result = new ArrayList<>();
- Iterator iterator = bean.findAll().iterator();
- while (iterator.hasNext()) {
- CakeLayer next = iterator.next();
- result.add(new CakeLayerInfo(next.getId(), next.getName(), next.getCalories()));
- }
- return result;
- }
-}
diff --git a/layers/src/main/java/com/iluwatar/layers/CakeDao.java b/layers/src/main/java/com/iluwatar/layers/CakeDao.java
deleted file mode 100644
index eb9e2fdaa..000000000
--- a/layers/src/main/java/com/iluwatar/layers/CakeDao.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.iluwatar.layers;
-
-import org.springframework.data.repository.CrudRepository;
-import org.springframework.stereotype.Repository;
-
-@Repository
-public interface CakeDao extends CrudRepository {
-
-}
diff --git a/layers/src/main/java/com/iluwatar/layers/CakeInfo.java b/layers/src/main/java/com/iluwatar/layers/CakeInfo.java
deleted file mode 100644
index f5be954a7..000000000
--- a/layers/src/main/java/com/iluwatar/layers/CakeInfo.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.iluwatar.layers;
-
-import java.util.List;
-import java.util.Optional;
-
-public class CakeInfo {
-
- public final Optional id;
- public final CakeToppingInfo cakeToppingInfo;
- public final List cakeLayerInfos;
-
- public CakeInfo(Long id, CakeToppingInfo cakeToppingInfo, List cakeLayerInfos) {
- this.id = Optional.of(id);
- this.cakeToppingInfo = cakeToppingInfo;
- this.cakeLayerInfos = cakeLayerInfos;
- }
-
- public CakeInfo(CakeToppingInfo cakeToppingInfo, List cakeLayerInfos) {
- this.id = Optional.empty();
- this.cakeToppingInfo = cakeToppingInfo;
- this.cakeLayerInfos = cakeLayerInfos;
- }
-}
diff --git a/layers/src/main/java/com/iluwatar/layers/CakeLayer.java b/layers/src/main/java/com/iluwatar/layers/CakeLayer.java
deleted file mode 100644
index 00101a379..000000000
--- a/layers/src/main/java/com/iluwatar/layers/CakeLayer.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.iluwatar.layers;
-
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.ManyToOne;
-
-@Entity
-public class CakeLayer {
-
- @Id
- @GeneratedValue
- private Long id;
-
- private String name;
-
- private int calories;
-
- @ManyToOne(cascade = CascadeType.ALL)
- private Cake cake;
-
- public CakeLayer() {
- }
-
- public CakeLayer(String name, int calories) {
- this.setName(name);
- this.setCalories(calories);
- }
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public int getCalories() {
- return calories;
- }
-
- public void setCalories(int calories) {
- this.calories = calories;
- }
-
- @Override
- public String toString() {
- return String.format("name: %s calories: %d", name, calories);
- }
-
- public Cake getCake() {
- return cake;
- }
-
- public void setCake(Cake cake) {
- this.cake = cake;
- }
-}
diff --git a/layers/src/main/java/com/iluwatar/layers/CakeLayerDao.java b/layers/src/main/java/com/iluwatar/layers/CakeLayerDao.java
deleted file mode 100644
index c46aafaeb..000000000
--- a/layers/src/main/java/com/iluwatar/layers/CakeLayerDao.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.iluwatar.layers;
-
-import org.springframework.data.repository.CrudRepository;
-import org.springframework.stereotype.Repository;
-
-@Repository
-public interface CakeLayerDao extends CrudRepository {
-
-}
diff --git a/layers/src/main/java/com/iluwatar/layers/CakeLayerInfo.java b/layers/src/main/java/com/iluwatar/layers/CakeLayerInfo.java
deleted file mode 100644
index 6b59ebb06..000000000
--- a/layers/src/main/java/com/iluwatar/layers/CakeLayerInfo.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.iluwatar.layers;
-
-import java.util.Optional;
-
-public class CakeLayerInfo {
-
- public final Optional id;
- public final String name;
- public final int calories;
-
- public CakeLayerInfo(Long id, String name, int calories) {
- this.id = Optional.of(id);
- this.name = name;
- this.calories = calories;
- }
-
- public CakeLayerInfo(String name, int calories) {
- this.id = Optional.empty();
- this.name = name;
- this.calories = calories;
- }
-
- @Override
- public String toString() {
- return String.format("CakeLayerInfo name: %s calories: %d", name, calories);
- }
-}
diff --git a/layers/src/main/java/com/iluwatar/layers/CakeTopping.java b/layers/src/main/java/com/iluwatar/layers/CakeTopping.java
deleted file mode 100644
index 5aa861979..000000000
--- a/layers/src/main/java/com/iluwatar/layers/CakeTopping.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.iluwatar.layers;
-
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.OneToOne;
-
-@Entity
-public class CakeTopping {
-
- @Id
- @GeneratedValue
- private Long id;
-
- private String name;
-
- private int calories;
-
- @OneToOne(cascade = CascadeType.ALL)
- private Cake cake;
-
- public CakeTopping() {
- }
-
- public CakeTopping(String name, int calories) {
- this.setName(name);
- this.setCalories(calories);
- }
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public int getCalories() {
- return calories;
- }
-
- public void setCalories(int calories) {
- this.calories = calories;
- }
-
- @Override
- public String toString() {
- return String.format("name: %s calories: %d", name, calories);
- }
-
- public Cake getCake() {
- return cake;
- }
-
- public void setCake(Cake cake) {
- this.cake = cake;
- }
-}
diff --git a/layers/src/main/java/com/iluwatar/layers/CakeToppingDao.java b/layers/src/main/java/com/iluwatar/layers/CakeToppingDao.java
deleted file mode 100644
index 81f371750..000000000
--- a/layers/src/main/java/com/iluwatar/layers/CakeToppingDao.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.iluwatar.layers;
-
-import org.springframework.data.repository.CrudRepository;
-import org.springframework.stereotype.Repository;
-
-@Repository
-public interface CakeToppingDao extends CrudRepository {
-
-}
diff --git a/layers/src/main/java/com/iluwatar/layers/CakeToppingInfo.java b/layers/src/main/java/com/iluwatar/layers/CakeToppingInfo.java
deleted file mode 100644
index 829862b3d..000000000
--- a/layers/src/main/java/com/iluwatar/layers/CakeToppingInfo.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.iluwatar.layers;
-
-import java.util.Optional;
-
-public class CakeToppingInfo {
-
- public final Optional id;
- public final String name;
- public final int calories;
-
- public CakeToppingInfo(Long id, String name, int calories) {
- this.id = Optional.of(id);
- this.name = name;
- this.calories = calories;
- }
-
- public CakeToppingInfo(String name, int calories) {
- this.id = Optional.empty();
- this.name = name;
- this.calories = calories;
- }
-
- @Override
- public String toString() {
- return String.format("CakeToppingInfo name: %s calories: %d", name, calories);
- }
-}
diff --git a/layers/src/main/resources/META-INF/persistence.xml b/layers/src/main/resources/META-INF/persistence.xml
deleted file mode 100644
index 0aded0dbd..000000000
--- a/layers/src/main/resources/META-INF/persistence.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
diff --git a/layers/src/main/resources/applicationContext.xml b/layers/src/main/resources/applicationContext.xml
deleted file mode 100644
index 3de47a215..000000000
--- a/layers/src/main/resources/applicationContext.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/layers/src/test/java/com/iluwatar/layers/AppTest.java b/layers/src/test/java/com/iluwatar/layers/AppTest.java
deleted file mode 100644
index 22c35267a..000000000
--- a/layers/src/test/java/com/iluwatar/layers/AppTest.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.iluwatar.layers;
-
-import org.junit.Test;
-
-public class AppTest {
-
- @Test
- public void test() {
- String[] args = {};
- App.main(args);
- }
-}
diff --git a/pom.xml b/pom.xml
index 1296fc3d5..1059edc58 100644
--- a/pom.xml
+++ b/pom.xml
@@ -74,7 +74,6 @@
business-delegate
half-sync-half-async
step-builder
- layers