diff options
author | Kai Maetzel | 2004-10-12 10:27:41 +0000 |
---|---|---|
committer | Kai Maetzel | 2004-10-12 10:27:41 +0000 |
commit | e0e03269d7b22819ae1001a1876fb81e2b32ed40 (patch) | |
tree | ba64cb60b9ab2769570c726486eb97e3f2a7e565 /org.eclipse.core.filebuffers.tests | |
parent | 29b33831be068fc5da5098970c5ee269b051de36 (diff) | |
download | eclipse.platform.text-e0e03269d7b22819ae1001a1876fb81e2b32ed40.tar.gz eclipse.platform.text-e0e03269d7b22819ae1001a1876fb81e2b32ed40.tar.xz eclipse.platform.text-e0e03269d7b22819ae1001a1876fb81e2b32ed40.zip |
bug fix for tests
Diffstat (limited to 'org.eclipse.core.filebuffers.tests')
-rw-r--r-- | org.eclipse.core.filebuffers.tests/src/org/eclipse/core/filebuffers/tests/FileBuffersForWorkspaceFiles.java | 49 |
1 files changed, 47 insertions, 2 deletions
diff --git a/org.eclipse.core.filebuffers.tests/src/org/eclipse/core/filebuffers/tests/FileBuffersForWorkspaceFiles.java b/org.eclipse.core.filebuffers.tests/src/org/eclipse/core/filebuffers/tests/FileBuffersForWorkspaceFiles.java index e2879f55e90..b29d9990dcf 100644 --- a/org.eclipse.core.filebuffers.tests/src/org/eclipse/core/filebuffers/tests/FileBuffersForWorkspaceFiles.java +++ b/org.eclipse.core.filebuffers.tests/src/org/eclipse/core/filebuffers/tests/FileBuffersForWorkspaceFiles.java @@ -16,6 +16,10 @@ import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceChangeEvent; +import org.eclipse.core.resources.IResourceChangeListener; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; @@ -26,6 +30,27 @@ import org.eclipse.core.filebuffers.FileBuffers; */ public class FileBuffersForWorkspaceFiles extends FileBufferFunctions { + + private static class ResourceListener implements IResourceChangeListener { + public boolean fFired= false; + public IPath fPath; + + public ResourceListener(IPath path) { + fPath= path; + } + + public void resourceChanged(IResourceChangeEvent event) { + if (!fFired) { + IResourceDelta delta= event.getDelta(); + if (delta != null) { + delta= delta.findMember(fPath); + if (delta != null) + fFired= IResourceDelta.CHANGED == delta.getKind() && (IResourceDelta.CONTENT & delta.getFlags()) != 0; + } + } + } + } + protected IPath createPath(IProject project) throws Exception { IFolder folder= ResourceHelper.createFolder("project/folderA/folderB/"); IFile file= ResourceHelper.createFile(folder, "WorkspaceFile", "content"); @@ -79,7 +104,27 @@ public class FileBuffersForWorkspaceFiles extends FileBufferFunctions { File file= FileBuffers.getSystemFileAtLocation(getPath()); FileTool.write(file.getAbsolutePath(), new StringBuffer("Changed content of workspace file")); IFile iFile= FileBuffers.getWorkspaceFileAtLocation(getPath()); - iFile.refreshLocal(IResource.DEPTH_INFINITE, null); - return true; + + ResourceListener listener= new ResourceListener(iFile.getFullPath()); + ResourcesPlugin.getWorkspace().addResourceChangeListener(listener); + try { + iFile.refreshLocal(IResource.DEPTH_INFINITE, null); + return receivedNotification(listener); + } finally { + ResourcesPlugin.getWorkspace().removeResourceChangeListener(listener); + listener= null; + } + } + + private boolean receivedNotification(ResourceListener listener) { + for (int i= 0; i < 5; i++) { + if (listener.fFired) + return true; + try { + Thread.sleep(1000); // sleep a second + } catch (InterruptedException e) { + } + } + return false; } } |