
com.katalon.testops.commons.ReportStorage Maven / Gradle / Ivy
The newest version!
package com.katalon.testops.commons;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
public class ReportStorage {
private final Map store = new ConcurrentHashMap<>();
private final ReadWriteLock lock = new ReentrantReadWriteLock();
public Optional get(final String uuid, final Class clazz) {
readLock().lock();
try {
return Optional.ofNullable(store.get(uuid))
.filter(clazz::isInstance)
.map(clazz::cast);
} finally {
readLock().unlock();
}
}
public T put(final String uuid, final T item) {
writeLock().lock();
try {
store.put(uuid, item);
return item;
} finally {
writeLock().unlock();
}
}
public void remove(final String uuid) {
writeLock().lock();
try {
store.remove(uuid);
} finally {
writeLock().unlock();
}
}
private Lock readLock() {
return lock.readLock();
}
private Lock writeLock() {
return lock.writeLock();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy