javax.lang.model.element.ExecutableElement#getEnclosingElement ( )源码实例Demo

下面列出了javax.lang.model.element.ExecutableElement#getEnclosingElement ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: buck   文件: ElementsExtendedImpl.java
@Override
@Nullable
public ExecutableElement getImplementation(ExecutableElement baseMethod, TypeElement inType) {
  ExecutableElement result = null;
  for (ExecutableElement candidate : getAllMethods(inType, baseMethod.getSimpleName())) {
    Element enclosingElement = candidate.getEnclosingElement();
    if (enclosingElement != inType && enclosingElement.getKind().isInterface()) {
      continue;
    }

    if (overrides(candidate, baseMethod, inType) || (result == null && candidate == baseMethod)) {
      result = candidate;
    }
  }
  return result;
}
 
源代码2 项目: vertx-codetrans   文件: ConvertingProcessor.java
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
  for (Element annotatedElt : roundEnv.getElementsAnnotatedWith(CodeTranslate.class)) {
    ExecutableElement methodElt = (ExecutableElement) annotatedElt;
    TypeElement typeElt = (TypeElement) methodElt.getEnclosingElement();
    if (typeElt.getQualifiedName().toString().equals(fqn) && methodElt.getSimpleName().toString().equals(method)) {
      for (Lang lang : langs) {
        Result result;
        try {
          String translation = translator.translate(methodElt, false, lang, RenderMode.SNIPPET);
          result = new Result.Source(translation);
        } catch (Exception e) {
          result = new Result.Failure(e);
        }
        results.put(lang, result);
      }
    }
  }
  return false;
}
 
源代码3 项目: netbeans   文件: InvalidWebMethodAnnotation.java
protected ErrorDescription[] apply(ExecutableElement subject, ProblemContext ctx) {
    AnnotationMirror methodAnn = Utilities.findAnnotation(subject, ANNOTATION_WEBMETHOD);

    Element classEl = subject.getEnclosingElement();
    if (classEl != null) {
        AnnotationMirror serviceAnn = Utilities.findAnnotation(classEl, ANNOTATION_WEBSERVICE);
        if (serviceAnn != null) {
            AnnotationValue val = Utilities.getAnnotationAttrValue
                    (serviceAnn, ANNOTATION_ATTRIBUTE_SEI);
            if (val != null) {
                String label = NbBundle.getMessage(InvalidWebMethodAnnotation.class,
                        "MSG_WebMethod_NotAllowed");
                Fix fix = new RemoveAnnotation(ctx.getFileObject(),
                        subject, methodAnn);
                Tree problemTree = ctx.getCompilationInfo().getTrees().getTree(subject, methodAnn);
                ctx.setElementToAnnotate(problemTree);
                ErrorDescription problem = createProblem(subject, ctx, label, fix);
                ctx.setElementToAnnotate(null);
                return new ErrorDescription[]{problem};
            }
        }
    }
    return null;
}
 
源代码4 项目: toothpick   文件: MemberInjectorProcessor.java
private void processInjectAnnotatedMethod(
    ExecutableElement methodElement,
    Map<TypeElement, List<MethodInjectionTarget>> mapTypeElementToMemberInjectorTargetList) {
  TypeElement enclosingElement = (TypeElement) methodElement.getEnclosingElement();

  // Verify common generated code restrictions.
  if (!isValidInjectAnnotatedMethod(methodElement)) {
    return;
  }

  List<MethodInjectionTarget> methodInjectionTargetList =
      mapTypeElementToMemberInjectorTargetList.get(enclosingElement);
  if (methodInjectionTargetList == null) {
    methodInjectionTargetList = new ArrayList<>();
    mapTypeElementToMemberInjectorTargetList.put(enclosingElement, methodInjectionTargetList);
  }

  mapTypeToMostDirectSuperTypeThatNeedsInjection(enclosingElement);
  methodInjectionTargetList.add(createMethodInjectionTarget(methodElement));
}
 
源代码5 项目: sqlitemagic   文件: TransformerElement.java
public void addDbValueToObjectMethod(ExecutableElement method) {
  final TypeElement enclosingElement = (TypeElement) method.getEnclosingElement();

  this.dbValueToObjectMethod = method;
  this.deserializedTypeTransformerElement = enclosingElement;
  this.deserializedTypeTransformerClassName = ClassName.get(enclosingElement);

  if (!hasObjectToDb) {
    final VariableElement firstParam = method.getParameters().get(0);
    rawSerializedType = firstParam.asType();
    serializedType = environment.getSupportedSerializedTypeElement(rawSerializedType);
    rawDeserializedType = method.getReturnType();
    deserializedType = environment.getAnyTypeElement(rawDeserializedType);
  }

  hasDbToObject = true;
}
 
源代码6 项目: sqlitemagic   文件: TransformerElement.java
public void addObjectToDbValueMethod(ExecutableElement method) {
  final TypeElement enclosingElement = (TypeElement) method.getEnclosingElement();

  this.objectToDbValueMethod = method;
  this.serializedTypeTransformerElement = enclosingElement;
  this.serializedTypeTransformerClassName = ClassName.get(enclosingElement);

  if (!hasDbToObject) {
    final VariableElement firstParam = method.getParameters().get(0);
    rawDeserializedType = firstParam.asType();
    deserializedType = environment.getAnyTypeElement(rawDeserializedType);
    rawSerializedType = method.getReturnType();
    serializedType = environment.getSupportedSerializedTypeElement(rawSerializedType);
  }

  hasObjectToDb = true;
}
 
源代码7 项目: auto   文件: AutoValueOrOneOfProcessor.java
private void warnAboutPrimitiveArrays(TypeElement autoValueClass, ExecutableElement getter) {
  boolean suppressed = false;
  Optional<AnnotationMirror> maybeAnnotation =
      getAnnotationMirror(getter, "java.lang.SuppressWarnings");
  if (maybeAnnotation.isPresent()) {
    AnnotationValue listValue = getAnnotationValue(maybeAnnotation.get(), "value");
    suppressed = listValue.accept(new ContainsMutableVisitor(), null);
  }
  if (!suppressed) {
    // If the primitive-array property method is defined directly inside the @AutoValue class,
    // then our error message should point directly to it. But if it is inherited, we don't
    // want to try to make the error message point to the inherited definition, since that would
    // be confusing (there is nothing wrong with the definition itself), and won't work if the
    // inherited class is not being recompiled. Instead, in this case we point to the @AutoValue
    // class itself, and we include extra text in the error message that shows the full name of
    // the inherited method.
    boolean sameClass = getter.getEnclosingElement().equals(autoValueClass);
    Element element = sameClass ? getter : autoValueClass;
    String context = sameClass ? "" : (" Method: " + getter.getEnclosingElement() + "." + getter);
    errorReporter.reportWarning(
        element,
        "An @%s property that is a primitive array returns the original array, which can"
            + " therefore be modified by the caller. If this is OK, you can suppress this warning"
            + " with @SuppressWarnings(\"mutable\"). Otherwise, you should replace the property"
            + " with an immutable type, perhaps a simple wrapper around the original array.%s",
        simpleAnnotationName,
        context);
  }
}
 
源代码8 项目: j2objc   文件: GeneratedExecutableElement.java
public static GeneratedExecutableElement newMappedMethod(
    String selector, ExecutableElement method) {
  TypeMirror returnType = ElementUtil.isConstructor(method)
      ? ElementUtil.getDeclaringClass(method).asType() : method.getReturnType();
  return new GeneratedExecutableElement(
      selector, selector, ElementKind.METHOD, returnType, method.getEnclosingElement(),
      method.isVarArgs(), ElementUtil.isSynthetic(method));
}
 
源代码9 项目: netbeans   文件: JpaControllerUtil.java
/**
 * TODO: actually it's guess setter from setter, need to review if it's a problem of expected
 * @param setter
 * @return 
 */
public static VariableElement guessGetter(ExecutableElement setter) {
    String name = setter.getSimpleName().toString().substring(3);
    String guessGetterName = "set" + name;
    TypeElement typeElement = (TypeElement) setter.getEnclosingElement();
    for (VariableElement variableElement : ElementFilter.fieldsIn(typeElement.getEnclosedElements())) {
        if (variableElement.getSimpleName().contentEquals(guessGetterName)) {
            return variableElement;
        }
    }
    Logger.getLogger(JpaControllerUtil.class.getName()).log(Level.INFO, "Cannot detect setter associated with getter: {0}", guessGetterName);
    return null;
}
 
源代码10 项目: openjdk-jdk9   文件: PropertyWriterImpl.java
/**
 * {@inheritDoc}
 */
@Override
public void addComments(ExecutableElement property, Content propertyDocTree) {
    TypeElement holder = (TypeElement)property.getEnclosingElement();
    if (!utils.getFullBody(property).isEmpty()) {
        if (holder.equals(typeElement) ||
                (!utils.isPublic(holder) || utils.isLinkable(holder))) {
            writer.addInlineComment(property, propertyDocTree);
        } else {
            Content link =
                    writer.getDocLink(LinkInfoImpl.Kind.PROPERTY_COPY,
                    holder, property,
                    utils.isIncluded(holder)
                            ? holder.getSimpleName() : holder.getQualifiedName(),
                        false);
            Content codeLink = HtmlTree.CODE(link);
            Content descfrmLabel = HtmlTree.SPAN(HtmlStyle.descfrmTypeLabel,
                    utils.isClass(holder)
                            ? contents.descfrmClassLabel
                            : contents.descfrmInterfaceLabel);
            descfrmLabel.addContent(Contents.SPACE);
            descfrmLabel.addContent(codeLink);
            propertyDocTree.addContent(HtmlTree.DIV(HtmlStyle.block, descfrmLabel));
            writer.addInlineComment(property, propertyDocTree);
        }
    }
}
 
源代码11 项目: toothpick   文件: FactoryProcessor.java
private boolean isValidInjectAnnotatedConstructor(ExecutableElement element) {
  TypeElement enclosingElement = (TypeElement) element.getEnclosingElement();

  // Verify modifiers.
  Set<Modifier> modifiers = element.getModifiers();
  if (modifiers.contains(PRIVATE)) {
    error(
        element,
        "@Inject constructors must not be private in class %s.",
        enclosingElement.getQualifiedName());
    return false;
  }

  // Verify parentScope modifiers.
  Set<Modifier> parentModifiers = enclosingElement.getModifiers();
  if (parentModifiers.contains(PRIVATE)) {
    error(
        element,
        "Class %s is private. @Inject constructors are not allowed in private classes.",
        enclosingElement.getQualifiedName());
    return false;
  }

  if (isNonStaticInnerClass(enclosingElement)) {
    return false;
  }

  for (VariableElement paramElement : element.getParameters()) {
    if (!isValidInjectedType(paramElement)) {
      return false;
    }
  }

  return true;
}
 
源代码12 项目: syndesis   文件: ActionProcessor.java
/**
 * Explicitly add properties that elude reflection implicit strategy
 */
@SuppressWarnings({"PMD.CyclomaticComplexity", "PMD.NPathComplexity"})
private void augmentProperties(ObjectNode root, ExecutableElement element) {
    final TypeElement typedElement = (TypeElement) element.getEnclosingElement();

    if (beanAnnotationClass != null && element.getAnnotation(beanAnnotationClass) != null) {
        root.put("kind", "ENDPOINT");
    } else {
        root.put("kind", "BEAN");
        root.put("entrypoint", typedElement.getQualifiedName().toString() + "::" + element.getSimpleName());
    }
}
 
源代码13 项目: immutables   文件: AccessorAttributesCollector.java
private void processUtilityCandidateMethod(ExecutableElement utilityMethodCandidate, TypeElement originalType) {
  Name name = utilityMethodCandidate.getSimpleName();
  List<? extends VariableElement> parameters = utilityMethodCandidate.getParameters();

  TypeElement definingType = (TypeElement) utilityMethodCandidate.getEnclosingElement();
  boolean nonFinal = !utilityMethodCandidate.getModifiers().contains(Modifier.FINAL);
  boolean nonAbstract = !utilityMethodCandidate.getModifiers().contains(Modifier.ABSTRACT);

  if (isJavaLangObjectType(definingType)) {
    // We ignore methods of java.lang.Object
    return;
  }

  if (name.contentEquals(EQUALS_METHOD)
      && parameters.size() == 1
      && isJavaLangObjectType(parameters.get(0).asType())) {

    if (nonAbstract) {
      type.isEqualToDefined = true;
      type.isEqualToFinal = !nonFinal;

      if (!definingType.equals(originalType) && hasNonInheritedAttributes && nonFinal) {
        report(originalType)
            .warning(About.INCOMPAT,
                "Type inherits overriden 'equals' method but have some non-inherited attributes."
                + " Please override 'equals' with abstract method to have it generate. Otherwise override"
                + " with calling super implemtation to use custom implementation");
      }
    }
    return;
  }

  if (name.contentEquals(HASH_CODE_METHOD)
      && parameters.isEmpty()) {
    if (nonAbstract) {
      type.isHashCodeDefined = true;
      type.isHashCodeFinal = !nonFinal;

      // inherited non-abstract implementation
      if (!definingType.equals(originalType) && hasNonInheritedAttributes && nonFinal) {
        report(originalType)
            .warning(About.INCOMPAT,
                "Type inherits non-default 'hashCode' method but have some non-inherited attributes."
                + " Please override 'hashCode' with abstract method to have it generated. Otherwise override"
                + " with calling super implemtation to use custom implementation");
      }
    }
    return;
  }

  if (name.contentEquals(TO_STRING_METHOD)
      && parameters.isEmpty()) {
    if (nonAbstract) {
      type.isToStringDefined = true;

      // inherited non-abstract implementation
      if (!definingType.equals(originalType) && hasNonInheritedAttributes && nonFinal) {
        report(originalType)
            .warning(About.INCOMPAT,
                "Type inherits non-default 'toString' method but have some non-inherited attributes."
                + " Please override 'toString' with abstract method to have generate it. Otherwise override"
                + " with calling super implementation to use custom implementation");
      }
    }
    return;
  }
}
 
源代码14 项目: jdk8u60   文件: ApNavigator.java
public TypeElement getDeclaringClassForMethod(ExecutableElement m) {
    return (TypeElement) m.getEnclosingElement();
}
 
源代码15 项目: openjdk-jdk8u   文件: ApNavigator.java
public TypeElement getDeclaringClassForMethod(ExecutableElement m) {
    return (TypeElement) m.getEnclosingElement();
}
 
源代码16 项目: javapoet   文件: MethodSpec.java
/**
 * Returns a new method spec builder that overrides {@code method}.
 *
 * <p>This will copy its visibility modifiers, type parameters, return type, name, parameters, and
 * throws declarations. An {@link Override} annotation will be added.
 *
 * <p>Note that in JavaPoet 1.2 through 1.7 this method retained annotations from the method and
 * parameters of the overridden method. Since JavaPoet 1.8 annotations must be added separately.
 */
public static Builder overriding(ExecutableElement method) {
  checkNotNull(method, "method == null");

  Element enclosingClass = method.getEnclosingElement();
  if (enclosingClass.getModifiers().contains(Modifier.FINAL)) {
    throw new IllegalArgumentException("Cannot override method on final class " + enclosingClass);
  }

  Set<Modifier> modifiers = method.getModifiers();
  if (modifiers.contains(Modifier.PRIVATE)
      || modifiers.contains(Modifier.FINAL)
      || modifiers.contains(Modifier.STATIC)) {
    throw new IllegalArgumentException("cannot override method with modifiers: " + modifiers);
  }

  String methodName = method.getSimpleName().toString();
  MethodSpec.Builder methodBuilder = MethodSpec.methodBuilder(methodName);

  methodBuilder.addAnnotation(Override.class);

  modifiers = new LinkedHashSet<>(modifiers);
  modifiers.remove(Modifier.ABSTRACT);
  modifiers.remove(Modifier.DEFAULT);
  methodBuilder.addModifiers(modifiers);

  for (TypeParameterElement typeParameterElement : method.getTypeParameters()) {
    TypeVariable var = (TypeVariable) typeParameterElement.asType();
    methodBuilder.addTypeVariable(TypeVariableName.get(var));
  }

  methodBuilder.returns(TypeName.get(method.getReturnType()));
  methodBuilder.addParameters(ParameterSpec.parametersOf(method));
  methodBuilder.varargs(method.isVarArgs());

  for (TypeMirror thrownType : method.getThrownTypes()) {
    methodBuilder.addException(TypeName.get(thrownType));
  }

  return methodBuilder;
}
 
源代码17 项目: openjdk-jdk9   文件: ApNavigator.java
public TypeElement getDeclaringClassForMethod(ExecutableElement m) {
    return (TypeElement) m.getEnclosingElement();
}
 
源代码18 项目: openjdk-8-source   文件: ApNavigator.java
public TypeElement getDeclaringClassForMethod(ExecutableElement m) {
    return (TypeElement) m.getEnclosingElement();
}
 
源代码19 项目: openjdk-jdk8u-backup   文件: ApNavigator.java
public TypeElement getDeclaringClassForMethod(ExecutableElement m) {
    return (TypeElement) m.getEnclosingElement();
}
 
源代码20 项目: buck   文件: BridgeMethods.java
private void findBridgesToType(TypeElement supertype) {
  if (supertype == subclass) {
    return;
  }

  List<ExecutableElement> supertypeMethods =
      new ArrayList<>(ElementFilter.methodsIn(supertype.getEnclosedElements()));
  // For whatever reason, the members field in the compiler is reversed
  Collections.reverse(supertypeMethods);
  for (ExecutableElement supertypeMethod : supertypeMethods) {
    if (supertypeMethod.getModifiers().contains(Modifier.PRIVATE)
        || supertypeMethod.getModifiers().contains(Modifier.STATIC)
        || supertypeMethod.getModifiers().contains(Modifier.FINAL)
        || isHiddenInType(supertypeMethod, subclass)) {
      continue;
    }

    ExecutableElement languageResolvedMethod =
        elements.getImplementation(supertypeMethod, subclass);
    TypeElement vmResolvedMethodOwner =
        elements.getBinaryImplementationOwner(supertypeMethod, subclass);

    if (vmResolvedMethodOwner == null
        || vmResolvedMethodOwner == supertypeMethod.getEnclosingElement()
        || (languageResolvedMethod != null
            && !types.isSubtype(
                types.erasure(vmResolvedMethodOwner.asType()),
                types.erasure(languageResolvedMethod.getEnclosingElement().asType())))) {
      if (languageResolvedMethod != null
          && isBridgeNeeded(supertypeMethod, languageResolvedMethod, subclass)) {
        if (languageResolvedMethod.getEnclosingElement() != vmResolvedMethodOwner) {
          bridgesNeeded.add(new BridgeMethod(languageResolvedMethod, supertypeMethod));
        }
        // There's a comment in the compiler source about there being a design flaw in
        // Reflection
        // that requires bridge methods to be created if a public class inherits a public method
        // from a non-public supertype.
      } else if (languageResolvedMethod == supertypeMethod
          && languageResolvedMethod.getEnclosingElement() != subclass
          && !languageResolvedMethod.getModifiers().contains(Modifier.FINAL)
          && !supertypeMethod.getModifiers().contains(Modifier.ABSTRACT)
          && !supertypeMethod.getModifiers().contains(Modifier.DEFAULT)
          && supertypeMethod.getModifiers().contains(Modifier.PUBLIC)
          && subclass.getModifiers().contains(Modifier.PUBLIC)
          && !languageResolvedMethod
              .getEnclosingElement()
              .getModifiers()
              .contains(Modifier.PUBLIC)) {
        bridgesNeeded.add(new BridgeMethod(supertypeMethod, supertypeMethod));
      }
    }
  }
}