InMemoryTaskRepository.java
package com.guinetik.hexafun.examples.tasks;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
/**
* In-memory implementation of TaskRepository.
*
* <p>This is an adapter that implements the output port.
* Useful for testing and demos. In production, you'd have
* a JPA, JDBC, or other persistent implementation.
*/
public class InMemoryTaskRepository implements TaskRepository {
private final Map<String, Task> tasks = new ConcurrentHashMap<>();
@Override
public Task save(Task task) {
tasks.put(task.id(), task);
return task;
}
@Override
public Optional<Task> findById(String id) {
return Optional.ofNullable(tasks.get(id));
}
@Override
public List<Task> findAll() {
return new ArrayList<>(tasks.values());
}
@Override
public boolean delete(String id) {
return tasks.remove(id) != null;
}
/**
* Clear all tasks (useful for testing).
*/
public void clear() {
tasks.clear();
}
/**
* Get the count of tasks.
*/
public int count() {
return tasks.size();
}
}