Author: b00__1
Date: 2007-07-23 20:57:59-0700
New Revision: 13123
Modified:
branches/gsoc2007/b00__1/model-euml/src/org/argouml/model/euml/ModelEventPumpEUMLImpl.java
Log:
Added synchronization on a mutex.
Modified: branches/gsoc2007/b00__1/model-euml/src/org/argouml/model/euml/ModelEventPumpEUMLImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2007/b00__1/model-euml/src/org/argouml/model/euml/ModelEventPumpEUMLImpl.java?view=diff&rev=13123&p1=branches/gsoc2007/b00__1/model-euml/src/org/argouml/model/euml/ModelEventPumpEUMLImpl.java&p2=branches/gsoc2007/b00__1/model-euml/src/org/argouml/model/euml/ModelEventPumpEUMLImpl.java&r1=13122&r2=13123
==============================================================================
--- branches/gsoc2007/b00__1/model-euml/src/org/argouml/model/euml/ModelEventPumpEUMLImpl.java (original)
+++ branches/gsoc2007/b00__1/model-euml/src/org/argouml/model/euml/ModelEventPumpEUMLImpl.java 2007-07-23 20:57:59-0700
@@ -107,6 +107,8 @@
private Map<Object, List<Listener>> registerForClasses =
new LinkedHashMap<Object, List<Listener>>();
+ private Object mutex;
+
/**
* Constructor.
*
@@ -115,6 +117,7 @@
*/
public ModelEventPumpEUMLImpl(EUMLModelImplementation implementation) {
modelImpl = implementation;
+ mutex = this;
}
/**
@@ -156,31 +159,32 @@
if (notifier == null || listener == null) {
throw new NullPointerException();
}
- List<Listener> list = register.get(notifier);
- boolean found = false;
- if (list == null) {
- list = new ArrayList<Listener>();
- } else {
- for (Listener l : list) {
- if (l.getListener() == listener) {
- // TODO: Do we really want to add new properties to the
- // already registered listener or we want to replace the
- // old properties
- l.addProperties(propertyNames);
- found = true;
- break;
+ synchronized (mutex) {
+ List<Listener> list = register.get(notifier);
+ boolean found = false;
+ if (list == null) {
+ list = new ArrayList<Listener>();
+ } else {
+ for (Listener l : list) {
+ if (l.getListener() == listener) {
+ // TODO: Do we really want to add new properties to the
+ // already registered listener or we want to replace the
+ // old properties
+ l.addProperties(propertyNames);
+ found = true;
+ break;
+ }
}
}
- }
- if (!found) {
- list.add(new Listener(listener, propertyNames));
- register.put(notifier, list);
+ if (!found) {
+ list.add(new Listener(listener, propertyNames));
+ register.put(notifier, list);
+ }
}
}
public void flushModelEvents() {
// TODO Auto-generated method stub
-
}
public void removeClassModelEventListener(PropertyChangeListener listener,
@@ -213,20 +217,22 @@
if (notifier == null || listener == null) {
throw new NullPointerException();
}
- List<Listener> list = register.get(notifier);
- if (list == null) {
- return;
- }
- Iterator<Listener> iter = list.iterator();
- while (iter.hasNext()) {
- Listener l = iter.next();
- if (l.getListener() == listener) {
- if (propertyNames == null) {
- l.removeProperties(propertyNames);
- } else {
- iter.remove();
+ synchronized (mutex) {
+ List<Listener> list = register.get(notifier);
+ if (list == null) {
+ return;
+ }
+ Iterator<Listener> iter = list.iterator();
+ while (iter.hasNext()) {
+ Listener l = iter.next();
+ if (l.getListener() == listener) {
+ if (propertyNames != null) {
+ l.removeProperties(propertyNames);
+ } else {
+ iter.remove();
+ }
+ break;
}
- break;
}
}
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.