From 60a6dd7cb6fe10cb8570bbcd36e071273d70f139 Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 26 May 2015 22:39:15 +0200 Subject: [PATCH] dom GenericValueReferenceProvider: micro-optimizations --- .../impl/GenericValueReferenceProvider.java | 41 +++++++------------ 1 file changed, 15 insertions(+), 26 deletions(-) diff --git a/xml/dom-impl/src/com/intellij/util/xml/impl/GenericValueReferenceProvider.java b/xml/dom-impl/src/com/intellij/util/xml/impl/GenericValueReferenceProvider.java index 2276173bcc09..d4980b23eec5 100644 --- a/xml/dom-impl/src/com/intellij/util/xml/impl/GenericValueReferenceProvider.java +++ b/xml/dom-impl/src/com/intellij/util/xml/impl/GenericValueReferenceProvider.java @@ -26,7 +26,6 @@ import com.intellij.util.ReflectionUtil; import com.intellij.util.xml.*; import com.intellij.xml.util.XmlEnumeratedValueReferenceProvider; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.util.*; @@ -80,7 +79,7 @@ public class GenericValueReferenceProvider extends PsiReferenceProvider { Class clazz = referencing.value(); converter = ((ConverterManagerImpl)domManager.getConverterManager()).getInstance(clazz); } - PsiReference[] references = createReferences(domValue, (XmlElement)psiElement, converter, handler); + PsiReference[] references = createReferences(domValue, (XmlElement)psiElement, converter, handler, domManager); if (ApplicationManager.getApplication().isUnitTestMode()) { for (PsiReference reference : references) { if (!reference.isSoft()) { @@ -98,39 +97,31 @@ public class GenericValueReferenceProvider extends PsiReferenceProvider { return references; } - private static ConvertContext createConvertContext(final PsiElement psiElement, final GenericDomValue domValue) { - return ConvertContextFactory.createConvertContext(domValue); - } - - @Nullable - private static DomInvocationHandler getInvocationHandler(final GenericDomValue domValue) { - return DomManagerImpl.getDomInvocationHandler(domValue); - } - - private PsiReference[] createReferences(final GenericDomValue domValue, final XmlElement psiElement, final Object converter, DomInvocationHandler handler) { - ConvertContext context = createConvertContext(psiElement, domValue); + private PsiReference[] createReferences(final GenericDomValue domValue, final XmlElement psiElement, final Object converter, DomInvocationHandler handler, DomManager domManager) { + final XmlFile file = handler.getFile(); + final DomFileDescription description = domManager.getDomFileDescription(file); + if (description == null) { + return PsiReference.EMPTY_ARRAY; // should not happen + } List result = new ArrayList(); - final XmlFile file = handler.getFile(); - final DomFileDescription description = DomManagerImpl.getDomManager(file.getProject()).getDomFileDescription(file); - if (description != null) { - final List injectors = description.getReferenceInjectors(); - if (!injectors.isEmpty()) { - String unresolvedText = ElementManipulators.getValueText(psiElement); - for (DomReferenceInjector each : injectors) { - Collections.addAll(result, each.inject(unresolvedText, psiElement, context)); - } + ConvertContext context = ConvertContextFactory.createConvertContext(domValue); + final List injectors = description.getReferenceInjectors(); + if (!injectors.isEmpty()) { + String unresolvedText = ElementManipulators.getValueText(psiElement); + for (DomReferenceInjector each : injectors) { + Collections.addAll(result, each.inject(unresolvedText, psiElement, context)); } } - Collections.addAll(result, doCreateReferences(domValue, psiElement, converter, context)); + Collections.addAll(result, doCreateReferences(domValue, psiElement, converter, context, handler)); return result.toArray(new PsiReference[result.size()]); } @NotNull - private PsiReference[] doCreateReferences(GenericDomValue domValue, XmlElement psiElement, Object converter, ConvertContext context) { + private PsiReference[] doCreateReferences(GenericDomValue domValue, XmlElement psiElement, Object converter, ConvertContext context, DomInvocationHandler invocationHandler) { if (converter instanceof CustomReferenceConverter) { final PsiReference[] references = ((CustomReferenceConverter)converter).createReferences(domValue, psiElement, context); @@ -148,8 +139,6 @@ public class GenericValueReferenceProvider extends PsiReferenceProvider { return new PsiReference[]{new GenericDomValueReference(domValue)}; } - final DomInvocationHandler invocationHandler = getInvocationHandler(domValue); - assert invocationHandler != null; final Class clazz = DomUtil.getGenericValueParameter(invocationHandler.getDomElementType()); if (clazz == null) return PsiReference.EMPTY_ARRAY;