UserService.java

package com.example.jacoco.service;

import com.example.jacoco.model.User;

import org.springframework.stereotype.Service;

import java.util.*;
import java.util.concurrent.atomic.AtomicLong;

@Service
public class UserService {
    private final Map<Long, User> store = new LinkedHashMap<>();
    private final AtomicLong seq = new AtomicLong(1);

    public List<User> findAll() {
        return new ArrayList<>(store.values());
    }

    public Optional<User> findById(Long id) {
        return Optional.ofNullable(store.get(id));
    }

    public User create(String name, String email) {
        long id = seq.getAndIncrement();
        User u = new User(id, name, email);
        store.put(id, u);
        return u;
    }

    public boolean delete(Long id) {
        return store.remove(id) != null;
    }

    public String diagnostics() {
        return "internal diagnostics: " + store.size() + " users in memory";
    }
}