1 /*******************************************************************************
2 * Copyright (c) 2007, 2010 Association for Decentralized Information Management
4 * All rights reserved. This program and the accompanying materials
5 * are made available under the terms of the Eclipse Public License v1.0
6 * which accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * VTT Technical Research Centre of Finland - initial API and implementation
11 *******************************************************************************/
12 package org.simantics.db;
16 * An interface that services registered via {@link ServiceLocator} can
17 * implement to signal the ServiceLocator implementation that they need to be
18 * disposed during ServiceLocator disposal.
20 * The {@link #dispose()} method may get called several times which it must be
21 * able to handle properly which in most cases means just disposing once with
22 * proper synchronization and ignoring any further dispose requests.
24 * @author Tuukka Lehtonen
26 public interface Disposable {
30 static void safeDispose(Disposable d) {
35 static void safeDispose(Object o) {
36 if (o instanceof Disposable)
37 ((Disposable) o).dispose();