diff --git a/hexagonal/README.md b/hexagonal/README.md
new file mode 100644
index 000000000..d49b21731
--- /dev/null
+++ b/hexagonal/README.md
@@ -0,0 +1,29 @@
+---
+layout: pattern
+title: Hexagonal Architecture
+folder: hexagonal
+permalink: /patterns/hexagonal/
+categories: Architectural
+tags:
+ - Java
+ - Difficulty-Expert
+---
+
+## Intent
+Allow an application to equally be driven by users, programs, automated test or batch scripts, and to be developed and tested in isolation from its eventual run-time devices and databases.
+
+
+
+## Applicability
+Use Hexagonal Architecture pattern when
+
+* it is important that the application is fully testable
+* you use Domain Driven Design methodology and/or Microservices architectural style
+
+## Real world examples
+
+* [Apache Isis](https://isis.apache.org/)
+
+## Credits
+
+* [Alistair Cockburn - Hexagonal Architecture](http://alistair.cockburn.us/Hexagonal+architecture)
diff --git a/hexagonal/etc/hexagonal.png b/hexagonal/etc/hexagonal.png
new file mode 100644
index 000000000..8c03d375f
Binary files /dev/null and b/hexagonal/etc/hexagonal.png differ
diff --git a/hexagonal/etc/hexagonal.ucls b/hexagonal/etc/hexagonal.ucls
new file mode 100644
index 000000000..b54e2abf7
--- /dev/null
+++ b/hexagonal/etc/hexagonal.ucls
@@ -0,0 +1,325 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/LotteryAdministrationImpl.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/LotteryAdministrationImpl.java
index c0c30f12d..5e457439b 100644
--- a/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/LotteryAdministrationImpl.java
+++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/LotteryAdministrationImpl.java
@@ -27,7 +27,7 @@ import java.util.Map;
import com.iluwatar.hexagonal.banking.WireTransfers;
import com.iluwatar.hexagonal.banking.WireTransfersImpl;
import com.iluwatar.hexagonal.database.LotteryTicketRepository;
-import com.iluwatar.hexagonal.database.LotteryTicketRepositoryMock;
+import com.iluwatar.hexagonal.database.LotteryTicketInMemoryRepository;
import com.iluwatar.hexagonal.domain.LotteryConstants;
import com.iluwatar.hexagonal.domain.LotteryNumbers;
import com.iluwatar.hexagonal.domain.LotteryTicket;
@@ -55,7 +55,7 @@ public class LotteryAdministrationImpl implements LotteryAdministration {
private final WireTransfers bank = new WireTransfersImpl();
public LotteryAdministrationImpl() {
- repository = new LotteryTicketRepositoryMock();
+ repository = new LotteryTicketInMemoryRepository();
}
@Override
diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/database/LotteryTicketRepositoryMock.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/database/LotteryTicketInMemoryRepository.java
similarity index 96%
rename from hexagonal/src/main/java/com/iluwatar/hexagonal/database/LotteryTicketRepositoryMock.java
rename to hexagonal/src/main/java/com/iluwatar/hexagonal/database/LotteryTicketInMemoryRepository.java
index 0629fb6db..fe17d8cdf 100644
--- a/hexagonal/src/main/java/com/iluwatar/hexagonal/database/LotteryTicketRepositoryMock.java
+++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/database/LotteryTicketInMemoryRepository.java
@@ -34,7 +34,7 @@ import com.iluwatar.hexagonal.domain.LotteryTicketId;
* Mock database for lottery tickets.
*
*/
-public class LotteryTicketRepositoryMock implements LotteryTicketRepository {
+public class LotteryTicketInMemoryRepository implements LotteryTicketRepository {
private static Map tickets = new HashMap<>();
diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryServiceImpl.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryServiceImpl.java
index d9a948597..d446e93be 100644
--- a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryServiceImpl.java
+++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryServiceImpl.java
@@ -27,7 +27,7 @@ import java.util.Optional;
import com.iluwatar.hexagonal.banking.WireTransfers;
import com.iluwatar.hexagonal.banking.WireTransfersImpl;
import com.iluwatar.hexagonal.database.LotteryTicketRepository;
-import com.iluwatar.hexagonal.database.LotteryTicketRepositoryMock;
+import com.iluwatar.hexagonal.database.LotteryTicketInMemoryRepository;
import com.iluwatar.hexagonal.domain.LotteryConstants;
import com.iluwatar.hexagonal.domain.LotteryNumbers;
import com.iluwatar.hexagonal.domain.LotteryTicket;
@@ -51,7 +51,7 @@ public class LotteryServiceImpl implements LotteryService {
private final LotteryNotifications notifications = new LotteryNotificationsImpl();
public LotteryServiceImpl() {
- repository = new LotteryTicketRepositoryMock();
+ repository = new LotteryTicketInMemoryRepository();
}
@Override
diff --git a/hexagonal/src/test/java/com/iluwatar/hexagonal/database/LotteryTicketRepositoryTest.java b/hexagonal/src/test/java/com/iluwatar/hexagonal/database/LotteryTicketRepositoryTest.java
index a80e4817a..b20e928c8 100644
--- a/hexagonal/src/test/java/com/iluwatar/hexagonal/database/LotteryTicketRepositoryTest.java
+++ b/hexagonal/src/test/java/com/iluwatar/hexagonal/database/LotteryTicketRepositoryTest.java
@@ -31,7 +31,7 @@ import org.junit.Before;
import org.junit.Test;
import com.iluwatar.hexagonal.database.LotteryTicketRepository;
-import com.iluwatar.hexagonal.database.LotteryTicketRepositoryMock;
+import com.iluwatar.hexagonal.database.LotteryTicketInMemoryRepository;
import com.iluwatar.hexagonal.domain.LotteryTicket;
import com.iluwatar.hexagonal.domain.LotteryTicketId;
import com.iluwatar.hexagonal.test.LotteryTestUtils;
@@ -43,7 +43,7 @@ import com.iluwatar.hexagonal.test.LotteryTestUtils;
*/
public class LotteryTicketRepositoryTest {
- private final LotteryTicketRepository repository = new LotteryTicketRepositoryMock();
+ private final LotteryTicketRepository repository = new LotteryTicketInMemoryRepository();
@Before
public void clear() {
@@ -52,7 +52,7 @@ public class LotteryTicketRepositoryTest {
@Test
public void testCrudOperations() {
- LotteryTicketRepository repository = new LotteryTicketRepositoryMock();
+ LotteryTicketRepository repository = new LotteryTicketInMemoryRepository();
assertEquals(repository.findAll().size(), 0);
LotteryTicket ticket = LotteryTestUtils.createLotteryTicket();
Optional id = repository.save(ticket);
diff --git a/hexagonal/src/test/java/com/iluwatar/hexagonal/lottery/LotteryTest.java b/hexagonal/src/test/java/com/iluwatar/hexagonal/lottery/LotteryTest.java
index 0c5bb5216..27e5bb6e4 100644
--- a/hexagonal/src/test/java/com/iluwatar/hexagonal/lottery/LotteryTest.java
+++ b/hexagonal/src/test/java/com/iluwatar/hexagonal/lottery/LotteryTest.java
@@ -38,7 +38,7 @@ import com.iluwatar.hexagonal.administration.LotteryAdministrationImpl;
import com.iluwatar.hexagonal.banking.WireTransfers;
import com.iluwatar.hexagonal.banking.WireTransfersImpl;
import com.iluwatar.hexagonal.database.LotteryTicketRepository;
-import com.iluwatar.hexagonal.database.LotteryTicketRepositoryMock;
+import com.iluwatar.hexagonal.database.LotteryTicketInMemoryRepository;
import com.iluwatar.hexagonal.domain.LotteryNumbers;
import com.iluwatar.hexagonal.domain.LotteryTicket;
import com.iluwatar.hexagonal.domain.LotteryTicketCheckResult;
@@ -57,7 +57,7 @@ public class LotteryTest {
private final LotteryAdministration admin = new LotteryAdministrationImpl();
private final LotteryService service = new LotteryServiceImpl();
- private final LotteryTicketRepository repository = new LotteryTicketRepositoryMock();
+ private final LotteryTicketRepository repository = new LotteryTicketInMemoryRepository();
private final WireTransfers wireTransfers = new WireTransfersImpl();
@Before