/*
   * 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()]);
  }
示例#3
0
 @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()]);
   }
 }
示例#4
0
  @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()]);
  }
示例#5
0
 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()]);
 }
示例#6
0
 @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);
      }
    }
示例#11
0
  @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()]);
 }