From 61aeee6effd0c8530d183b2901584f20b0b35310 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 27 Aug 2014 11:07:49 +0200 Subject: [PATCH] correct file movement handing in TempFileSystem --- .../impl/file/impl/TempFileSystemTest.java | 43 +++++++++++++++++++ .../openapi/vfs/ex/temp/TempFileSystem.java | 2 +- 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testSrc/com/intellij/psi/impl/file/impl/TempFileSystemTest.java diff --git a/java/java-tests/testSrc/com/intellij/psi/impl/file/impl/TempFileSystemTest.java b/java/java-tests/testSrc/com/intellij/psi/impl/file/impl/TempFileSystemTest.java new file mode 100644 index 000000000000..dbdd61bc340b --- /dev/null +++ b/java/java-tests/testSrc/com/intellij/psi/impl/file/impl/TempFileSystemTest.java @@ -0,0 +1,43 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.psi.impl.file.impl; + +import com.intellij.openapi.roots.ProjectRootManager; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.PsiDirectory; +import com.intellij.psi.PsiFile; +import com.intellij.psi.PsiManager; +import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase; + +import java.io.IOException; + +public class TempFileSystemTest extends LightPlatformCodeInsightFixtureTestCase { + public void testMove() { + ProjectRootManager rootManager = ProjectRootManager.getInstance(getProject()); + VirtualFile sourceRoot = rootManager.getContentSourceRoots()[0]; + PsiManager psiManager = PsiManager.getInstance(getProject()); + PsiDirectory psiSourceRoot = psiManager.findDirectory(sourceRoot); + PsiFile psiFile = psiSourceRoot.createFile("TestDocument.xml"); + try { + psiFile.getVirtualFile().move(this, psiSourceRoot.createSubdirectory("com").getVirtualFile()); + } catch (IOException e) { + e.printStackTrace(); + } + assertTrue(psiFile.isValid()); + psiFile.delete(); + assertFalse(psiFile.isValid()); + } +} \ No newline at end of file diff --git a/platform/platform-impl/src/com/intellij/openapi/vfs/ex/temp/TempFileSystem.java b/platform/platform-impl/src/com/intellij/openapi/vfs/ex/temp/TempFileSystem.java index 1c6e173b45d1..18b33b281740 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vfs/ex/temp/TempFileSystem.java +++ b/platform/platform-impl/src/com/intellij/openapi/vfs/ex/temp/TempFileSystem.java @@ -136,7 +136,7 @@ public class TempFileSystem extends LocalFileSystemBase { } fsItem.getParent().removeChild(fsItem); - ((FSDir)newParentItem).addChild(fsItem); + newDir.addChild(fsItem.isDirectory() ? new FSDir(newDir, fsItem.myName) : new FSFile(newDir, fsItem.myName)); } @Override