package com.cardshifter.server.model; import java.util.Collections; import java.util.Map; import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; import com.cardshifter.api.IdObject; public class ServerHandler<T extends IdObject> { private final AtomicInteger ids = new AtomicInteger(0); private final Map<Integer, T> map = new ConcurrentHashMap<>(); public void add(T object) { map.put(object.getId(), object); } public int newId() { return ids.incrementAndGet(); } public T get(int id) { return map.get(id); } public Map<Integer, T> all() { return Collections.unmodifiableMap(map); } public void remove(T object) { Objects.requireNonNull(object, "Object to remove cannot be null"); map.remove(object.getId()); } }