From 28b60e99a5ab606da9dd20149a7e856cbf8aba11 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Wed, 11 Aug 2010 18:34:42 +0400 Subject: [PATCH] JspPrefixRefactoringTest fixed --- .../impl/include/FileIncludeManagerImpl.java | 8 +++-- .../fixtures/CodeInsightTestFixture.java | 4 +-- .../impl/CodeInsightTestFixtureImpl.java | 19 ++++++------ .../source/xml/SchemaPrefixReference.java | 29 ++++++++----------- 4 files changed, 30 insertions(+), 30 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/psi/impl/include/FileIncludeManagerImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/include/FileIncludeManagerImpl.java index b15bbcc6829a..f6aac4d73e26 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/include/FileIncludeManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/include/FileIncludeManagerImpl.java @@ -22,6 +22,7 @@ import com.intellij.openapi.util.Key; import com.intellij.openapi.util.Pair; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.vfs.VirtualFileManager; import com.intellij.openapi.vfs.VirtualFileWithId; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiFileFactory; @@ -34,7 +35,6 @@ import com.intellij.psi.util.CachedValueProvider; import com.intellij.psi.util.CachedValuesManager; import com.intellij.psi.util.ParameterizedCachedValue; import com.intellij.psi.util.ParameterizedCachedValueProvider; -import com.intellij.util.ArrayUtil; import com.intellij.util.Processor; import com.intellij.util.containers.HashMap; import com.intellij.util.containers.MultiMap; @@ -222,7 +222,11 @@ public class FileIncludeManagerImpl extends FileIncludeManager { public CachedValueProvider.Result compute(PsiFile param) { VirtualFile[] value = computeFiles(param, myRuntimeOnly); // todo: we need "url modification tracker" for VirtualFile - return CachedValueProvider.Result.create(value, ArrayUtil.append(value, param.getVirtualFile())); + Object[] deps = new Object[value.length + 2]; + deps[deps.length - 2] = param.getVirtualFile(); + deps[deps.length - 1] = VirtualFileManager.getInstance(); + + return CachedValueProvider.Result.create(value, deps); } } } diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java index 915da014fdea..b329ec8ace4d 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java @@ -207,7 +207,7 @@ public interface CodeInsightTestFixture extends IdeaProjectTestFixture { */ void launchAction(@NotNull IntentionAction action); - void configureByFile(@TestDataFile @NonNls String file); + PsiFile configureByFile(@TestDataFile @NonNls String file); void configureByFiles(@NonNls String... files); @@ -305,7 +305,7 @@ public interface CodeInsightTestFixture extends IdeaProjectTestFixture { void performEditorAction(String actionId); - int configureFromTempProjectFile(String filePath); + PsiFile configureFromTempProjectFile(String filePath); void configureFromExistingVirtualFile(VirtualFile f); diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java index 51826773cf31..9ae07411d9fd 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java @@ -661,7 +661,8 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig new WriteCommandAction.Simple(project) { protected void run() throws Exception { - final int offset = configureByFilesInner(filePath); + configureByFilesInner(filePath); + int offset = myEditor.getCaretModel().getOffset(); final Collection infos = doHighlighting(); for (HighlightInfo info :infos) { @@ -945,7 +946,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig super.tearDown(); } - private int configureByFilesInner(@NonNls String... filePaths) throws IOException { + private PsiFile configureByFilesInner(@NonNls String... filePaths) throws IOException { assertInitialized(); myFile = null; myEditor = null; @@ -955,13 +956,14 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig return configureByFileInner(filePaths[0]); } - public void configureByFile(final String file) { + public PsiFile configureByFile(final String file) { assertInitialized(); new WriteCommandAction.Simple(getProject()) { protected void run() throws Exception { configureByFilesInner(file); } }.execute(); + return myFile; } public void configureByFiles(@NonNls final String... files) { @@ -1026,16 +1028,15 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig /** * * @param filePath - * @return caret offset or -1 if caret marker does not present * @throws IOException */ - private int configureByFileInner(@NonNls String filePath) { + private PsiFile configureByFileInner(@NonNls String filePath) { assertInitialized(); final VirtualFile file = copyFileToProject(filePath); return configureByFileInner(file); } - public int configureFromTempProjectFile(final String filePath) { + public PsiFile configureFromTempProjectFile(final String filePath) { return configureByFileInner(findFileInTempDir(filePath)); } @@ -1043,11 +1044,11 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig configureByFileInner(f); } - private int configureByFileInner(final VirtualFile copy) { + private PsiFile configureByFileInner(final VirtualFile copy) { return configureInner(copy, SelectionAndCaretMarkupLoader.fromFile(copy, getProject())); } - private int configureInner(@NotNull final VirtualFile copy, final SelectionAndCaretMarkupLoader loader) { + private PsiFile configureInner(@NotNull final VirtualFile copy, final SelectionAndCaretMarkupLoader loader) { assertInitialized(); try { final OutputStream outputStream = copy.getOutputStream(null, 0, 0); @@ -1077,7 +1078,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig } } - return offset; + return myFile; } private static void setContext(final PsiFile file, final PsiElement context) { diff --git a/xml/impl/src/com/intellij/psi/impl/source/xml/SchemaPrefixReference.java b/xml/impl/src/com/intellij/psi/impl/source/xml/SchemaPrefixReference.java index 8ef432759162..3148d68d2817 100644 --- a/xml/impl/src/com/intellij/psi/impl/source/xml/SchemaPrefixReference.java +++ b/xml/impl/src/com/intellij/psi/impl/source/xml/SchemaPrefixReference.java @@ -16,7 +16,6 @@ package com.intellij.psi.impl.source.xml; import com.intellij.codeInsight.lookup.LookupElement; -import com.intellij.openapi.util.NullableLazyValue; import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiReferenceBase; @@ -36,21 +35,7 @@ import org.jetbrains.annotations.Nullable; */ public class SchemaPrefixReference extends PsiReferenceBase implements PossiblePrefixReference { - private final NullableLazyValue myPrefix = new NullableLazyValue() { - @Override - protected SchemaPrefix compute() { - if (myElement instanceof XmlAttribute && (((XmlAttribute)myElement).isNamespaceDeclaration())) { - return new SchemaPrefix((XmlAttribute)myElement, getRangeInElement(), myName); - } - else if (myElement instanceof XmlAttributeValue && - ((XmlAttribute)((XmlAttributeValue)myElement).getParent()).getLocalName().equals("prefix")) { - return SchemaPrefix.createJspPrefix((XmlAttributeValue)SchemaPrefixReference.this.myElement, myName); - } - else { - return resolvePrefix(myElement, myName); - } - } - }; + private final SchemaPrefix myPrefix; private final String myName; @Nullable @@ -67,6 +52,16 @@ public class SchemaPrefixReference extends PsiReferenceBase implemen super(element, range, true); myName = name; myTagNameReference = tagNameReference; + if (myElement instanceof XmlAttribute && (((XmlAttribute)myElement).isNamespaceDeclaration())) { + myPrefix = new SchemaPrefix((XmlAttribute)myElement, getRangeInElement(), myName); + } + else if (myElement instanceof XmlAttributeValue && + ((XmlAttribute)((XmlAttributeValue)myElement).getParent()).getLocalName().equals("prefix")) { + myPrefix = SchemaPrefix.createJspPrefix((XmlAttributeValue)myElement, myName); + } + else { + myPrefix = null; + } } public String getNamespacePrefix() { @@ -74,7 +69,7 @@ public class SchemaPrefixReference extends PsiReferenceBase implemen } public SchemaPrefix resolve() { - return myPrefix.getValue(); + return myPrefix == null ? resolvePrefix(myElement, myName) : myPrefix; } @NotNull