Remove heagonal architecture
This commit is contained in:
parent
994e909a18
commit
1ba39d1b95
|
@ -1,3 +0,0 @@
|
||||||
### Relevant articles
|
|
||||||
|
|
||||||
- [A Quick and Practical Example of Hexagonal Architecture in Java](https://www.baeldung.com/a-quick-and-practical-example-of-hexagonal-architecture-in-java-3/)
|
|
|
@ -1,33 +0,0 @@
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<groupId>com.baeldung.architecture</groupId>
|
|
||||||
<artifactId>architecture</artifactId>
|
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
|
||||||
<name>architecture</name>
|
|
||||||
<packaging>jar</packaging>
|
|
||||||
<description>A Quick and Practical Example of Hexagonal Architecture in Java</description>
|
|
||||||
|
|
||||||
<parent>
|
|
||||||
<artifactId>parent-boot-2</artifactId>
|
|
||||||
<groupId>com.baeldung</groupId>
|
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
|
||||||
<relativePath>../parent-boot-2</relativePath>
|
|
||||||
</parent>
|
|
||||||
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter-data-jpa</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.h2database</groupId>
|
|
||||||
<artifactId>h2</artifactId>
|
|
||||||
<scope>runtime</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter-web</artifactId>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
</project>
|
|
|
@ -1,12 +0,0 @@
|
||||||
package com.baeldung.architecture;
|
|
||||||
|
|
||||||
import org.springframework.boot.SpringApplication;
|
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
|
||||||
|
|
||||||
@SpringBootApplication
|
|
||||||
public class HexagonalArchitectureTaskApplication {
|
|
||||||
public static void main(String[] args) {
|
|
||||||
SpringApplication.run(HexagonalArchitectureTaskApplication.class, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
package com.baeldung.architecture.application.task;
|
|
||||||
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.time.temporal.ChronoUnit;
|
|
||||||
|
|
||||||
import com.baeldung.architecture.commands.task.CreateTask;
|
|
||||||
import com.baeldung.architecture.domain.task.Task;
|
|
||||||
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
public class AddNewDailyTask implements CreateTask {
|
|
||||||
|
|
||||||
private AddNewTask addNewTask;
|
|
||||||
|
|
||||||
public AddNewDailyTask(AddNewTask addNewTask) {
|
|
||||||
this.addNewTask = addNewTask;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void create(Task newTask) {
|
|
||||||
Instant initialDueDate = newTask.getDueDate();
|
|
||||||
String description = newTask.getDescription();
|
|
||||||
for (int i = 1; i <= 5; i++) {
|
|
||||||
Task task = new Task(initialDueDate.plus(i, ChronoUnit.DAYS), description);
|
|
||||||
addNewTask.create(task);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,22 +0,0 @@
|
||||||
package com.baeldung.architecture.application.task;
|
|
||||||
|
|
||||||
import com.baeldung.architecture.domain.task.Task;
|
|
||||||
import com.baeldung.architecture.domain.task.TaskService;
|
|
||||||
import com.baeldung.architecture.commands.task.*;
|
|
||||||
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
public class AddNewTask implements CreateTask {
|
|
||||||
|
|
||||||
private TaskService taskService;
|
|
||||||
|
|
||||||
public AddNewTask(TaskService taskService) {
|
|
||||||
this.taskService = taskService;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void create(Task newTask) {
|
|
||||||
taskService.createTask(newTask);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,22 +0,0 @@
|
||||||
package com.baeldung.architecture.application.task;
|
|
||||||
|
|
||||||
import com.baeldung.architecture.domain.task.Task;
|
|
||||||
import com.baeldung.architecture.domain.task.TaskService;
|
|
||||||
import com.baeldung.architecture.commands.task.*;
|
|
||||||
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
public class GetTasks implements GetAllTasks {
|
|
||||||
|
|
||||||
private TaskService taskService;
|
|
||||||
|
|
||||||
public GetTasks(TaskService taskService) {
|
|
||||||
this.taskService = taskService;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Iterable<Task> getAll() {
|
|
||||||
return taskService.getAllTasks();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
package com.baeldung.architecture.commands.task;
|
|
||||||
|
|
||||||
import com.baeldung.architecture.domain.task.Task;
|
|
||||||
|
|
||||||
public interface CreateTask {
|
|
||||||
public void create(Task newTask);
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
package com.baeldung.architecture.commands.task;
|
|
||||||
|
|
||||||
import com.baeldung.architecture.domain.task.Task;
|
|
||||||
|
|
||||||
public interface GetAllTasks {
|
|
||||||
public Iterable<Task> getAll();
|
|
||||||
}
|
|
|
@ -1,53 +0,0 @@
|
||||||
package com.baeldung.architecture.domain.task;
|
|
||||||
|
|
||||||
import java.time.Instant;
|
|
||||||
|
|
||||||
import javax.persistence.Entity;
|
|
||||||
import javax.persistence.GeneratedValue;
|
|
||||||
import javax.persistence.GenerationType;
|
|
||||||
import javax.persistence.Id;
|
|
||||||
|
|
||||||
@Entity
|
|
||||||
public class Task {
|
|
||||||
@Id
|
|
||||||
@GeneratedValue(strategy=GenerationType.AUTO)
|
|
||||||
private Long id;
|
|
||||||
private Instant dueDate = Instant.now();
|
|
||||||
private String description;
|
|
||||||
|
|
||||||
public Task() {}
|
|
||||||
|
|
||||||
public Task(Instant dueDate, String description) {
|
|
||||||
this.dueDate = dueDate;
|
|
||||||
this.description = description;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Task(Long id, Instant dueDate, String description) {
|
|
||||||
this(dueDate, description);
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(Long id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Instant getDueDate() {
|
|
||||||
return dueDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDueDate(Instant dueDate) {
|
|
||||||
this.dueDate = dueDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDescription() {
|
|
||||||
return description;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDescription(String description) {
|
|
||||||
this.description = description;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
package com.baeldung.architecture.domain.task;
|
|
||||||
|
|
||||||
import org.springframework.data.repository.CrudRepository;
|
|
||||||
import org.springframework.stereotype.Repository;
|
|
||||||
|
|
||||||
@Repository
|
|
||||||
public interface TaskRepository extends CrudRepository<Task, Long> {};
|
|
|
@ -1,22 +0,0 @@
|
||||||
package com.baeldung.architecture.domain.task;
|
|
||||||
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class TaskService {
|
|
||||||
|
|
||||||
private TaskRepository taskRepository;
|
|
||||||
|
|
||||||
public TaskService(TaskRepository taskRepository) {
|
|
||||||
this.taskRepository = taskRepository;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void createTask(Task task) {
|
|
||||||
taskRepository.save(task);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Iterable<Task> getAllTasks() {
|
|
||||||
return taskRepository.findAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
package com.baeldung.architecture.framework.cli;
|
|
||||||
|
|
||||||
import com.baeldung.architecture.application.task.AddNewDailyTask;
|
|
||||||
import com.baeldung.architecture.domain.task.Task;
|
|
||||||
|
|
||||||
import org.springframework.boot.ApplicationArguments;
|
|
||||||
import org.springframework.boot.ApplicationRunner;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
public class StartupRunner implements ApplicationRunner {
|
|
||||||
|
|
||||||
AddNewDailyTask addNewDailyTask;
|
|
||||||
|
|
||||||
public StartupRunner(AddNewDailyTask addNewDailyTask) {
|
|
||||||
this.addNewDailyTask = addNewDailyTask;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public void run(ApplicationArguments args) throws Exception {
|
|
||||||
Task task = new Task();
|
|
||||||
task.setDescription("Startup Task");
|
|
||||||
addNewDailyTask.create(task);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,42 +0,0 @@
|
||||||
package com.baeldung.architecture.framework.http.task;
|
|
||||||
|
|
||||||
import java.time.Instant;
|
|
||||||
|
|
||||||
import com.baeldung.architecture.application.task.AddNewTask;
|
|
||||||
import com.baeldung.architecture.application.task.GetTasks;
|
|
||||||
import com.baeldung.architecture.domain.task.Task;
|
|
||||||
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("task")
|
|
||||||
public class TaskApiController {
|
|
||||||
|
|
||||||
private AddNewTask addNewTask;
|
|
||||||
private GetTasks getTasks;
|
|
||||||
|
|
||||||
public TaskApiController(
|
|
||||||
AddNewTask addNewTask,
|
|
||||||
GetTasks getTasks
|
|
||||||
) {
|
|
||||||
this.addNewTask = addNewTask;
|
|
||||||
this.getTasks = getTasks;
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping
|
|
||||||
Iterable<Task> listTasks() {
|
|
||||||
return getTasks.getAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping(consumes = "application/json", produces = "application/json")
|
|
||||||
void createTask(@RequestBody TaskRequest taskRequest) {
|
|
||||||
Task task = new Task();
|
|
||||||
task.setDescription(taskRequest.getDescription());
|
|
||||||
task.setDueDate(Instant.parse(taskRequest.getDueDate()));
|
|
||||||
addNewTask.create(task);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,28 +0,0 @@
|
||||||
package com.baeldung.architecture.framework.http.task;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
|
||||||
import com.fasterxml.jackson.annotation.JsonInclude.Include;
|
|
||||||
|
|
||||||
public class TaskRequest {
|
|
||||||
@JsonInclude(Include.NON_NULL)
|
|
||||||
private String description;
|
|
||||||
|
|
||||||
@JsonInclude(Include.NON_NULL)
|
|
||||||
private String dueDate;
|
|
||||||
|
|
||||||
public String getDescription() {
|
|
||||||
return description;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDescription(String description) {
|
|
||||||
this.description = description;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDueDate() {
|
|
||||||
return dueDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDueDate(String dueDate) {
|
|
||||||
this.dueDate = dueDate;
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue