From 96a04a8d6c92787774bd44844c3993a32643d748 Mon Sep 17 00:00:00 2001 From: Markus Keller Date: Wed, 20 Jan 2016 18:56:46 +0100 Subject: Fixes for bug 483340: ListenerList should be parameterized --- .../core/internal/preferences/EclipsePreferences.java | 16 ++++++---------- .../preferences/PreferenceServiceRegistryHelper.java | 13 +++++-------- .../core/internal/preferences/PreferencesService.java | 5 ++--- 3 files changed, 13 insertions(+), 21 deletions(-) (limited to 'bundles/org.eclipse.equinox.preferences') diff --git a/bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/EclipsePreferences.java b/bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/EclipsePreferences.java index 8cd69f399..d38508e26 100644 --- a/bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/EclipsePreferences.java +++ b/bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/EclipsePreferences.java @@ -61,8 +61,8 @@ public class EclipsePreferences implements IEclipsePreferences, IScope { // the parent of an EclipsePreference node is always an EclipsePreference node. (or null) protected final EclipsePreferences parent; protected boolean removed = false; - private ListenerList nodeChangeListeners; - private ListenerList preferenceChangeListeners; + private ListenerList nodeChangeListeners; + private ListenerList preferenceChangeListeners; private ScopeDescriptor descriptor; public static boolean DEBUG_PREFERENCE_GENERAL = false; @@ -131,7 +131,7 @@ public class EclipsePreferences implements IEclipsePreferences, IScope { public void addNodeChangeListener(INodeChangeListener listener) { checkRemoved(); if (nodeChangeListeners == null) - nodeChangeListeners = new ListenerList(); + nodeChangeListeners = new ListenerList<>(); nodeChangeListeners.add(listener); if (DEBUG_PREFERENCE_GENERAL) PrefsMessages.message("Added preference node change listener: " + listener + " to: " + absolutePath()); //$NON-NLS-1$ //$NON-NLS-2$ @@ -142,7 +142,7 @@ public class EclipsePreferences implements IEclipsePreferences, IScope { public void addPreferenceChangeListener(IPreferenceChangeListener listener) { checkRemoved(); if (preferenceChangeListeners == null) - preferenceChangeListeners = new ListenerList(); + preferenceChangeListeners = new ListenerList<>(); preferenceChangeListeners.add(listener); if (DEBUG_PREFERENCE_GENERAL) PrefsMessages.message("Added preference property change listener: " + listener + " to: " + absolutePath()); //$NON-NLS-1$ //$NON-NLS-2$ @@ -769,9 +769,7 @@ public class EclipsePreferences implements IEclipsePreferences, IScope { protected void fireNodeEvent(final NodeChangeEvent event, final boolean added) { if (nodeChangeListeners == null) return; - Object[] listeners = nodeChangeListeners.getListeners(); - for (int i = 0; i < listeners.length; i++) { - final INodeChangeListener listener = (INodeChangeListener) listeners[i]; + for (final INodeChangeListener listener : nodeChangeListeners) { ISafeRunnable job = new ISafeRunnable() { @Override public void handleException(Throwable exception) { @@ -837,10 +835,8 @@ public class EclipsePreferences implements IEclipsePreferences, IScope { protected void firePreferenceEvent(String key, Object oldValue, Object newValue) { if (preferenceChangeListeners == null) return; - Object[] listeners = preferenceChangeListeners.getListeners(); final PreferenceChangeEvent event = new PreferenceChangeEvent(this, key, oldValue, newValue); - for (int i = 0; i < listeners.length; i++) { - final IPreferenceChangeListener listener = (IPreferenceChangeListener) listeners[i]; + for (final IPreferenceChangeListener listener : preferenceChangeListeners) { ISafeRunnable job = new ISafeRunnable() { @Override public void handleException(Throwable exception) { diff --git a/bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/PreferenceServiceRegistryHelper.java b/bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/PreferenceServiceRegistryHelper.java index 5f55d9549..0b151376b 100644 --- a/bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/PreferenceServiceRegistryHelper.java +++ b/bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/PreferenceServiceRegistryHelper.java @@ -35,7 +35,7 @@ public class PreferenceServiceRegistryHelper implements IRegistryChangeListener // Store this around for performance private final static IExtension[] EMPTY_EXTENSION_ARRAY = new IExtension[0]; private static final Map scopeRegistry = Collections.synchronizedMap(new HashMap()); - private ListenerList modifyListeners; + private ListenerList modifyListeners; private final PreferencesService service; private final IExtensionRegistry registry; @@ -93,7 +93,7 @@ public class PreferenceServiceRegistryHelper implements IRegistryChangeListener log(new Status(IStatus.ERROR, PrefsMessages.OWNER_NAME, IStatus.ERROR, PrefsMessages.preferences_classCastListener, null)); return; } - modifyListeners.add(listener); + modifyListeners.add((PreferenceModifyListener) listener); } catch (CoreException e) { log(e.getStatus()); } @@ -194,9 +194,9 @@ public class PreferenceServiceRegistryHelper implements IRegistryChangeListener * Return a list of the preference modify listeners. They are called during preference * import and given the chance to modify the imported tree. */ - public PreferenceModifyListener[] getModifyListeners() { + public ListenerList getModifyListeners() { if (modifyListeners == null) { - modifyListeners = new ListenerList(); + modifyListeners = new ListenerList<>(); IExtension[] extensions = getPrefExtensions(); for (int i = 0; i < extensions.length; i++) { IConfigurationElement[] elements = extensions[i].getConfigurationElements(); @@ -205,10 +205,7 @@ public class PreferenceServiceRegistryHelper implements IRegistryChangeListener addModifyListener(elements[j]); } } - Object[] source = modifyListeners.getListeners(); - PreferenceModifyListener[] result = new PreferenceModifyListener[source.length]; - System.arraycopy(source, 0, result, 0, source.length); - return result; + return modifyListeners; } /* diff --git a/bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/PreferencesService.java b/bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/PreferencesService.java index 94cf4414c..6c441582c 100644 --- a/bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/PreferencesService.java +++ b/bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/PreferencesService.java @@ -436,9 +436,8 @@ public class PreferencesService implements IPreferencesService { if (registryHelper == null) return tree; final IEclipsePreferences[] result = new IEclipsePreferences[] {tree}; - PreferenceModifyListener[] listeners = ((PreferenceServiceRegistryHelper) registryHelper).getModifyListeners(); - for (int i = 0; i < listeners.length; i++) { - final PreferenceModifyListener listener = listeners[i]; + ListenerList listeners = ((PreferenceServiceRegistryHelper) registryHelper).getModifyListeners(); + for (final PreferenceModifyListener listener : listeners) { ISafeRunnable job = new ISafeRunnable() { @Override public void handleException(Throwable exception) { -- cgit v1.2.3