/* * Compare two lists, basing on equals() and hashCode() of it's elements */ @NotNull public static <T> FairDiffIterable diff( @NotNull List<T> objects1, @NotNull List<T> objects2, @NotNull ProgressIndicator indicator) { indicator.checkCanceled(); // TODO: compare lists instead of arrays in Diff Object[] data1 = ContainerUtil.toArray((List) objects1, new Object[objects1.size()]); Object[] data2 = ContainerUtil.toArray((List) objects2, new Object[objects2.size()]); return diff(data1, data2, indicator); }
private GroovyResolveResult[] resolveTypeOrProperty() { if (isDefinitelyKeyOfMap()) return GroovyResolveResult.EMPTY_ARRAY; final GroovyResolveResult[] results = resolveTypeOrPropertyInner(); if (results.length == 0) return GroovyResolveResult.EMPTY_ARRAY; if (!ResolveUtil.mayBeKeyOfMap(this)) return results; // filter out all members from super classes. We should return only accessible members from map // classes List<GroovyResolveResult> filtered = new ArrayList<GroovyResolveResult>(); for (GroovyResolveResult result : results) { final PsiElement element = result.getElement(); if (element instanceof PsiMember) { if (((PsiMember) element).hasModifierProperty(PsiModifier.PRIVATE)) continue; final PsiClass containingClass = ((PsiMember) element).getContainingClass(); if (containingClass != null) { if (!InheritanceUtil.isInheritor(containingClass, CommonClassNames.JAVA_UTIL_MAP)) continue; final String name = containingClass.getQualifiedName(); if (name != null && name.startsWith("java.")) continue; if (containingClass.getLanguage() != GroovyFileType.GROOVY_LANGUAGE && !InheritanceUtil.isInheritor( containingClass, GroovyCommonClassNames.DEFAULT_BASE_CLASS_NAME)) { continue; } } } filtered.add(result); } return ContainerUtil.toArray(filtered, new GroovyResolveResult[filtered.size()]); }
@NotNull private XmlAttribute[] calculateAttributes(final Map<String, String> attributesValueMap) { final List<XmlAttribute> result = new ArrayList<XmlAttribute>(10); processChildren( new PsiElementProcessor() { public boolean execute(@NotNull PsiElement element) { if (element instanceof XmlAttribute) { XmlAttribute attribute = (XmlAttribute) element; result.add(attribute); cacheOneAttributeValue(attribute.getName(), attribute.getValue(), attributesValueMap); myHaveNamespaceDeclarations = myHaveNamespaceDeclarations || attribute.isNamespaceDeclaration(); } else if (element instanceof XmlToken && ((XmlToken) element).getTokenType() == XmlTokenType.XML_TAG_END) { return false; } return true; } }); if (result.isEmpty()) { return XmlAttribute.EMPTY_ARRAY; } else { return ContainerUtil.toArray(result, new XmlAttribute[result.size()]); } }
@NotNull public PsiReference[] getReferences() { ProgressManager.checkCanceled(); final ASTNode startTagName = XmlChildRole.START_TAG_NAME_FINDER.findChild(this); if (startTagName == null) return PsiReference.EMPTY_ARRAY; final ASTNode endTagName = XmlChildRole.CLOSING_TAG_NAME_FINDER.findChild(this); List<PsiReference> refs = new ArrayList<PsiReference>(); String prefix = getNamespacePrefix(); TagNameReference startTagRef = TagNameReference.createTagNameReference(this, startTagName, true); refs.add(startTagRef); if (prefix.length() > 0) { refs.add(createPrefixReference(startTagName, prefix, startTagRef)); } if (endTagName != null) { TagNameReference endTagRef = TagNameReference.createTagNameReference(this, endTagName, false); refs.add(endTagRef); prefix = XmlUtil.findPrefixByQualifiedName(endTagName.getText()); if (StringUtil.isNotEmpty(prefix)) { refs.add(createPrefixReference(endTagName, prefix, endTagRef)); } } // ArrayList.addAll() makes a clone of the collection //noinspection ManualArrayToCollectionCopy for (PsiReference ref : ReferenceProvidersRegistry.getReferencesFromProviders(this, XmlTag.class)) { refs.add(ref); } return ContainerUtil.toArray(refs, new PsiReference[refs.size()]); }
private PsiElement[] getElements() { final List<PsiElement> elements = new ArrayList<PsiElement>(); processElements( new PsiElementProcessor() { public boolean execute(@NotNull PsiElement psiElement) { elements.add(psiElement); return true; } }, this); return ContainerUtil.toArray(elements, new PsiElement[elements.size()]); }
@NotNull public XmlTag[] findSubTags(final String name, final String namespace) { final XmlTag[] subTags = getSubTags(); final List<XmlTag> result = new ArrayList<XmlTag>(); for (final XmlTag subTag : subTags) { if (namespace == null) { if (name.equals(subTag.getName())) result.add(subTag); } else if (name.equals(subTag.getLocalName()) && namespace.equals(subTag.getNamespace())) { result.add(subTag); } } return ContainerUtil.toArray(result, new XmlTag[result.size()]); }
@Nullable private Navigatable[] getNavigatableArray() { Project project = myModel.getProject(); List<DirDiffElementImpl> elements = myModel.getSelectedElements(); List<Navigatable> navigatables = new ArrayList<>(); for (DirDiffElementImpl element : elements) { DiffElement source = element.getSource(); DiffElement target = element.getTarget(); Navigatable navigatable1 = source != null ? source.getNavigatable(project) : null; Navigatable navigatable2 = target != null ? target.getNavigatable(project) : null; if (navigatable1 != null) navigatables.add(navigatable1); if (navigatable2 != null) navigatables.add(navigatable2); } return ContainerUtil.toArray(navigatables, new Navigatable[navigatables.size()]); }
@NotNull @Override public Module[] getModules(@NotNull final ProjectData projectData) { final List<Module> modules = ContainerUtil.filter( getModules(), new Condition<Module>() { @Override public boolean value(Module module) { return isExternalSystemAwareModule(projectData.getOwner(), module) && StringUtil.equals( projectData.getLinkedExternalProjectPath(), getExternalRootProjectPath(module)); } }); return ContainerUtil.toArray(modules, new Module[modules.size()]); }
@NotNull public Object[] getVariants() { final AntDomMacroDef parentMacrodef = getParentMacrodef(); if (parentMacrodef != null) { final List variants = new ArrayList(); for (AntDomMacrodefAttribute attribute : parentMacrodef.getMacroAttributes()) { final String attribName = attribute.getName().getStringValue(); if (attribName != null && attribName.length() > 0) { final LookupElementBuilder builder = LookupElementBuilder.create(attribName); final LookupElement element = AutoCompletionPolicy.GIVE_CHANCE_TO_OVERWRITE.applyPolicy(builder); variants.add(element); } } return ContainerUtil.toArray(variants, new Object[variants.size()]); } return EMPTY_ARRAY; }
@NotNull @Override public ResolveResult[] resolve( @NotNull CSharpReferenceExpressionImpl ref, boolean incompleteCode, boolean resolveFromParent) { if (!incompleteCode) { return ref.multiResolveImpl(ref.kind(), resolveFromParent); } else { ResolveResult[] resolveResults = ref.multiResolve(false, resolveFromParent); List<ResolveResult> filter = new SmartList<ResolveResult>(); for (ResolveResult resolveResult : resolveResults) { if (resolveResult.isValidResult()) { filter.add(resolveResult); } } return ContainerUtil.toArray(filter, ResolveResult.EMPTY_ARRAY); } }
@NotNull public XmlTagValue getValue() { XmlTagValue tagValue = myValue; if (tagValue == null) { final PsiElement[] elements = getElements(); final List<XmlTagChild> bodyElements = new ArrayList<XmlTagChild>(elements.length); boolean insideBody = false; for (final PsiElement element : elements) { final ASTNode treeElement = element.getNode(); if (insideBody) { if (treeElement.getElementType() == XmlTokenType.XML_END_TAG_START) break; if (!(element instanceof XmlTagChild)) continue; bodyElements.add((XmlTagChild) element); } else if (treeElement.getElementType() == XmlTokenType.XML_TAG_END) insideBody = true; } XmlTagChild[] tagChildren = ContainerUtil.toArray(bodyElements, new XmlTagChild[bodyElements.size()]); myValue = tagValue = new XmlTagValueImpl(tagChildren, this); } return tagValue; }
public PsiField[] getResult() { return ContainerUtil.toArray(result, new PsiField[result.size()]); }