public boolean execute()

in tapestry/src/main/java/com/intellij/tapestry/psi/TelVariantsProcessor.java [56:112]


  public boolean execute(@NotNull final PsiElement element, @NotNull final ResolveState state) {
    if (!(element instanceof PsiNamedElement)) return true;

    final PsiNamedElement namedElement = (PsiNamedElement)element;
    if (StringUtil.isEmpty(namedElement.getName())) return true;

    if (namedElement instanceof PsiClass) {
      return true;
    }

    final boolean isMethod = namedElement instanceof PsiMethod;
    final boolean isField = namedElement instanceof PsiField;
    if (isMethod) {
      final PsiMethod method = (PsiMethod)namedElement;
      if (!method.hasModifierProperty(PUBLIC) ||
          method.isConstructor() ||
          !myAllowStatic && method.hasModifierProperty(STATIC) ||
          INSECURE_OBJECT_METHODS.contains(method.getName())) {
        return true;
      }
      if (!myMethodCall &&
          myPropertyAccessors != null &&
          PropertyUtilBase.isSimplePropertyGetter(method) &&
          (myReferenceName == null || myReferenceName.equalsIgnoreCase(PropertyUtilBase.getPropertyName(method)))) {
        myPropertyAccessors.addMethod(method, state.get(PsiSubstitutor.KEY), false);
      }
      if (myForCompletion || myMethodCall && myReferenceName.equalsIgnoreCase(namedElement.getName())) {
        if (myMethods != null) myMethods.addMethod((PsiMethod)namedElement, state.get(PsiSubstitutor.KEY), false);
      }
    }
    else if (isField) {
      final PsiField field = (PsiField)namedElement;
      final PsiModifierList modifierList = field.getModifierList();
      if (!field.hasModifierProperty(PRIVATE) || modifierList == null || field.hasModifierProperty(STATIC)) return true;
      String propertyAnnotation = null;
      for (PsiAnnotation psiAnnotation : modifierList.getAnnotations()) {
        if (TapestryConstants.PROPERTY_ANNOTATION.equals(psiAnnotation.getQualifiedName())) {
          propertyAnnotation = psiAnnotation.getQualifiedName();
        }
      }
      if (propertyAnnotation == null) return true;
      if (myForCompletion || !myMethodCall && myReferenceName.equalsIgnoreCase(namedElement.getName())) {
        addIfNotNull(myResult, createResult(namedElement, true));
      }
      final String getterName = PropertyUtilBase.suggestGetterName(field);
      if (myForCompletion || myMethodCall && myReferenceName.equalsIgnoreCase(getterName)) {
        myMethods.addMethod(new TapestryAccessorMethod(field, true, getterName), state.get(PsiSubstitutor.KEY), false);
        //addIfNotNull(createResult(new PropertyAccessorElement(field, getterName, true), true), myResult);
      }
      final String setterName = PropertyUtilBase.suggestSetterName(field);
      if (!field.hasModifierProperty(FINAL) && (myForCompletion || myMethodCall && myReferenceName.equalsIgnoreCase(setterName))) {
        myMethods.addMethod(new TapestryAccessorMethod(field, false, setterName), state.get(PsiSubstitutor.KEY), false);
        //addIfNotNull(createResult(new PropertyAccessorElement(field, setterName, false), true), myResult);
      }
    }
    return myForCompletion || myResult.size() != 1;
  }