Client does not recieve notification of deleted resources

A ProjectChangeListener added to a client does not appear to receive any notification of deleted resources.

The Project object passed to projectUpdated appears to be a complete project rather than a diff like it is for designers, so it simply does not contain any reference to the deleted resource, either in getResources() or getDeletedResources(). (As expected, projectResourceModified never appears to be called for a client).

It would seem to be a reasonable design decision that clients always receive complete projects. However, this can be a problem for modules which have their own state to keep in sync. Is there any way to tell if a Project is a diff or a complete project?


This solution appears to work. Given a Project diff and complete Project project it appears that:
Designers call projectUpdated(diff) and then project.applyDiff(diff).
Clients call project.applyDiff(diff) and then projectUpdated(project).

The two cases can be detected by doing:

void projectUpdated(Project diff) {
    if (diff == context.getProject()) {
        // This is a complete project, reset module state and rebuild.
    } else {
        // This is a diff only.