List of usage examples for com.google.common.base FinalizablePhantomReference FinalizablePhantomReference
protected FinalizablePhantomReference(T referent, FinalizableReferenceQueue queue)
From source file:eu.esdihumboldt.hale.common.instance.orient.storage.DatabaseHandle.java
/** * Create a database handle/*ww w . ja va 2 s .c om*/ * * @param database the database connection */ public DatabaseHandle(final ODatabaseDocumentTx database) { super(); this.database = database; handleReferences.add(new FinalizablePhantomReference<DatabaseHandle>(this, referenceQueue) { @Override public void finalizeReferent() { handleReferences.remove(this); try { if (!database.isClosed()) { database.close(); } } catch (Exception e) { // ignore } log.info("Closed garbage collected database handle"); } }); }
From source file:org.opendaylight.yangtools.yang.model.repo.util.InMemorySchemaSourceCache.java
@Override protected void offer(final T source) { final T present = cache.getIfPresent(source.getIdentifier()); if (present == null) { cache.put(source.getIdentifier(), source); final SchemaSourceRegistration<T> reg = register(source.getIdentifier()); final FinalizablePhantomReference<T> ref = new FinalizablePhantomReference<T>(source, queue) { @Override/*from w w w . j a v a2 s . c om*/ public void finalizeReferent() { reg.close(); regs.remove(this); } }; regs.add(ref); } }
From source file:eu.esdihumboldt.hale.common.instance.orient.storage.DatabaseHandle.java
/** * Add an object that references the database connection. * /* w w w. j a va 2 s . c o m*/ * It is preferred to use {@link #addInstance(Instance)} or * {@link #addGroup(Group)} instead. * * @param object the object referencing the database */ public synchronized void addReference(Object object) { FinalizablePhantomReference<?> ref = new FinalizablePhantomReference<Object>(object, referenceQueue) { @Override public void finalizeReferent() { references.remove(this); removeReference(); } }; references.add(ref); count++; }