@Override public void received(IResource resource, ChangeType change) { Trace.debug("Watch received change in {0} state\n{1}", state, resource.toJson(false)); if (State.CONNECTED == state.get()) { IResource newItem = null; IResource oldItem = null; int index = resources.indexOf(resource); if (ChangeType.ADDED.equals(change)) { resources.add(resource); newItem = resource; } else if (ChangeType.DELETED.equals(change)) { oldItem = index > NOT_FOUND ? resources.remove(index) : resource; } else if (ChangeType.MODIFIED.equals(change)) { if (index > NOT_FOUND) { oldItem = resources.remove(index); } resources.add(resource); newItem = resource; } ConnectionsRegistrySingleton.getInstance() .fireConnectionChanged(conn, ConnectionProperties.PROPERTY_RESOURCE, oldItem, newItem); } }