/* * Copyright (c) 2017 OBiBa. All rights reserved. * * This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.obiba.magma.support; import javax.annotation.Nullable; import javax.validation.constraints.NotNull; import org.obiba.magma.Disposable; import org.obiba.magma.MagmaRuntimeException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public final class Disposables { private static final Logger log = LoggerFactory.getLogger(Disposables.class); private Disposables() {} public static void silentlyDispose(@Nullable Disposable disposable) { try { dispose(disposable); } catch(RuntimeException e) { log.warn("Ignoring exception during disposable.dispose().", e); } } public static void silentlyDispose(@NotNull Object... disposable) { try { dispose(disposable); } catch(RuntimeException e) { log.warn("Ignoring exception during disposable.dispose().", e); } } public static void dispose(@Nullable Disposable disposable) { try { if(disposable != null) { disposable.dispose(); } } catch(MagmaRuntimeException e) { throw e; } catch(RuntimeException e) { throw new MagmaRuntimeException(e); } } public static void dispose(@Nullable Object disposable) { if(disposable instanceof Disposable) { dispose((Disposable) disposable); } } public static void dispose(@NotNull Disposable... disposables) { for(Disposable o : disposables) { dispose(o); } } public static void dispose(@NotNull Object... disposables) { for(Object o : disposables) { dispose(o); } } public static void dispose(@NotNull Iterable<?> disposables) { for(Object o : disposables) { dispose(o); } } }