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

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

源代码1 项目: TencentKona-8   文件: PubapiVisitor.java
/**
 * Creates a String representation of a method element with everything
 * necessary to track all public aspects of it in an API.
 * @param e Element to create String for.
 * @return String representation of element.
 */
protected String makeMethodString(ExecutableElement e) {
    StringBuilder result = new StringBuilder();
    for (Modifier modifier : e.getModifiers()) {
        result.append(modifier.toString());
        result.append(" ");
    }
    result.append(e.getReturnType().toString());
    result.append(" ");
    result.append(e.toString());

    List<? extends TypeMirror> thrownTypes = e.getThrownTypes();
    if (!thrownTypes.isEmpty()) {
        result.append(" throws ");
        for (Iterator<? extends TypeMirror> iterator = thrownTypes
                .iterator(); iterator.hasNext();) {
            TypeMirror typeMirror = iterator.next();
            result.append(typeMirror.toString());
            if (iterator.hasNext()) {
                result.append(", ");
            }
        }
    }
    return result.toString();
}
 
源代码2 项目: netbeans   文件: AnnotationsAnalyzer.java
private void checkInitializerMethod( ExecutableElement element, 
        TypeElement parent, CdiAnalysisResult result )
{
    Set<Modifier> modifiers = element.getModifiers();
    boolean isAbstract = modifiers.contains( Modifier.ABSTRACT );
    boolean isStatic = modifiers.contains( Modifier.STATIC );
    if (  isAbstract || isStatic ){
        String key = isAbstract? "ERR_AbstractInitMethod":
            "ERR_StaticInitMethod";           // NOI18N
        result.addError( element, NbBundle.getMessage(
            AnnotationsAnalyzer.class, key ));
    }    
    TypeMirror method = result.getInfo().getTypes().asMemberOf(
            (DeclaredType)parent.asType() , element);
    if ( method instanceof ExecutableType ){
        List<? extends TypeVariable> typeVariables = 
            ((ExecutableType)method).getTypeVariables();
        if ( typeVariables != null && typeVariables.size() > 0 ){
            result.addError( element, NbBundle.getMessage(
                        AnnotationsAnalyzer.class, "ERR_GenericInitMethod" ));// NOI18N
        }
    }
}
 
源代码3 项目: doma   文件: DaoMetaFactory.java
private void doMethodElement(
    TypeElement interfaceElement, DaoMeta daoMeta, ExecutableElement methodElement) {
  Set<Modifier> modifiers = methodElement.getModifiers();
  if (modifiers.contains(Modifier.STATIC) || modifiers.contains(Modifier.PRIVATE)) {
    return;
  }
  validateMethod(interfaceElement, methodElement);
  QueryMeta queryMeta = createQueryMeta(daoMeta, methodElement);
  validateQueryMeta(queryMeta, methodElement);
  daoMeta.addQueryMeta(queryMeta);

  ParentDaoMeta parentDaoMeta = daoMeta.getParentDaoMeta();
  if (parentDaoMeta != null) {
    parentDaoMeta
        .getMethods()
        .removeIf(it -> ctx.getMoreElements().overrides(methodElement, it, interfaceElement));
  }
}
 
源代码4 项目: openjdk-8-source   文件: WebServiceVisitor.java
protected boolean shouldProcessMethod(ExecutableElement method, WebMethod webMethod) {
    builder.log("should process method: " + method.getSimpleName() + " hasWebMethods: " + hasWebMethods + " ");
    /*
    Fix for https://jax-ws.dev.java.net/issues/show_bug.cgi?id=577
    if (hasWebMethods && webMethod == null) {
        builder.log("webMethod == null");
        return false;
    }
    */
    Collection<Modifier> modifiers = method.getModifiers();
    boolean staticFinal = modifiers.contains(Modifier.STATIC) || modifiers.contains(Modifier.FINAL);
    if (staticFinal) {
        if (webMethod != null) {
            builder.processError(WebserviceapMessages.WEBSERVICEAP_WEBSERVICE_METHOD_IS_STATIC_OR_FINAL(method.getEnclosingElement(),
                    method), method);
        }
        return false;
    }
    boolean result = (endpointReferencesInterface ||
            method.getEnclosingElement().equals(typeElement) ||
            (method.getEnclosingElement().getAnnotation(WebService.class) != null));
    builder.log("endpointReferencesInterface: " + endpointReferencesInterface);
    builder.log("declaring class has WebService: " + (method.getEnclosingElement().getAnnotation(WebService.class) != null));
    builder.log("returning: " + result);
    return result;
}
 
源代码5 项目: openjdk-jdk8u-backup   文件: PubapiVisitor.java
/**
 * Creates a String representation of a method element with everything
 * necessary to track all public aspects of it in an API.
 * @param e Element to create String for.
 * @return String representation of element.
 */
protected String makeMethodString(ExecutableElement e) {
    StringBuilder result = new StringBuilder();
    for (Modifier modifier : e.getModifiers()) {
        result.append(modifier.toString());
        result.append(" ");
    }
    result.append(e.getReturnType().toString());
    result.append(" ");
    result.append(e.toString());

    List<? extends TypeMirror> thrownTypes = e.getThrownTypes();
    if (!thrownTypes.isEmpty()) {
        result.append(" throws ");
        for (Iterator<? extends TypeMirror> iterator = thrownTypes
                .iterator(); iterator.hasNext();) {
            TypeMirror typeMirror = iterator.next();
            result.append(typeMirror.toString());
            if (iterator.hasNext()) {
                result.append(", ");
            }
        }
    }
    return result.toString();
}
 
源代码6 项目: netbeans   文件: EntityClassInfo.java
private void setStringConverter( Element typeElement ) {
    List<ExecutableElement> methods = ElementFilter.methodsIn( 
            typeElement.getEnclosedElements());
    for (ExecutableElement method : methods) {
        Set<Modifier> modifiers = method.getModifiers();
        if ( !modifiers.contains(Modifier.STATIC) || 
                !modifiers.contains(Modifier.PUBLIC))
        {
            continue;
        }
        List<? extends VariableElement> parameters = method.getParameters();
        if ( parameters.size()!= 1){
            continue;
        }
        
        if ( method.getSimpleName().contentEquals("valueOf")){
            stringConverter = StringConverter.VALUE_OF;
        }
        else if ( method.getSimpleName().contentEquals("fromString")){
            stringConverter = StringConverter.FROM_STRING;
        }
    }
}
 
源代码7 项目: netbeans   文件: ProducerMethodAnalyzer.java
private void checkSpecializes(ExecutableElement element, CdiAnalysisResult result )
{
    if ( !AnnotationUtil.hasAnnotation(element, AnnotationUtil.SPECIALIZES, 
            result.getInfo() ))
    {
        return;
    }
    Set<Modifier> modifiers = element.getModifiers();
    if ( modifiers.contains( Modifier.STATIC )){
        result.addError( element,  NbBundle.getMessage(
                    ProducerMethodAnalyzer.class, 
                    "ERR_StaticSpecializesProducer"));    // NOI18N
    }
    CompilationInfo compInfo = result.getInfo();
    ExecutableElement overridenMethod = compInfo.getElementUtilities().
        getOverriddenMethod( element );
    if ( overridenMethod == null ){
        return;
    }
    TypeElement superClass = compInfo.getElementUtilities().
        enclosingTypeElement( overridenMethod );
    TypeElement containingClass = compInfo.getElementUtilities().
        enclosingTypeElement( element );
    TypeMirror typeDirectSuper = containingClass.getSuperclass();
    if ( !superClass.equals(compInfo.getTypes().asElement(typeDirectSuper)) || 
            !AnnotationUtil.hasAnnotation(overridenMethod, 
                    AnnotationUtil.PRODUCES_FQN, compInfo))
    {
        result.addError( element, NbBundle.getMessage(
                    ProducerMethodAnalyzer.class, 
                    "ERR_NoDirectSpecializedProducer"));    // NOI18N
    }
}
 
源代码8 项目: auto   文件: SimpleMethod.java
/**
 * Returns an appropriate string to be used in code for the access specification of the given
 * method. This will be {@code public} or {@code protected} followed by a space, or the empty
 * string for default access.
 */
static String access(ExecutableElement method) {
  Set<Modifier> mods = method.getModifiers();
  if (mods.contains(Modifier.PUBLIC)) {
    return "public ";
  } else if (mods.contains(Modifier.PROTECTED)) {
    return "protected ";
  } else {
    return "";
  }
}
 
源代码9 项目: squidb   文件: ModelMethodPlugin.java
private void checkExecutableElement(ExecutableElement e, List<ExecutableElement> modelMethods,
        List<ExecutableElement> staticModelMethods, DeclaredTypeName modelClass) {
    Set<Modifier> modifiers = e.getModifiers();
    if (e.getKind() == ElementKind.CONSTRUCTOR) {
        // Don't copy constructors
        return;
    }
    if (!modifiers.contains(Modifier.STATIC)) {
        utils.getMessager().printMessage(Diagnostic.Kind.WARNING,
                "Model spec objects should never be instantiated, so non-static methods are meaningless. " +
                        "Did you mean to make this a static method?", e);
        return;
    }
    ModelMethod methodAnnotation = e.getAnnotation(ModelMethod.class);
    // Private static methods may be unannotated if they are called by a public annotated method.
    // Don't assume error if method is private
    if (methodAnnotation == null) {
        if (modifiers.contains(Modifier.PUBLIC)) {
            staticModelMethods.add(e);
        } else if (!modifiers.contains(Modifier.PRIVATE)) {
            utils.getMessager().printMessage(Diagnostic.Kind.WARNING,
                    "This method will not be added to the model definition. " +
                            "Did you mean to annotate this method with @ModelMethod?", e);
        }
    } else {
        List<? extends VariableElement> params = e.getParameters();
        if (params.size() == 0) {
            modelSpec.logError("@ModelMethod methods must have an abstract model as their first argument", e);
        } else {
            VariableElement firstParam = params.get(0);
            TypeMirror paramType = firstParam.asType();
            if (!checkFirstArgType(paramType, modelClass)) {
                modelSpec.logError("@ModelMethod methods must have an abstract model as their first argument", e);
            } else {
                modelMethods.add(e);
            }
        }
    }
}
 
源代码10 项目: 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;
}
 
源代码11 项目: netbeans   文件: JaxWsChildren.java
private List<ExecutableElement> getPublicMethods(CompilationController controller, TypeElement classElement) throws IOException {
    List<? extends Element> members = classElement.getEnclosedElements();
    List<ExecutableElement> methods = ElementFilter.methodsIn(members);
    List<ExecutableElement> publicMethods = new ArrayList<ExecutableElement>();
    for (ExecutableElement method:methods) {
        Set<Modifier> modifiers = method.getModifiers();
        if (modifiers.contains(Modifier.PUBLIC)) {
            publicMethods.add(method);
        }
    }
    return publicMethods;
}
 
源代码12 项目: dagger2-sample   文件: InjectMethodValidator.java
@Override
public ValidationReport<ExecutableElement> validate(ExecutableElement methodElement) {
  ValidationReport.Builder<ExecutableElement> builder =
      ValidationReport.Builder.about(methodElement);
  Set<Modifier> modifiers = methodElement.getModifiers();
  if (modifiers.contains(ABSTRACT)) {
    builder.addItem(ABSTRACT_INJECT_METHOD, methodElement);
  }

  if (modifiers.contains(PRIVATE)) {
    builder.addItem(PRIVATE_INJECT_METHOD, methodElement);
  }

  if (!methodElement.getTypeParameters().isEmpty()) {
    builder.addItem(GENERIC_INJECT_METHOD, methodElement);
  }

  for (VariableElement parameter : methodElement.getParameters()) {
    ImmutableSet<? extends AnnotationMirror> qualifiers = getQualifiers(parameter);
    if (qualifiers.size() > 1) {
      for (AnnotationMirror qualifier : qualifiers) {
        builder.addItem(MULTIPLE_QUALIFIERS, methodElement, qualifier);
      }
    }
  }

  return builder.build();
}
 
源代码13 项目: netbeans   文件: JaxWsChildren.java
private List<ExecutableElement> getPublicMethods(CompilationController controller, TypeElement classElement) throws IOException {
    List<? extends Element> members = classElement.getEnclosedElements();
    List<ExecutableElement> methods = ElementFilter.methodsIn(members);
    List<ExecutableElement> publicMethods = new ArrayList<ExecutableElement>();
    for (ExecutableElement method:methods) {
        Set<Modifier> modifiers = method.getModifiers();
        if (modifiers.contains(Modifier.PUBLIC)) {
            publicMethods.add(method);
        }
    }
    return publicMethods;
}
 
源代码14 项目: ngAndroid   文件: ModelSourceLinker.java
private NgModelSourceLink getSourceLink(Element element) {

        TypeMirror fieldType = element.asType();
        TypeElement typeElement = typeUtils.asTypeElement(fieldType);
        Option<String> packageName = elementUtils.getPackageName(typeElement);
        String fullName = elementUtils.getFullName(typeElement);

        List<SourceField> fields = new ArrayList<>();

        String modelName = elementUtils.stripClassName(fieldType);

        List<? extends Element> enclosedElements = typeElement.getEnclosedElements();
        boolean isInterface = typeElement.getKind().isInterface();

        if(isInterface) {
            messageUtils.error(Option.of(typeElement), "Model must be a class");
        }

        Set<String> duplicateCheck = new HashSet<>();

        for(int index = 0; index < enclosedElements.size(); index++){
            Element enclosedElement = enclosedElements.get(index);
            if(elementUtils.isSetter(enclosedElement)) {
                ExecutableElement setter = (ExecutableElement) enclosedElement;
                if (!elementUtils.returnsVoid(setter)) {
                    messageUtils.error(Option.of(element), "Setter '%s' must not return a value", element.toString());
                    continue;
                }
                Set<Modifier> modifiers = setter.getModifiers();
                if(modifiers.contains(Modifier.PRIVATE) || modifiers.contains(Modifier.PROTECTED)){
                    messageUtils.error(Option.of(setter), "Unable to access field '%s' from scope '%s'. Must have default or public access", element.toString(), element.getEnclosingElement().toString());
                    continue;
                }
                String fName = setter.getSimpleName().toString().substring(3).toLowerCase();

                if(duplicateCheck.contains(fName)){
                    messageUtils.error(Option.of(setter), "Field '%s' in model '%s' is a duplicate.", setter.getSimpleName().toString().substring(3), fullName);
                    continue;
                }
                duplicateCheck.add(fName);

                TypeMirror typeMirror = setter.getParameters().get(0).asType();
                String type = typeMirror.toString();
                SourceField sourceField = new SourceField(fName, type, primitiveUtils);
                sourceField.setSetter(setter.getSimpleName().toString());
                // TODO O(n^2) is the best
                boolean getterFound = false;
                for(Element possGetter : enclosedElements) {
                    if(elementUtils.isGetterForField(possGetter, fName, typeMirror.getKind())){
                        sourceField.setGetter(possGetter.getSimpleName().toString());
                        getterFound = true;
                        break;
                    }
                }
                if(!getterFound) {
                    messageUtils.error(Option.of(setter), "Field '%s' is missing a corresponding getter", fName);
                }
                fields.add(sourceField);
            }
        }
        return new NgModelSourceLink(modelName, packageName, fullName, isInterface, fields, element);
    }
 
源代码15 项目: dagger2-sample   文件: ProvidesMethodValidator.java
@Override
public ValidationReport<ExecutableElement> validate(ExecutableElement providesMethodElement) {
  ValidationReport.Builder<ExecutableElement> builder =
      ValidationReport.Builder.about(providesMethodElement);

  Provides providesAnnotation = providesMethodElement.getAnnotation(Provides.class);
  checkArgument(providesAnnotation != null);

  Element enclosingElement = providesMethodElement.getEnclosingElement();
  if (!isAnnotationPresent(enclosingElement, Module.class)) {
    builder.addItem(formatModuleErrorMessage(BINDING_METHOD_NOT_IN_MODULE),
        providesMethodElement);
  }
  
  if (!providesMethodElement.getTypeParameters().isEmpty()) {
    builder.addItem(formatErrorMessage(BINDING_METHOD_TYPE_PARAMETER),
        providesMethodElement);
  }

  Set<Modifier> modifiers = providesMethodElement.getModifiers();
  if (modifiers.contains(PRIVATE)) {
    builder.addItem(formatErrorMessage(BINDING_METHOD_PRIVATE),
        providesMethodElement);
  }
  if (modifiers.contains(STATIC)) {
    // TODO(gak): why not?
    builder.addItem(formatErrorMessage(BINDING_METHOD_STATIC), providesMethodElement);
  }
  if (modifiers.contains(ABSTRACT)) {
    builder.addItem(formatErrorMessage(BINDING_METHOD_ABSTRACT), providesMethodElement);
  }

  TypeMirror returnType = providesMethodElement.getReturnType();
  TypeKind returnTypeKind = returnType.getKind();
  if (returnTypeKind.equals(VOID)) {
    builder.addItem(formatErrorMessage(BINDING_METHOD_MUST_RETURN_A_VALUE),
        providesMethodElement);
  }

  // check mapkey is right
  if (!providesAnnotation.type().equals(Provides.Type.MAP) 
      && (getMapKeys(providesMethodElement) != null
          && getMapKeys(providesMethodElement).size() > 0)) {
    builder.addItem(formatErrorMessage(BINDING_METHOD_NOT_MAP_HAS_MAP_KEY),
        providesMethodElement);
  }

  validateMethodQualifiers(builder, providesMethodElement);

  switch (providesAnnotation.type()) {
    case UNIQUE: // fall through
    case SET:
      validateKeyType(builder, returnType);
      break;
    case MAP:
      validateKeyType(builder, returnType);
      ImmutableSet<? extends AnnotationMirror> annotationMirrors =
          getMapKeys(providesMethodElement);
      switch (annotationMirrors.size()) {
        case 0:
          builder.addItem(formatErrorMessage(BINDING_METHOD_WITH_NO_MAP_KEY),
              providesMethodElement);
          break;
        case 1:
          break;
        default:
          builder.addItem(formatErrorMessage(BINDING_METHOD_WITH_MULTIPLE_MAP_KEY),
              providesMethodElement);
          break;
      }
      break;
    case SET_VALUES:
      if (!returnTypeKind.equals(DECLARED)) {
        builder.addItem(PROVIDES_METHOD_SET_VALUES_RETURN_SET, providesMethodElement);
      } else {
        DeclaredType declaredReturnType = (DeclaredType) returnType;
        // TODO(gak): should we allow "covariant return" for set values?
        if (!declaredReturnType.asElement().equals(getSetElement())) {
          builder.addItem(PROVIDES_METHOD_SET_VALUES_RETURN_SET, providesMethodElement);
        } else if (declaredReturnType.getTypeArguments().isEmpty()) {
          builder.addItem(formatErrorMessage(BINDING_METHOD_SET_VALUES_RAW_SET),
              providesMethodElement);
        } else {
          validateKeyType(builder,
              Iterables.getOnlyElement(declaredReturnType.getTypeArguments()));
        }
      }
      break;
    default:
      throw new AssertionError();
  }

  return builder.build();
}
 
源代码16 项目: dagger2-sample   文件: ProducesMethodValidator.java
@Override
public ValidationReport<ExecutableElement> validate(ExecutableElement producesMethodElement) {
  ValidationReport.Builder<ExecutableElement> builder =
      ValidationReport.Builder.about(producesMethodElement);

  Produces producesAnnotation = producesMethodElement.getAnnotation(Produces.class);
  checkArgument(producesAnnotation != null);

  Element enclosingElement = producesMethodElement.getEnclosingElement();
  if (!isAnnotationPresent(enclosingElement, ProducerModule.class)) {
    builder.addItem(formatModuleErrorMessage(BINDING_METHOD_NOT_IN_MODULE),
        producesMethodElement);
  }

  if (!producesMethodElement.getTypeParameters().isEmpty()) {
    builder.addItem(formatErrorMessage(BINDING_METHOD_TYPE_PARAMETER), producesMethodElement);
  }

  Set<Modifier> modifiers = producesMethodElement.getModifiers();
  if (modifiers.contains(PRIVATE)) {
    builder.addItem(formatErrorMessage(BINDING_METHOD_PRIVATE), producesMethodElement);
  }
  if (modifiers.contains(STATIC)) {
    // TODO(gak): why not?
    builder.addItem(formatErrorMessage(BINDING_METHOD_STATIC), producesMethodElement);
  }
  if (modifiers.contains(ABSTRACT)) {
    builder.addItem(formatErrorMessage(BINDING_METHOD_ABSTRACT), producesMethodElement);
  }

  TypeMirror returnType = producesMethodElement.getReturnType();
  TypeKind returnTypeKind = returnType.getKind();
  if (returnTypeKind.equals(VOID)) {
    builder.addItem(formatErrorMessage(BINDING_METHOD_MUST_RETURN_A_VALUE),
        producesMethodElement);
  }

  // check mapkey is right
  if (!producesAnnotation.type().equals(Produces.Type.MAP)
      && (getMapKeys(producesMethodElement) != null
          && !getMapKeys(producesMethodElement).isEmpty())) {
    builder.addItem(formatErrorMessage(BINDING_METHOD_NOT_MAP_HAS_MAP_KEY),
        producesMethodElement);
  }

  ProvidesMethodValidator.validateMethodQualifiers(builder, producesMethodElement);

  switch (producesAnnotation.type()) {
    case UNIQUE: // fall through
    case SET:
      validateSingleReturnType(builder, returnType);
      break;
    case MAP:
      validateSingleReturnType(builder, returnType);
      ImmutableSet<? extends AnnotationMirror> annotationMirrors =
          getMapKeys(producesMethodElement);
      switch (annotationMirrors.size()) {
        case 0:
          builder.addItem(formatErrorMessage(BINDING_METHOD_WITH_NO_MAP_KEY),
              producesMethodElement);
          break;
        case 1:
          break;
        default:
          builder.addItem(formatErrorMessage(BINDING_METHOD_WITH_MULTIPLE_MAP_KEY),
              producesMethodElement);
          break;
      }
      break;
    case SET_VALUES:
      if (returnTypeKind.equals(DECLARED)
          && MoreTypes.isTypeOf(ListenableFuture.class, returnType)) {
        DeclaredType declaredReturnType = MoreTypes.asDeclared(returnType);
        if (!declaredReturnType.getTypeArguments().isEmpty()) {
          validateSetType(builder, Iterables.getOnlyElement(
              declaredReturnType.getTypeArguments()));
        }
      } else {
        validateSetType(builder, returnType);
      }
      break;
    default:
      throw new AssertionError();
  }

  return builder.build();
}
 
源代码17 项目: toothpick   文件: ToothpickProcessor.java
protected boolean isValidInjectAnnotatedMethod(ExecutableElement methodElement) {
  TypeElement enclosingElement = (TypeElement) methodElement.getEnclosingElement();

  // Verify modifiers.
  Set<Modifier> modifiers = methodElement.getModifiers();
  if (modifiers.contains(PRIVATE)) {
    error(
        methodElement,
        "@Inject annotated methods must not be private : %s#%s",
        enclosingElement.getQualifiedName(),
        methodElement.getSimpleName());
    return false;
  }

  // Verify parentScope modifiers.
  Set<Modifier> parentModifiers = enclosingElement.getModifiers();
  if (parentModifiers.contains(PRIVATE)) {
    error(
        methodElement,
        "@Injected fields in class %s. The class must be non private.",
        enclosingElement.getSimpleName());
    return false;
  }

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

  if (modifiers.contains(PUBLIC) || modifiers.contains(PROTECTED)) {
    if (!hasWarningSuppressed(methodElement, SUPPRESS_WARNING_ANNOTATION_VISIBLE_VALUE)) {
      crashOrWarnWhenMethodIsNotPackageVisible(
          methodElement,
          format(
              "@Inject annotated methods should have package visibility: %s#%s", //
              enclosingElement.getQualifiedName(), methodElement.getSimpleName()));
    }
  }
  return true;
}
 
源代码18 项目: netbeans   文件: InterceptedBeanAnalyzer.java
@Override
public void analyze( TypeElement element, TypeElement parent,
        WebBeansModel model, AtomicBoolean cancel,
        Result result )
{
    if ( AnnotationUtil.hasAnnotation(element, AnnotationUtil.INTERCEPTOR, 
            model.getCompilationController() ))
    {
        result.requireCdiEnabled(element, model);
        // rule should not be applied to interceptor 
        return ;
    }
    boolean hasIBindings = hasInterceptorBindings(element, model);
    if ( hasIBindings ){
        result.requireCdiEnabled(element, model);
        EditorAnnotationsHelper helper = EditorAnnotationsHelper.getInstance(result);
        ElementHandle<TypeElement> handle = ElementHandle.create(element);
        if ( helper != null ){
            helper.addInterceptedBean( result , 
                    handle.resolve( result.getInfo()));
        }
    }
    
    
    Set<Modifier> modifiers = element.getModifiers();
    boolean isFinal = modifiers.contains(Modifier.FINAL);
    List<ExecutableElement> methods = ElementFilter.methodsIn(
            element.getEnclosedElements());
    ExecutableElement badMethod = null;
    for (ExecutableElement method : methods) {
        if ( cancel.get() ){
            return;
        }
        modifiers = method.getModifiers();
        if ( !modifiers.contains( Modifier.FINAL )){
            continue;
        }
        if ( modifiers.contains( Modifier.STATIC ) || 
                modifiers.contains( Modifier.PRIVATE))
        {
            continue;
        }
        badMethod = method;
        break;
    }
    if ( badMethod == null && !isFinal ){
        return;
    }
    if ( cancel.get() ){
        return;
    }
    if (hasIBindings && isFinal) {
        result.addError(element, model, 
                        NbBundle.getMessage(
                        InterceptedBeanAnalyzer.class,
                        "ERR_FinalInterceptedBean")); // NOI18N
    }
    if (hasIBindings && badMethod != null) {
        result.addError(element, model,   
                        NbBundle.getMessage(
                        InterceptedBeanAnalyzer.class,
                        "ERR_InterceptedBeanHasFinalMethod", badMethod
                                .getSimpleName().toString())); // NOI18N
    }
}
 
源代码19 项目: netbeans   文件: EjbFacadeGenerator.java
private void modifyEntityManager( List<GenerationOptions> methodOptions ,
        FileObject fileObject)  throws IOException 
{
    final Set<String> methodNames = new HashSet<String>();
    for( GenerationOptions opt : methodOptions ){
        methodNames.add( opt.getMethodName());
    }
    Task<WorkingCopy> task = new Task<WorkingCopy>() {
        
        @Override
        public void run(WorkingCopy workingCopy) throws Exception {
            
            workingCopy.toPhase(Phase.RESOLVED);
            CompilationUnitTree cut = workingCopy.getCompilationUnit();
            TreeMaker make = workingCopy.getTreeMaker();
            
            for (Tree typeDeclaration : cut.getTypeDecls()){
                if (TreeUtilities.CLASS_TREE_KINDS.contains(typeDeclaration
                        .getKind()))
                {
                    ClassTree clazz = (ClassTree) typeDeclaration;
                    TreePath path = workingCopy.getTrees().getPath(cut,
                            clazz);
                    Element element = workingCopy.getTrees().getElement(
                            path);
                    List<ExecutableElement> methods = ElementFilter
                            .methodsIn(element.getEnclosedElements());
                    for (ExecutableElement method : methods) {
                        if ( methodNames.contains(method.getSimpleName().
                                toString()) )
                        {
                            MethodTree methodTree = workingCopy.getTrees().
                                getTree( method );
                            Set<Modifier> modifiers = method.getModifiers();
                            AnnotationTree annotation = make.Annotation(
                                    make.QualIdent(Override.class.getCanonicalName()),
                                    Collections.<ExpressionTree>emptyList());
                            ModifiersTree newModifs = make.Modifiers(
                                    modifiers, 
                                    Collections.singletonList(annotation));
                            workingCopy.rewrite(methodTree.getModifiers(), 
                                    newModifs);
                        }
                    }
                }
            }
        }
    };
    
    JavaSource.forFileObject(fileObject).runModificationTask(task).commit();
}
 
源代码20 项目: netbeans   文件: EntityClassInfo.java
protected void extractFieldsFromMethods(DeclaredType originalEntity, 
        TypeElement typeElement, CompilationController controller) 
{
    List<ExecutableElement> methods = ElementFilter.methodsIn(typeElement.getEnclosedElements());

    for (ExecutableElement method : methods) {
        Set<Modifier> modifiers = method.getModifiers();
        if (modifiers.contains(Modifier.STATIC) || modifiers.contains(Modifier.PRIVATE)) {
            continue;
        }

        FieldInfo fieldInfo = new FieldInfo();

        fieldInfo.parseAnnotations(method.getAnnotationMirrors());

        if (!fieldInfo.isPersistent() || !fieldInfo.hasPersistenceAnnotation()) {
            continue;
        }

        fieldInfos.add(fieldInfo);
        String name = method.getSimpleName().toString();
        if (name.startsWith("get")) {       //NOI18N
            name = name.substring(3);
            name = Util.lowerFirstChar(name);
        }

        fieldInfo.setName(name);
        TypeMirror methodType = controller.getTypes().asMemberOf(
                originalEntity, method);
        fieldInfo.setType(((ExecutableType)methodType).getReturnType(), controller);

        if (fieldInfo.isId()) {
            idFieldInfo = fieldInfo;
        }
    }
    TypeElement superClass = getJPASuperClass(typeElement, controller);
    if ( superClass == null ){
        return;
    }
    extractFieldsFromMethods( originalEntity , superClass , controller );
}