- switch (dataModif.getModificationType()) {
- case DELETE:
- neutronAware.onDeleted(dataModif.getDataBefore(), neutronBefore, neutronAfter);
- break;
- case SUBTREE_MODIFIED:
- neutronAware.onUpdated(dataModif.getDataBefore(), dataModif.getDataAfter(), neutronBefore,
- neutronAfter);
- break;
- case WRITE:
- if (dataModif.getDataBefore() == null) {
- neutronAware.onCreated(dataModif.getDataAfter(), neutronAfter);
- } else {
- neutronAware.onUpdated(dataModif.getDataBefore(), dataModif.getDataAfter(), neutronBefore,
- neutronAfter);
- }
- break;
- default:
- throw new IllegalStateException(EXC_MSG_UNKNOWN_MODIFICATION_TYPE_WITHIN_DATA + dataModif);
+ final T dataBefore = dataModif.getDataBefore();
+ final T dataAfter = dataModif.getDataAfter();
+ if (dataBefore == null && dataAfter != null) {
+ neutronAware.onCreated(dataAfter, neutronAfter);
+ }
+ else if (dataBefore != null && dataAfter != null) {
+ neutronAware.onUpdated(dataBefore, dataAfter, neutronBefore, neutronAfter);
+ }
+ else if (dataBefore != null) {
+ neutronAware.onDeleted(dataBefore, neutronBefore, neutronAfter);
+ }
+ else {
+ throw new IllegalStateException(EXC_MSG_UNKNOWN_MODIFICATION_TYPE_WITHIN_DATA + dataModif);