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

edu.stanford.protege.webprotege.util.DisposableObjectManager Maven / Gradle / Ivy

The newest version!
package edu.stanford.protege.webprotege.util;

import edu.stanford.protege.webprotege.HasDispose;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.annotation.Nonnull;
import javax.inject.Inject;
import java.util.LinkedHashSet;

import static com.google.common.base.Preconditions.checkNotNull;

/**
 * Matthew Horridge
 * Stanford Center for Biomedical Informatics Research
 * 10 Apr 2018
 */
public class DisposableObjectManager {

    private static final Logger logger = LoggerFactory.getLogger(DisposableObjectManager.class);

    private final LinkedHashSet disposables = new LinkedHashSet<>();

    @Inject
    public DisposableObjectManager() {
    }

    public void register(@Nonnull HasDispose disposable) {
        disposables.add(checkNotNull(disposable));
    }

    public synchronized void dispose() {
        disposables.forEach(disposable -> {
            try {
                disposable.dispose();
            }
            catch (Throwable throwable) {
                logger.error("An error occurred whilst disposing of object", throwable);
            }
        });
        disposables.clear();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy