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:
parent
d60cced6cc
commit
048aa33228
5 changed files with 71 additions and 10 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Reference in a new issue