diff --git a/runtime/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/WeakRefList.java b/runtime/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/WeakRefList.java deleted file mode 100644 index 1ba8c893728..00000000000 --- a/runtime/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/WeakRefList.java +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 2010 IBM Corporation and others. - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.e4.core.internal.di; - -import java.lang.ref.WeakReference; -import java.util.*; - -/** - * A list that holds weak references to the objects. - */ -public class WeakRefList { - - private final List> userObjects; - - public WeakRefList(int initialSize) { - userObjects = new ArrayList<>(initialSize); - } - - public Object[] getSafeCopy() { - Object[] result; - int pos = 0; - synchronized (userObjects) { - result = new Object[userObjects.size()]; - for (Iterator> i = userObjects.iterator(); i.hasNext();) { - WeakReference ref = i.next(); - Object userObject = ref.get(); - if (userObject == null) { - // user object got GCed, clean up refs for future - i.remove(); - continue; - } - result[pos] = userObject; - pos++; - } - } - if (pos == result.length) { - return result; - } - // reallocate the array - Object[] tmp = new Object[pos]; - System.arraycopy(result, 0, tmp, 0, pos); - return tmp; - } - - public void add(Object object) { - WeakReference ref = new WeakReference<>(object); - synchronized (userObjects) { - userObjects.add(ref); - } - } - - public boolean remove(Object object) { - synchronized (userObjects) { - for (Iterator> i = userObjects.iterator(); i.hasNext();) { - WeakReference ref = i.next(); - Object userObject = ref.get(); - if (userObject == null) { - i.remove(); - continue; - } - if (userObject == object) { // use pointer comparison - i.remove(); - return true; - } - } - return false; - } - } -}