Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKai Maetzel2004-10-12 10:27:41 +0000
committerKai Maetzel2004-10-12 10:27:41 +0000
commite0e03269d7b22819ae1001a1876fb81e2b32ed40 (patch)
treeba64cb60b9ab2769570c726486eb97e3f2a7e565 /org.eclipse.core.filebuffers.tests
parent29b33831be068fc5da5098970c5ee269b051de36 (diff)
downloadeclipse.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.java49
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;
}
}

Back to the top