1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-03 15:15:25 +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:
* Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
* 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;
@ -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:
* Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
* 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;
@ -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) - [229116] NPE in when editing remote file in new workspace
* 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;
@ -124,10 +125,6 @@ public class SystemRegistry implements ISystemRegistry
private final SystemModelChangeEventManager modelListenerManager = new SystemModelChangeEventManager();
private final SystemRemoteChangeEventManager remoteListManager = new SystemRemoteChangeEventManager();
private int listenerCount = 0;
private int modelListenerCount = 0;
private int remoteListCount = 0;
private ISubSystemConfigurationProxy[] subsystemConfigurationProxies = null;
private boolean errorLoadingFactory = false;
@ -2366,7 +2363,6 @@ public class SystemRegistry implements ISystemRegistry
public void addSystemResourceChangeListener(ISystemResourceChangeListener l)
{
listenerManager.addSystemResourceChangeListener(l);
listenerCount++;
}
/**
* 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)
{
listenerManager.removeSystemResourceChangeListener(l);
listenerCount--;
}
/**
* 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()) {
listenerManager.notify(event);
}
@ -2446,7 +2443,6 @@ public class SystemRegistry implements ISystemRegistry
public void addSystemModelChangeListener(ISystemModelChangeListener l)
{
modelListenerManager.addSystemModelChangeListener(l);
modelListenerCount++;
}
/**
* 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)
{
modelListenerManager.removeSystemModelChangeListener(l);
modelListenerCount--;
}
private boolean onMainThread()
@ -2473,6 +2468,7 @@ public class SystemRegistry implements ISystemRegistry
*/
public void fireEvent(ISystemModelChangeEvent event)
{
if (!modelListenerManager.hasListeners()) return;
if (onMainThread()) {
modelListenerManager.notify(event);
}
@ -2487,6 +2483,7 @@ public class SystemRegistry implements ISystemRegistry
*/
public void fireModelChangeEvent(int eventType, int resourceType, Object resource, String oldName)
{
if (!modelListenerManager.hasListeners()) return;
SystemModelChangeEvent modelEvent = new SystemModelChangeEvent();
modelEvent.setEventType(eventType);
modelEvent.setResourceType(resourceType);
@ -2528,7 +2525,6 @@ public class SystemRegistry implements ISystemRegistry
public void addSystemRemoteChangeListener(ISystemRemoteChangeListener l)
{
remoteListManager.addSystemRemoteChangeListener(l);
remoteListCount++;
}
/**
* 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)
{
remoteListManager.removeSystemRemoteChangeListener(l);
remoteListCount--;
}
/**
@ -2553,6 +2548,7 @@ public class SystemRegistry implements ISystemRegistry
*/
public void fireEvent(ISystemRemoteChangeEvent event)
{
if (!remoteListManager.hasListeners()) return;
if (onMainThread()) {
remoteListManager.notify(event);
}
@ -2580,6 +2576,8 @@ public class SystemRegistry implements ISystemRegistry
// mark stale any filters that reference this object
invalidateFiltersFor(resourceParent, subsystem);
if (!remoteListManager.hasListeners()) return;
SystemRemoteChangeEvent remoteEvent = new SystemRemoteChangeEvent();
remoteEvent.setEventType(eventType);
remoteEvent.setResource(resource);
@ -2618,6 +2616,8 @@ public class SystemRegistry implements ISystemRegistry
// mark stale any filters that reference this object
invalidateFiltersFor(resourceParent, subsystem);
if (!remoteListManager.hasListeners()) return;
SystemRemoteChangeEvent remoteEvent = new SystemRemoteChangeEvent();
remoteEvent.setEventType(eventType);
remoteEvent.setResource(resource);
@ -2656,6 +2656,8 @@ public class SystemRegistry implements ISystemRegistry
// mark stale any filters that reference this object
invalidateFiltersFor(resourceParent, subsystem);
if (!remoteListManager.hasListeners()) return;
SystemRemoteChangeEvent remoteEvent = new SystemRemoteChangeEvent();
remoteEvent.setOperation(operation);
remoteEvent.setEventType(eventType);
@ -2696,6 +2698,8 @@ public class SystemRegistry implements ISystemRegistry
// mark stale any filters that reference this object
invalidateFiltersFor(resourceParent, subsystem);
if (!remoteListManager.hasListeners()) return;
SystemRemoteChangeEvent remoteEvent = new SystemRemoteChangeEvent();
remoteEvent.setOperation(operation);
remoteEvent.setEventType(eventType);
@ -2910,6 +2914,7 @@ public class SystemRegistry implements ISystemRegistry
*/
public void fireEvent(ISystemPreferenceChangeEvent event)
{
if (!preferenceListManager.hasListeners()) return;
if (onMainThread()) {
preferenceListManager.notify(event);
}
@ -2922,6 +2927,7 @@ public class SystemRegistry implements ISystemRegistry
*/
public void fireEvent(ISystemPreferenceChangeListener l, ISystemPreferenceChangeEvent event)
{
if (!preferenceListManager.hasListeners()) return;
if (onMainThread()) {
l.systemPreferenceChanged(event);
}

View file

@ -14,6 +14,7 @@
* Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
* David McKnight (IBM) - [207100] adding SystemRemoteChangeEventManager.isRegisteredSystemRemoteChangeListener
* 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;
@ -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) - [218659] Make *EventManager, *ChangeManager thread-safe
* 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;
@ -113,5 +114,17 @@ public class SystemResourceChangeManager
//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;
}
}