You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by gb...@apache.org on 2010/08/24 23:42:53 UTC
svn commit: r988734 -
/pivot/trunk/core/src/org/apache/pivot/beans/NamespaceBinding.java
Author: gbrown
Date: Tue Aug 24 21:42:53 2010
New Revision: 988734
URL: http://svn.apache.org/viewvc?rev=988734&view=rev
Log:
Avoid potential infinite loops with circular namespace binding references.
Modified:
pivot/trunk/core/src/org/apache/pivot/beans/NamespaceBinding.java
Modified: pivot/trunk/core/src/org/apache/pivot/beans/NamespaceBinding.java
URL: http://svn.apache.org/viewvc/pivot/trunk/core/src/org/apache/pivot/beans/NamespaceBinding.java?rev=988734&r1=988733&r2=988734&view=diff
==============================================================================
--- pivot/trunk/core/src/org/apache/pivot/beans/NamespaceBinding.java (original)
+++ pivot/trunk/core/src/org/apache/pivot/beans/NamespaceBinding.java Tue Aug 24 21:42:53 2010
@@ -40,11 +40,16 @@ public class NamespaceBinding {
private Dictionary<String, Object> targetDictionary;
private String targetKey;
+ private boolean updating = false;
+
private MapListener<String, Object> sourceMapListener = new MapListener.Adapter<String, Object>() {
@Override
public void valueUpdated(Map<String, Object> map, String key, Object previousValue) {
- if (key.equals(sourceKey)) {
+ if (key.equals(sourceKey)
+ && !updating) {
+ updating = true;
targetDictionary.put(targetKey, sourceMap.get(sourceKey));
+ updating = false;
}
}
};
@@ -52,8 +57,11 @@ public class NamespaceBinding {
private PropertyChangeListener sourcePropertyChangeListener = new PropertyChangeListener() {
@Override
public void propertyChanged(Object bean, String propertyName) {
- if (propertyName.equals(sourceKey)) {
+ if (propertyName.equals(sourceKey)
+ && !updating) {
+ updating = true;
targetDictionary.put(targetKey, sourceMap.get(sourceKey));
+ updating = false;
}
}
};