}
@Override
public void setValue(Object element, Object value) throws Exception
{
Attributes attribs = Adaptor.adapt(Attributable.class, element).getAttributes();
Object newValue = attribute.getConverter().fromString(String.valueOf(value));
Object oldValue = attribs.get(attribute);
// update the value
// * if it has non null value and the value actually changed
// * or if it is null and previously existed
if ((newValue != null && !newValue.equals(oldValue)) //
|| (newValue == null && attribs.exists(attribute)))
{
attribs.put(attribute, newValue);
notify(element, newValue, oldValue);
}
}