package ru.kirillius.pf.sdn.service; import lombok.RequiredArgsConstructor; import lombok.Setter; import org.springframework.stereotype.Service; import ru.kirillius.pf.sdn.api.Networking.IPv4Subnet; import ru.kirillius.pf.sdn.entity.AutonomousSystemCacheEntry; import ru.kirillius.pf.sdn.repository.AutonomousSystemCacheRepository; import java.util.List; import java.util.Optional; @Setter @RequiredArgsConstructor @Service public class AutonomousSystemCacheService { private final AutonomousSystemCacheRepository repository; public void store(int number, List subnets) { synchronized (repository) { if (repository.existsByNumber(number)) { repository.findByNumber(number).ifPresent(entry -> { entry.setPrefixes(subnets); repository.save(entry); }); } else { repository.save(AutonomousSystemCacheEntry.builder().number(number).prefixes(subnets).build()); } } } public Optional load(int number) { synchronized (repository) { return repository.findByNumber(number); } } }