public class MyTransactionListener implements TransactionCommitListener
{
public Runnable transactionCommited(final Collection<PropertyChangeEvent> events)
{
return new Runnable()
{
public void run()
{
for (PropertyChangeEvent event : events)
{
if (UML2MetamodelConstants.INSTANCE_CREATED.equals(event.getPropertyName()))
{
Object source = event.getSource();
if (source instanceof Property)
{
Property property = (Property) source; Element owner = property.getOwner();
if (owner instanceof Classifier)
{
Classifier propertyOwner = (Classifier) owner;
propertyOwner.setName("Contains (" + propertyOwner.getAttribute().size() + ") attributes");
}
// additionally for this Property we register listener to listen for any property changes in this Element properties.
property.addPropertyChangeListener(new DerivedValuePropertyChangeListener());
}
}
}
}
};
}
}