All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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