1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-14 20:45:22 +02:00

[227750] [regression] Eclipse with RSE 3.0 don't start or Display problems

https://bugs.eclipse.org/bugs/show_bug.cgi?id=227750
This commit is contained in:
David Dykstal 2008-06-16 19:24:18 +00:00
parent d60cced6cc
commit 048aa33228
5 changed files with 71 additions and 10 deletions

View file

@ -13,6 +13,7 @@
* Contributors: * Contributors:
* Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core * Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
* Martin Oberhuber (Wind River) - [218659] Make *EventManager, *ChangeManager thread-safe * Martin Oberhuber (Wind River) - [218659] Make *EventManager, *ChangeManager thread-safe
* David Dykstal (IBM) - [227750] add a test for registered listeners
********************************************************************************/ ********************************************************************************/
package org.eclipse.rse.internal.core.model; package org.eclipse.rse.internal.core.model;
@ -84,4 +85,18 @@ public class SystemModelChangeEventManager
} }
} }
/**
* Test if a manager has any listeners registered.
* @return true if there are any listeners, false if not.
*/
public boolean hasListeners() {
boolean result = false;
synchronized(lockObject) {
result = listeners.size() > 0;
}
return result;
}
} }

View file

@ -13,6 +13,7 @@
* Contributors: * Contributors:
* Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core * Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
* Martin Oberhuber (Wind River) - [218659] Make *EventManager, *ChangeManager thread-safe * Martin Oberhuber (Wind River) - [218659] Make *EventManager, *ChangeManager thread-safe
* David Dykstal (IBM) - [227750] add a test for registered listeners
********************************************************************************/ ********************************************************************************/
package org.eclipse.rse.internal.core.model; package org.eclipse.rse.internal.core.model;
@ -84,4 +85,16 @@ public class SystemPreferenceChangeManager
} }
} }
/**
* Test if a manager has any listeners registered.
* @return true if there are any listeners, false if not.
*/
public boolean hasListeners() {
boolean result = false;
synchronized(lockObject) {
result = listeners.size() > 0;
}
return result;
}
} }

View file

@ -52,6 +52,7 @@
* David McKnight (IBM) - [225747] [dstore] Trying to connect to an "Offline" system throws an NPE * David McKnight (IBM) - [225747] [dstore] Trying to connect to an "Offline" system throws an NPE
* David McKnight (IBM) - [229116] NPE in when editing remote file in new workspace * David McKnight (IBM) - [229116] NPE in when editing remote file in new workspace
* David McKnight (IBM) - [234057] Wrong or missing model change event * David McKnight (IBM) - [234057] Wrong or missing model change event
* David Dykstal (IBM) - [227750] do not fire events if there are no listeners
********************************************************************************/ ********************************************************************************/
package org.eclipse.rse.internal.core.model; package org.eclipse.rse.internal.core.model;
@ -124,10 +125,6 @@ public class SystemRegistry implements ISystemRegistry
private final SystemModelChangeEventManager modelListenerManager = new SystemModelChangeEventManager(); private final SystemModelChangeEventManager modelListenerManager = new SystemModelChangeEventManager();
private final SystemRemoteChangeEventManager remoteListManager = new SystemRemoteChangeEventManager(); private final SystemRemoteChangeEventManager remoteListManager = new SystemRemoteChangeEventManager();
private int listenerCount = 0;
private int modelListenerCount = 0;
private int remoteListCount = 0;
private ISubSystemConfigurationProxy[] subsystemConfigurationProxies = null; private ISubSystemConfigurationProxy[] subsystemConfigurationProxies = null;
private boolean errorLoadingFactory = false; private boolean errorLoadingFactory = false;
@ -2366,7 +2363,6 @@ public class SystemRegistry implements ISystemRegistry
public void addSystemResourceChangeListener(ISystemResourceChangeListener l) public void addSystemResourceChangeListener(ISystemResourceChangeListener l)
{ {
listenerManager.addSystemResourceChangeListener(l); listenerManager.addSystemResourceChangeListener(l);
listenerCount++;
} }
/** /**
* De-Register your interest in being told when a system resource such as a connection is changed. * De-Register your interest in being told when a system resource such as a connection is changed.
@ -2374,7 +2370,6 @@ public class SystemRegistry implements ISystemRegistry
public void removeSystemResourceChangeListener(ISystemResourceChangeListener l) public void removeSystemResourceChangeListener(ISystemResourceChangeListener l)
{ {
listenerManager.removeSystemResourceChangeListener(l); listenerManager.removeSystemResourceChangeListener(l);
listenerCount--;
} }
/** /**
* Query if the ISystemResourceChangeListener is already listening for SystemResourceChange events * Query if the ISystemResourceChangeListener is already listening for SystemResourceChange events
@ -2403,6 +2398,8 @@ public class SystemRegistry implements ISystemRegistry
} }
} }
if (!listenerManager.hasListeners()) return;
if (onMainThread()) { if (onMainThread()) {
listenerManager.notify(event); listenerManager.notify(event);
} }
@ -2446,7 +2443,6 @@ public class SystemRegistry implements ISystemRegistry
public void addSystemModelChangeListener(ISystemModelChangeListener l) public void addSystemModelChangeListener(ISystemModelChangeListener l)
{ {
modelListenerManager.addSystemModelChangeListener(l); modelListenerManager.addSystemModelChangeListener(l);
modelListenerCount++;
} }
/** /**
* De-Register your interest in being told when an RSE model resource is changed. * De-Register your interest in being told when an RSE model resource is changed.
@ -2454,7 +2450,6 @@ public class SystemRegistry implements ISystemRegistry
public void removeSystemModelChangeListener(ISystemModelChangeListener l) public void removeSystemModelChangeListener(ISystemModelChangeListener l)
{ {
modelListenerManager.removeSystemModelChangeListener(l); modelListenerManager.removeSystemModelChangeListener(l);
modelListenerCount--;
} }
private boolean onMainThread() private boolean onMainThread()
@ -2473,6 +2468,7 @@ public class SystemRegistry implements ISystemRegistry
*/ */
public void fireEvent(ISystemModelChangeEvent event) public void fireEvent(ISystemModelChangeEvent event)
{ {
if (!modelListenerManager.hasListeners()) return;
if (onMainThread()) { if (onMainThread()) {
modelListenerManager.notify(event); modelListenerManager.notify(event);
} }
@ -2487,6 +2483,7 @@ public class SystemRegistry implements ISystemRegistry
*/ */
public void fireModelChangeEvent(int eventType, int resourceType, Object resource, String oldName) public void fireModelChangeEvent(int eventType, int resourceType, Object resource, String oldName)
{ {
if (!modelListenerManager.hasListeners()) return;
SystemModelChangeEvent modelEvent = new SystemModelChangeEvent(); SystemModelChangeEvent modelEvent = new SystemModelChangeEvent();
modelEvent.setEventType(eventType); modelEvent.setEventType(eventType);
modelEvent.setResourceType(resourceType); modelEvent.setResourceType(resourceType);
@ -2528,7 +2525,6 @@ public class SystemRegistry implements ISystemRegistry
public void addSystemRemoteChangeListener(ISystemRemoteChangeListener l) public void addSystemRemoteChangeListener(ISystemRemoteChangeListener l)
{ {
remoteListManager.addSystemRemoteChangeListener(l); remoteListManager.addSystemRemoteChangeListener(l);
remoteListCount++;
} }
/** /**
* De-Register your interest in being told when a remote resource is changed. * De-Register your interest in being told when a remote resource is changed.
@ -2536,7 +2532,6 @@ public class SystemRegistry implements ISystemRegistry
public void removeSystemRemoteChangeListener(ISystemRemoteChangeListener l) public void removeSystemRemoteChangeListener(ISystemRemoteChangeListener l)
{ {
remoteListManager.removeSystemRemoteChangeListener(l); remoteListManager.removeSystemRemoteChangeListener(l);
remoteListCount--;
} }
/** /**
@ -2553,6 +2548,7 @@ public class SystemRegistry implements ISystemRegistry
*/ */
public void fireEvent(ISystemRemoteChangeEvent event) public void fireEvent(ISystemRemoteChangeEvent event)
{ {
if (!remoteListManager.hasListeners()) return;
if (onMainThread()) { if (onMainThread()) {
remoteListManager.notify(event); remoteListManager.notify(event);
} }
@ -2580,6 +2576,8 @@ public class SystemRegistry implements ISystemRegistry
// mark stale any filters that reference this object // mark stale any filters that reference this object
invalidateFiltersFor(resourceParent, subsystem); invalidateFiltersFor(resourceParent, subsystem);
if (!remoteListManager.hasListeners()) return;
SystemRemoteChangeEvent remoteEvent = new SystemRemoteChangeEvent(); SystemRemoteChangeEvent remoteEvent = new SystemRemoteChangeEvent();
remoteEvent.setEventType(eventType); remoteEvent.setEventType(eventType);
remoteEvent.setResource(resource); remoteEvent.setResource(resource);
@ -2618,6 +2616,8 @@ public class SystemRegistry implements ISystemRegistry
// mark stale any filters that reference this object // mark stale any filters that reference this object
invalidateFiltersFor(resourceParent, subsystem); invalidateFiltersFor(resourceParent, subsystem);
if (!remoteListManager.hasListeners()) return;
SystemRemoteChangeEvent remoteEvent = new SystemRemoteChangeEvent(); SystemRemoteChangeEvent remoteEvent = new SystemRemoteChangeEvent();
remoteEvent.setEventType(eventType); remoteEvent.setEventType(eventType);
remoteEvent.setResource(resource); remoteEvent.setResource(resource);
@ -2656,6 +2656,8 @@ public class SystemRegistry implements ISystemRegistry
// mark stale any filters that reference this object // mark stale any filters that reference this object
invalidateFiltersFor(resourceParent, subsystem); invalidateFiltersFor(resourceParent, subsystem);
if (!remoteListManager.hasListeners()) return;
SystemRemoteChangeEvent remoteEvent = new SystemRemoteChangeEvent(); SystemRemoteChangeEvent remoteEvent = new SystemRemoteChangeEvent();
remoteEvent.setOperation(operation); remoteEvent.setOperation(operation);
remoteEvent.setEventType(eventType); remoteEvent.setEventType(eventType);
@ -2696,6 +2698,8 @@ public class SystemRegistry implements ISystemRegistry
// mark stale any filters that reference this object // mark stale any filters that reference this object
invalidateFiltersFor(resourceParent, subsystem); invalidateFiltersFor(resourceParent, subsystem);
if (!remoteListManager.hasListeners()) return;
SystemRemoteChangeEvent remoteEvent = new SystemRemoteChangeEvent(); SystemRemoteChangeEvent remoteEvent = new SystemRemoteChangeEvent();
remoteEvent.setOperation(operation); remoteEvent.setOperation(operation);
remoteEvent.setEventType(eventType); remoteEvent.setEventType(eventType);
@ -2910,6 +2914,7 @@ public class SystemRegistry implements ISystemRegistry
*/ */
public void fireEvent(ISystemPreferenceChangeEvent event) public void fireEvent(ISystemPreferenceChangeEvent event)
{ {
if (!preferenceListManager.hasListeners()) return;
if (onMainThread()) { if (onMainThread()) {
preferenceListManager.notify(event); preferenceListManager.notify(event);
} }
@ -2922,6 +2927,7 @@ public class SystemRegistry implements ISystemRegistry
*/ */
public void fireEvent(ISystemPreferenceChangeListener l, ISystemPreferenceChangeEvent event) public void fireEvent(ISystemPreferenceChangeListener l, ISystemPreferenceChangeEvent event)
{ {
if (!preferenceListManager.hasListeners()) return;
if (onMainThread()) { if (onMainThread()) {
l.systemPreferenceChanged(event); l.systemPreferenceChanged(event);
} }

View file

@ -14,6 +14,7 @@
* Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core * Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
* David McKnight (IBM) - [207100] adding SystemRemoteChangeEventManager.isRegisteredSystemRemoteChangeListener * David McKnight (IBM) - [207100] adding SystemRemoteChangeEventManager.isRegisteredSystemRemoteChangeListener
* Martin Oberhuber (Wind River) - [218659] Make *EventManager, *ChangeManager thread-safe * Martin Oberhuber (Wind River) - [218659] Make *EventManager, *ChangeManager thread-safe
* David Dykstal (IBM) - [227750] add a test for registered listeners
********************************************************************************/ ********************************************************************************/
package org.eclipse.rse.internal.core.model; package org.eclipse.rse.internal.core.model;
@ -112,4 +113,17 @@ public class SystemRemoteChangeEventManager
} }
} }
/**
* Test if a manager has any listeners registered.
* @return true if there are any listeners, false if not.
*/
public boolean hasListeners() {
boolean result = false;
synchronized(lockObject) {
result = listeners.length > 0;
}
return result;
}
} }

View file

@ -14,6 +14,7 @@
* Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core * Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
* Martin Oberhuber (Wind River) - [218659] Make *EventManager, *ChangeManager thread-safe * Martin Oberhuber (Wind River) - [218659] Make *EventManager, *ChangeManager thread-safe
* Martin Oberhuber (Wind River) - [215820] Move SystemRegistry implementation to Core * Martin Oberhuber (Wind River) - [215820] Move SystemRegistry implementation to Core
* David Dykstal (IBM) - [227750] add a test for registered listeners
********************************************************************************/ ********************************************************************************/
package org.eclipse.rse.internal.core.model; package org.eclipse.rse.internal.core.model;
@ -113,5 +114,17 @@ public class SystemResourceChangeManager
//l.systemResourceChanged(event); //l.systemResourceChanged(event);
} }
} }
/**
* Test if a manager has any listeners registered.
* @return true if there are any listeners, false if not.
*/
public boolean hasListeners() {
boolean result = false;
synchronized(lockObject) {
result = listeners.size() > 0;
}
return result;
}
} }