Source:
<code>public void resourceChanged(IResourceChangeEvent event) { if (event.getDelta() == null) return; if (sarosSessionManager == null) { initialize(); if (sarosSessionManager == null) { throw new IllegalStateException("Failed to inject saros session manager instance"); } } Deque<IResourceDelta> stack = new LinkedList<IResourceDelta>(); stack.addAll(Arrays.asList(event.getDelta().getAffectedChildren())); while (!stack.isEmpty()) { IResourceDelta delta = stack.pop(); stack.addAll(Arrays.asList(delta.getAffectedChildren())); if (delta.getResource().getType() == IResource.FILE) { if (delta.getKind() == IResourceDelta.NO_CHANGE) continue; if ((delta.getKind() == IResourceDelta.CHANGED) && (delta.getFlags() == IResourceDelta.MARKERS)) continue; final IFile file = delta.getResource().getAdapter(IFile.class); <START> final ISarosSession sarosSession = sarosSessionManager.getSession(); <END> if (sarosSession == null) { if (log.isTraceEnabled()) { log.trace("Ignoring resource change without a running session for file " + file); } return; } Set<IReferencePoint> sharedReferencePoints = sarosSession.getReferencePoints(); saros.filesystem.IFile fileWrapper = ResourceConverter.convertToFile(sharedReferencePoints, file); if (fileWrapper == null) { if (log.isTraceEnabled()) { log.trace("Ignoring resource change for non-shared file " + file); } return; } for (IFileContentChangedListener listener : fileContentChangedListeners) { listener.fileContentChanged(fileWrapper); } } } }</code><technical_language>basically breaking cache implementation ... congratulation ! interface states operates SHARED files ? I do so</technical_language>

Target:
public void resourceChanged(IResourceChangeEvent event) { if (event.getDelta() == null) return; if (sarosSessionManager == null) { initialize(); if (sarosSessionManager == null) { throw new IllegalStateException("Failed to inject saros session manager instance"); } } Deque<IResourceDelta> stack = new LinkedList<IResourceDelta>(); stack.addAll(Arrays.asList(event.getDelta().getAffectedChildren())); while (!stack.isEmpty()) { IResourceDelta delta = stack.pop(); stack.addAll(Arrays.asList(delta.getAffectedChildren())); if (delta.getResource().getType() == IResource.FILE) { if (delta.getKind() == IResourceDelta.NO_CHANGE) continue; if ((delta.getKind() == IResourceDelta.CHANGED) && (delta.getFlags() == IResourceDelta.MARKERS)) continue; final IFile file = delta.getResource().getAdapter(IFile.class); final ISarosSession sarosSession = sarosSessionManager.getSession(); if (sarosSession == null) { if (log.isTraceEnabled()) { log.trace("Ignoring resource change without a running session for file " + file); } return; } Set<IReferencePoint> sharedReferencePoints = sarosSession.getReferencePoints(); saros.filesystem.IFile fileWrapper = ResourceConverter.convertToFile(sharedReferencePoints, file); if (fileWrapper == null) { if (log.isTraceEnabled()) { log.trace("Ignoring resource change for non-shared file " + file); } return; } for (IFileContentChangedListener listener : fileContentChangedListeners) { try { listener.fileContentChanged(fileWrapper); } catch (RuntimeException e) { log.error("internal error in listener: " + listener, e); } } } } }