Java 类com.intellij.psi.PsiAnnotationParameterList 实例源码

项目:lombok-intellij-plugin    文件:OnXAnnotationHandler.java   
public static boolean isOnXParameterAnnotation(HighlightInfo highlightInfo, PsiFile file) {
  if (!(ANNOTATION_TYPE_EXPECTED.equals(highlightInfo.getDescription())
    || CANNOT_RESOLVE_UNDERSCORES_MESSAGE.matcher(StringUtil.notNullize(highlightInfo.getDescription())).matches())) {
    return false;
  }

  PsiElement highlightedElement = file.findElementAt(highlightInfo.getStartOffset());

  PsiNameValuePair nameValuePair = findContainingNameValuePair(highlightedElement);
  if (nameValuePair == null || !(nameValuePair.getContext() instanceof PsiAnnotationParameterList)) {
    return false;
  }

  String parameterName = nameValuePair.getName();
  if (!ONX_PARAMETERS.contains(parameterName)) {
    return false;
  }

  PsiElement containingAnnotation = nameValuePair.getContext().getContext();
  return containingAnnotation instanceof PsiAnnotation && ONXABLE_ANNOTATIONS.contains(((PsiAnnotation) containingAnnotation).getQualifiedName());
}
项目:lombok-intellij-plugin    文件:BaseLombokHandler.java   
protected void removeDefaultAnnotation(@NotNull PsiModifierListOwner targetElement, @NotNull Class<? extends Annotation> annotationClass) {
  final PsiAnnotation psiAnnotation = PsiAnnotationSearchUtil.findAnnotation(targetElement, annotationClass);
  if (null != psiAnnotation) {
    boolean hasOnlyDefaultValues = true;

    final PsiAnnotationParameterList psiAnnotationParameterList = psiAnnotation.getParameterList();
    for (PsiNameValuePair nameValuePair : psiAnnotationParameterList.getAttributes()) {
      if (null != psiAnnotation.findDeclaredAttributeValue(nameValuePair.getName())) {
        hasOnlyDefaultValues = false;
        break;
      }
    }

    if (hasOnlyDefaultValues) {
      psiAnnotation.delete();
    }
  }
}
项目:errai-intellij-idea-plugin    文件:Util.java   
public static AnnotationValueElement getValueStringFromAnnotationWithDefault(PsiAnnotation annotation) {
  final PsiAnnotationParameterList parameterList = annotation.getParameterList();
  final PsiNameValuePair[] attributes = parameterList.getAttributes();
  final PsiElement logicalElement = getImmediateOwnerElement(annotation);

  if (logicalElement == null) {
    return null;
  }

  final String value;
  final PsiElement errorElement;

  if (attributes.length == 0) {
    value = getNameOfElement(logicalElement);
    errorElement = annotation;
  }
  else {
    final String text = attributes[0].getText();
    value = text.substring(1, text.length() - 1);
    errorElement = attributes[0];
  }

  return new AnnotationValueElement(value, errorElement);
}
项目:lombok-intellij-plugin    文件:OnXAnnotationHandler.java   
public static boolean isOnXParameterValue(HighlightInfo highlightInfo, PsiFile file) {
  if (!CANNOT_FIND_METHOD_VALUE_MESSAGE.equals(highlightInfo.getDescription())) {
    return false;
  }

  PsiElement highlightedElement = file.findElementAt(highlightInfo.getStartOffset());
  PsiNameValuePair nameValuePair = findContainingNameValuePair(highlightedElement);
  if (nameValuePair == null || !(nameValuePair.getContext() instanceof PsiAnnotationParameterList)) {
    return false;
  }

  PsiElement leftSibling = nameValuePair.getContext().getPrevSibling();
  return (leftSibling != null && UNDERSCORES.matcher(StringUtil.notNullize(leftSibling.getText())).matches());
}
项目:lombok-intellij-plugin    文件:LombokProcessorUtil.java   
@NotNull
public static Collection<String> getOnX(@NotNull PsiAnnotation psiAnnotation, @NotNull String parameterName) {
  PsiAnnotationMemberValue onXValue = psiAnnotation.findAttributeValue(parameterName);
  if (!(onXValue instanceof PsiAnnotation)) {
    return Collections.emptyList();
  }
  Collection<PsiAnnotation> annotations = PsiAnnotationUtil.getAnnotationValues((PsiAnnotation) onXValue, "value", PsiAnnotation.class);
  Collection<String> annotationStrings = new ArrayList<String>();
  for (PsiAnnotation annotation : annotations) {
    PsiAnnotationParameterList params = annotation.getParameterList();
    annotationStrings.add(PsiAnnotationSearchUtil.getSimpleNameOf(annotation) + params.getText());
  }
  return annotationStrings;
}
项目:consulo-google-guice    文件:AnnotationUtils.java   
public static PsiElement findDefaultValue(PsiAnnotation annotation){
    final PsiAnnotationParameterList parameters = annotation.getParameterList();
    final PsiNameValuePair[] pairs = parameters.getAttributes();
    for(PsiNameValuePair pair : pairs){
        final String name = pair.getName();
        if("value".equals(name) || name == null){
            return pair.getValue();
        }
    }
    return null;
}
项目:consulo-java    文件:ClsAnnotationImpl.java   
public ClsAnnotationImpl(final PsiAnnotationStub stub)
{
    super(stub);
    myReferenceElement = new AtomicNotNullLazyValue<ClsJavaCodeReferenceElementImpl>()
    {
        @NotNull
        @Override
        protected ClsJavaCodeReferenceElementImpl compute()
        {
            String annotationText = getStub().getText();
            int index = annotationText.indexOf('(');
            String refText = index > 0 ? annotationText.substring(1, index) : annotationText.substring(1);
            return new ClsJavaCodeReferenceElementImpl(ClsAnnotationImpl.this, refText);
        }
    };
    myParameterList = new AtomicNotNullLazyValue<ClsAnnotationParameterListImpl>()
    {
        @NotNull
        @Override
        protected ClsAnnotationParameterListImpl compute()
        {
            PsiNameValuePair[] attrs = getStub().getText().indexOf('(') > 0 ? PsiTreeUtil.getRequiredChildOfType(getStub().getPsiElement(), PsiAnnotationParameterList.class).getAttributes() :
                    PsiNameValuePair.EMPTY_ARRAY;
            return new ClsAnnotationParameterListImpl(ClsAnnotationImpl.this, attrs);
        }
    };
}
项目:consulo-java    文件:JavaMoveLeftRightHandler.java   
@RequiredReadAction
@NotNull
@Override
public PsiElement[] getMovableSubElements(@NotNull PsiElement element)
{
    if(element instanceof PsiParameterList)
    {
        return ((PsiParameterList) element).getParameters();
    }
    else if(element instanceof PsiExpressionList)
    {
        return ((PsiExpressionList) element).getExpressions();
    }
    else if(element instanceof PsiAnnotationParameterList)
    {
        return ((PsiAnnotationParameterList) element).getAttributes();
    }
    else if(element instanceof PsiArrayInitializerExpression)
    {
        return ((PsiArrayInitializerExpression) element).getInitializers();
    }
    else if(element instanceof PsiClass && ((PsiClass) element).isEnum())
    {
        PsiEnumConstant[] enumConstants = PsiTreeUtil.getChildrenOfType(element, PsiEnumConstant.class);
        if(enumConstants != null)
        {
            return enumConstants;
        }
    }
    return PsiElement.EMPTY_ARRAY;
}
项目:Android_Lint_SRP_Practice_Example    文件:PsiClassStructureDetector.java   
@Override
public void visitAnnotationParameterList(PsiAnnotationParameterList list) {
    mVisitor.report("PsiAnnotationParameterList", list.getText(), list);
    super.visitElement(list);
}
项目:intellij-ce-playground    文件:JavaAnnotationParameterListType.java   
@Override
public PsiAnnotationParameterList createPsi(@NotNull ASTNode node) {
  return new PsiAnnotationParamListImpl(node);
}
项目:intellij-ce-playground    文件:JavaAnnotationParameterListType.java   
@Override
public PsiAnnotationParameterList createPsi(@NotNull PsiAnnotationParameterListStub stub) {
  return getPsiFactory(stub).createAnnotationParameterList(stub);
}
项目:google-cloud-intellij    文件:ApiNameInspection.java   
@NotNull
@Override
public PsiElementVisitor buildVisitor(
    @NotNull final com.intellij.codeInspection.ProblemsHolder holder, boolean isOnTheFly) {
  return new EndpointPsiElementVisitor() {

    @Override
    public void visitAnnotation(PsiAnnotation annotation) {
      if (annotation == null) {
        return;
      }

      if (!GctConstants.APP_ENGINE_ANNOTATION_API.equals(annotation.getQualifiedName())) {
        return;
      }

      // Need to check for user added attributes because default values are used when not
      // specified by user and we are only interested in the user specified values
      PsiAnnotationParameterList parameterList = annotation.getParameterList();
      if (parameterList.getAttributes().length == 0) {
        return;
      }

      PsiAnnotationMemberValue annotationMemberValue =
          annotation.findAttributeValue(API_NAME_ATTRIBUTE);
      if (annotationMemberValue == null) {
        return;
      }

      String nameValueWithQuotes = annotationMemberValue.getText();
      String nameValue = EndpointUtilities.removeBeginningAndEndingQuotes(nameValueWithQuotes);

      // Empty API name is valid
      if (nameValue.isEmpty()) {
        return;
      }

      if (!API_NAME_PATTERN.matcher(nameValue).matches()) {
        holder.registerProblem(
            annotationMemberValue,
            "Invalid api name: it must start with a lower case letter and consists only of "
                + "letter and digits",
            new MyQuickFix());
      }
    }
  };
}
项目:tools-idea    文件:JavaAnnotationParameterListType.java   
@Override
public PsiAnnotationParameterList createPsi(@NotNull ASTNode node) {
  return new PsiAnnotationParamListImpl(node);
}
项目:tools-idea    文件:JavaAnnotationParameterListType.java   
@Override
public PsiAnnotationParameterList createPsi(@NotNull PsiAnnotationParameterListStub stub) {
  return getPsiFactory(stub).createAnnotationParameterList(stub);
}
项目:consulo-java    文件:JavaAnnotationParameterListType.java   
@Override
public PsiAnnotationParameterList createPsi(@NotNull ASTNode node) {
  return new PsiAnnotationParamListImpl(node);
}
项目:consulo-java    文件:JavaAnnotationParameterListType.java   
@Override
public PsiAnnotationParameterList createPsi(@NotNull PsiAnnotationParameterListStub stub) {
  return getPsiFactory(stub).createAnnotationParameterList(stub);
}
项目:consulo-java    文件:ClsAnnotationImpl.java   
@Override
@NotNull
public PsiAnnotationParameterList getParameterList()
{
    return myParameterList.getValue();
}
项目:consulo-java    文件:ClsAnnotationValueImpl.java   
@Override
@NotNull
public PsiAnnotationParameterList getParameterList()
{
    return myParameterList;
}