diff --git a/ddd-modules/hexagonalarchitecture/README.md b/ddd-modules/hexagonalarchitecture/README.md new file mode 100644 index 0000000000..74f2b39a92 --- /dev/null +++ b/ddd-modules/hexagonalarchitecture/README.md @@ -0,0 +1,3 @@ +This module contains articles about hexagonal architecture in java + +### Relevant articles \ No newline at end of file diff --git a/ddd-modules/hexagonalarchitecture/pom.xml b/ddd-modules/hexagonalarchitecture/pom.xml new file mode 100644 index 0000000000..6036c37cc0 --- /dev/null +++ b/ddd-modules/hexagonalarchitecture/pom.xml @@ -0,0 +1,35 @@ + + + 4.0.0 + + ddd-modules + com.baeldung.dddmodules + 1.0 + + + com.baeldung.dddmodules.hexagonalarchitecture + hexagonalarchitecture + 1.0 + jar + + hexagonalarchitecture + + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${maven.compiler.source} + ${maven.compiler.target} + + + + + + + UTF-8 + 1.8 + 1.8 + + diff --git a/ddd-modules/hexagonalarchitecture/src/main/java/com/baeldung/dddmodules/hexagonalarchitecture/adapters/InMemoryUserPersistenceImpl.java b/ddd-modules/hexagonalarchitecture/src/main/java/com/baeldung/dddmodules/hexagonalarchitecture/adapters/InMemoryUserPersistenceImpl.java new file mode 100644 index 0000000000..e94dedb7a0 --- /dev/null +++ b/ddd-modules/hexagonalarchitecture/src/main/java/com/baeldung/dddmodules/hexagonalarchitecture/adapters/InMemoryUserPersistenceImpl.java @@ -0,0 +1,14 @@ +package com.baeldung.dddmodules.hexagonalarchitecture.adapters; + +import com.baeldung.dddmodules.hexagonalarchitecture.ports.UserPersistence; +import com.baeldung.dddmodules.hexagonalarchitecture.core.User; + +import java.util.UUID; + +class InMemoryUserPersistenceImpl implements UserPersistence { + @Override + public User createUser(User user) { + user.setId(UUID.randomUUID()); + return user; + } +} diff --git a/ddd-modules/hexagonalarchitecture/src/main/java/com/baeldung/dddmodules/hexagonalarchitecture/adapters/Main.java b/ddd-modules/hexagonalarchitecture/src/main/java/com/baeldung/dddmodules/hexagonalarchitecture/adapters/Main.java new file mode 100644 index 0000000000..39ee42fd8c --- /dev/null +++ b/ddd-modules/hexagonalarchitecture/src/main/java/com/baeldung/dddmodules/hexagonalarchitecture/adapters/Main.java @@ -0,0 +1,13 @@ +package com.baeldung.dddmodules.hexagonalarchitecture.adapters; + +import com.baeldung.dddmodules.hexagonalarchitecture.core.User; +import com.baeldung.dddmodules.hexagonalarchitecture.core.UserServiceImpl; +import com.baeldung.dddmodules.hexagonalarchitecture.ports.UserService; + +public class Main { + + public static void main(String[] args) { + UserService userService = new UserServiceImpl(new InMemoryUserPersistenceImpl()); + User user = userService.createUser(new User("John", "Doe")); + } +} diff --git a/ddd-modules/hexagonalarchitecture/src/main/java/com/baeldung/dddmodules/hexagonalarchitecture/core/User.java b/ddd-modules/hexagonalarchitecture/src/main/java/com/baeldung/dddmodules/hexagonalarchitecture/core/User.java new file mode 100644 index 0000000000..7454538254 --- /dev/null +++ b/ddd-modules/hexagonalarchitecture/src/main/java/com/baeldung/dddmodules/hexagonalarchitecture/core/User.java @@ -0,0 +1,43 @@ +package com.baeldung.dddmodules.hexagonalarchitecture.core; + +import java.util.UUID; + +public class User { + private UUID id; + private String firstName; + private String lastName; + + public User(String firstName, String lastName) { + this.firstName = firstName; + this.lastName = lastName; + } + + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + @Override + public String toString() { + return "User{" + "id=" + id + ", firstName='" + firstName + '\'' + ", lastName='" + lastName + '\'' + '}'; + } +} diff --git a/ddd-modules/hexagonalarchitecture/src/main/java/com/baeldung/dddmodules/hexagonalarchitecture/core/UserServiceImpl.java b/ddd-modules/hexagonalarchitecture/src/main/java/com/baeldung/dddmodules/hexagonalarchitecture/core/UserServiceImpl.java new file mode 100644 index 0000000000..5209a7c6b6 --- /dev/null +++ b/ddd-modules/hexagonalarchitecture/src/main/java/com/baeldung/dddmodules/hexagonalarchitecture/core/UserServiceImpl.java @@ -0,0 +1,17 @@ +package com.baeldung.dddmodules.hexagonalarchitecture.core; + +import com.baeldung.dddmodules.hexagonalarchitecture.ports.UserPersistence; +import com.baeldung.dddmodules.hexagonalarchitecture.ports.UserService; + +public class UserServiceImpl implements UserService { + private UserPersistence userPersistence; + + public UserServiceImpl(UserPersistence userPersistence) { + this.userPersistence = userPersistence; + } + + @Override + public User createUser(User userToCreate) { + return userPersistence.createUser(userToCreate); + } +} diff --git a/ddd-modules/hexagonalarchitecture/src/main/java/com/baeldung/dddmodules/hexagonalarchitecture/ports/UserPersistence.java b/ddd-modules/hexagonalarchitecture/src/main/java/com/baeldung/dddmodules/hexagonalarchitecture/ports/UserPersistence.java new file mode 100644 index 0000000000..7d37b46b59 --- /dev/null +++ b/ddd-modules/hexagonalarchitecture/src/main/java/com/baeldung/dddmodules/hexagonalarchitecture/ports/UserPersistence.java @@ -0,0 +1,7 @@ +package com.baeldung.dddmodules.hexagonalarchitecture.ports; + +import com.baeldung.dddmodules.hexagonalarchitecture.core.User; + +public interface UserPersistence { + User createUser(User user); +} diff --git a/ddd-modules/hexagonalarchitecture/src/main/java/com/baeldung/dddmodules/hexagonalarchitecture/ports/UserService.java b/ddd-modules/hexagonalarchitecture/src/main/java/com/baeldung/dddmodules/hexagonalarchitecture/ports/UserService.java new file mode 100644 index 0000000000..3b99e7b45a --- /dev/null +++ b/ddd-modules/hexagonalarchitecture/src/main/java/com/baeldung/dddmodules/hexagonalarchitecture/ports/UserService.java @@ -0,0 +1,7 @@ +package com.baeldung.dddmodules.hexagonalarchitecture.ports; + +import com.baeldung.dddmodules.hexagonalarchitecture.core.User; + +public interface UserService { + User createUser(User userToCreate); +} diff --git a/ddd-modules/pom.xml b/ddd-modules/pom.xml index 6ab1829198..18d2e1d7c7 100644 --- a/ddd-modules/pom.xml +++ b/ddd-modules/pom.xml @@ -1,8 +1,5 @@ - - + + 4.0.0 com.baeldung.dddmodules ddd-modules @@ -23,7 +20,8 @@ shippingcontext ordercontext mainapp - + hexagonalarchitecure +