Skip to content

Commit

Permalink
Make The AbstractNamedBean setProperties method fire a property chang…
Browse files Browse the repository at this point in the history
…e listener.
  • Loading branch information
pabender committed Feb 6, 2019
1 parent 58acd74 commit 957c0d4
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 28 deletions.
23 changes: 0 additions & 23 deletions java/src/jmri/implementation/AbstractIdTag.java
Expand Up @@ -87,28 +87,5 @@ public String getBeanType() {
return Bundle.getMessage("BeanNameReporter");
}

/**
* {@inheritDoc}
*
* This implementation fires property change listeners
* when properties change.
*/
@Override
public void setProperty(String key,Object value){
Set<String> keySet = getPropertyKeys();
if(keySet.contains(key)){
// key already in the map, replace the value.
Object oldValue = getProperty(key);
if(!(oldValue.equals(value))){
removeProperty(key); // make sure the old value is removed.
super.setProperty(key,value); // then add the new one.
firePropertyChange(key,oldValue,value);
}
} else {
super.setProperty(key,value);
firePropertyChange(key,null,value);
}
}

// private static final Logger log = LoggerFactory.getLogger(AbstractIdTag.class);
}
26 changes: 21 additions & 5 deletions java/src/jmri/implementation/AbstractNamedBean.java
Expand Up @@ -4,6 +4,7 @@
import java.beans.PropertyChangeSupport;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;
import javax.annotation.CheckReturnValue;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
Expand Down Expand Up @@ -259,13 +260,28 @@ public String describeState(int state) {
}
}

/**
* {@inheritDoc}
*/
@Override
@OverridingMethodsMustInvokeSuper
public void setProperty(String key, Object value) {
if (parameters == null) {
parameters = new HashMap<>();
}
parameters.put(key, value);
public void setProperty(String key,Object value){
if (parameters == null) {
parameters = new HashMap<>();
}
Set<String> keySet = getPropertyKeys();
if(keySet.contains(key)){
// key already in the map, replace the value.
Object oldValue = getProperty(key);
if(!(oldValue.equals(value))){
removeProperty(key); // make sure the old value is removed.
parameters.put(key, value);
firePropertyChange(key,oldValue,value);
}
} else {
parameters.put(key, value);
firePropertyChange(key,null,value);
}
}

@Override
Expand Down

0 comments on commit 957c0d4

Please sign in to comment.