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

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

源代码1 项目: netbeans   文件: JavaElementHandler.java
private List<String> getParameterListForMethod(ExecutableElement exe) {
    List<String> parameters = new ArrayList<String>();

    if (exe != null) {
        // generate a list of parameters
        // unfortunately, we have to work around # 139695 in an ugly fashion

        try {
            List<? extends VariableElement> params = exe.getParameters(); // this can cause NPE's

            for (VariableElement variableElement : params) {
                TypeMirror tm = variableElement.asType();

                if (tm.getKind() == TypeKind.DECLARED || tm.getKind() == TypeKind.ARRAY) {
                    parameters.add(GroovyUtils.stripPackage(tm.toString()));
                } else {
                    parameters.add(tm.toString());
                }
            }
        } catch (NullPointerException e) {
            // simply do nothing.
        }
    }
    return parameters;
}
 
源代码2 项目: openjdk-jdk9   文件: WebServiceVisitor.java
protected int getModeParameterCount(ExecutableElement method, WebParam.Mode mode) {
    WebParam webParam;
    int cnt = 0;
    for (VariableElement param : method.getParameters()) {
        webParam = param.getAnnotation(WebParam.class);
        if (webParam != null) {
            if (webParam.header())
                continue;
            if (isEquivalentModes(mode, webParam.mode()))
                cnt++;
        } else {
            if (isEquivalentModes(mode, WebParam.Mode.IN)) {
                cnt++;
            }
        }
    }
    return cnt;
}
 
源代码3 项目: openjdk-jdk8u   文件: LLNI.java
protected final String jniMethodName(ExecutableElement method, String cname,
                                     boolean longName)
            throws TypeSignature.SignatureException {
    String res = "Java_" + cname + "_" + method.getSimpleName();

    if (longName) {
        TypeMirror mType =  types.erasure(method.getReturnType());
        List<? extends VariableElement> params = method.getParameters();
        List<TypeMirror> argTypes = new ArrayList<TypeMirror>();
        for (VariableElement param: params) {
            argTypes.add(types.erasure(param.asType()));
        }

        res = res + "__";
        for (TypeMirror t: argTypes) {
            String tname = t.toString();
            TypeSignature newTypeSig = new TypeSignature(elems);
            String sig = newTypeSig.getTypeSignature(tname);
            res = res + nameToIdentifier(sig);
        }
    }
    return res;
}
 
源代码4 项目: SimpleWeibo   文件: RetroWeiboProcessor.java
public String buildCallbackType(ExecutableElement method) {
  Types typeUtils = processingEnv.getTypeUtils();
  TypeMirror callback = getTypeMirror(processingEnv, RetroWeibo.Callback.class);

  List<? extends VariableElement> parameters = method.getParameters();
  for (VariableElement parameter : parameters) {
    TypeMirror type = parameter.asType();
    if (type instanceof DeclaredType) {
      List<? extends TypeMirror> params = ((DeclaredType) type).getTypeArguments();
      if (params.size() == 1) {
        callback = typeUtils.getDeclaredType((TypeElement) typeUtils
                .asElement(callback), new TypeMirror[] {params.get(0)});

        if (typeUtils.isSubtype(type, callback)) {
          return typeSimplifier.simplify(params.get(0));
        }
      }
    }
  }
  return "";
}
 
源代码5 项目: openjdk-jdk8u   文件: JNIWriter.java
private String signature(ExecutableElement e) {
    StringBuilder sb = new StringBuilder();
    String sep = "(";
    for (VariableElement p: e.getParameters()) {
        sb.append(sep);
        sb.append(types.erasure(p.asType()).toString());
        sep = ",";
    }
    sb.append(")");
    return sb.toString();
}
 
源代码6 项目: JReFrameworker   文件: ParameterSpec.java
static List<ParameterSpec> parametersOf(ExecutableElement method) {
  List<ParameterSpec> result = new ArrayList<>();
  for (VariableElement parameter : method.getParameters()) {
    result.add(ParameterSpec.get(parameter));
  }
  return result;
}
 
源代码7 项目: jackdaw   文件: TypeUtils.java
public static boolean isSimpleMethod(final Element element) {
    if (element instanceof ExecutableElement) {
        final ExecutableElement ee = (ExecutableElement) element;
        final List<? extends VariableElement> parameters = ee.getParameters();

        return !hasAnyModifier(ee, Modifier.STATIC) && parameters.isEmpty();
    }
    return false;
}
 
源代码8 项目: TencentKona-8   文件: Gen.java
String signature(ExecutableElement e) {
    StringBuilder sb = new StringBuilder("(");
    String sep = "";
    for (VariableElement p: e.getParameters()) {
        sb.append(sep);
        sb.append(types.erasure(p.asType()).toString());
        sep = ",";
    }
    sb.append(")");
    return sb.toString();
}
 
源代码9 项目: j2objc   文件: ElementUtil.java
private static boolean paramsMatch(ExecutableElement method, String[] paramTypes) {
  List<? extends VariableElement> params = method.getParameters();
  int size = params.size();
  if (size != paramTypes.length) {
    return false;
  }
  for (int i = 0; i < size; i++) {
    if (!TypeUtil.getQualifiedName(params.get(i).asType()).equals(paramTypes[i])) {
      return false;
    }
  }
  return true;
}
 
源代码10 项目: revapi   文件: ClasspathScanner.java
void scanMethod(TypeRecord owningType, ExecutableElement method) {
    if (shouldBeIgnored(method)) {
        owningType.inaccessibleDeclaredNonClassMembers.add(method);
        return;
    }

    owningType.accessibleDeclaredNonClassMembers.add(method);

    TypeElement returnType = method.getReturnType().accept(getTypeElement, null);
    if (returnType != null) {
        addUse(owningType, method, returnType, UseSite.Type.RETURN_TYPE);
        addType(returnType, false);
        addTypeParamUses(owningType, method, method.getReturnType());
    }

    int idx = 0;
    for (VariableElement p : method.getParameters()) {
        TypeElement pt = p.asType().accept(getTypeElement, null);
        if (pt != null) {
            addUse(owningType, method, pt, UseSite.Type.PARAMETER_TYPE, idx++);
            addType(pt, false);
            addTypeParamUses(owningType, method, p.asType());
        }

        p.getAnnotationMirrors().forEach(a -> scanAnnotation(owningType, p, a));
    }

    method.getThrownTypes().forEach(t -> {
        TypeElement ex = t.accept(getTypeElement, null);
        if (ex != null) {
            addUse(owningType, method, ex, UseSite.Type.IS_THROWN);
            addType(ex, false);
            addTypeParamUses(owningType, method, t);
        }

        t.getAnnotationMirrors().forEach(a -> scanAnnotation(owningType, method, a));
    });

    method.getAnnotationMirrors().forEach(a -> scanAnnotation(owningType, method, a));
}
 
源代码11 项目: openjdk-8-source   文件: JavahTask.java
private void checkMethodParameters(Set<TypeElement> classes) {
    Types types = processingEnv.getTypeUtils();
    for (TypeElement te: classes) {
        for (ExecutableElement ee: ElementFilter.methodsIn(te.getEnclosedElements())) {
            for (VariableElement ve: ee.getParameters()) {
                TypeMirror tm = ve.asType();
                checkMethodParametersVisitor.visit(tm, types);
            }
        }
    }
}
 
源代码12 项目: pocketknife   文件: BuilderProcessor.java
private FragmentMethodBinding getFragmentMethodBinding(ExecutableElement element) throws InvalidTypeException {
    FragmentMethodBinding binding = new FragmentMethodBinding(element.getSimpleName().toString(), element.getReturnType());
    for (Element parameter : element.getParameters()) {
        binding.addField(getBundleFieldBinding(parameter));
    }
    return binding;
}
 
源代码13 项目: TencentKona-8   文件: WebServiceVisitor.java
protected VariableElement getOutParameter(ExecutableElement method) {
    WebParam webParam;
    for (VariableElement param : method.getParameters()) {
        webParam = param.getAnnotation(WebParam.class);
        if (webParam != null && webParam.mode() != WebParam.Mode.IN) {
            return param;
        }
    }
    return null;
}
 
源代码14 项目: openjdk-jdk8u   文件: LLNI.java
protected String methodDecl(ExecutableElement method,
                            TypeElement clazz, String cname)
        throws TypeSignature.SignatureException, Util.Exit {
    String res = null;

    TypeMirror retType = types.erasure(method.getReturnType());
    String typesig = signature(method);
    TypeSignature newTypeSig = new TypeSignature(elems);
    String sig = newTypeSig.getTypeSignature(typesig, retType);
    boolean longName = needLongName(method, clazz);

    if (sig.charAt(0) != '(')
        util.error("invalid.method.signature", sig);


    res = "JNIEXPORT " + jniType(retType) + " JNICALL" + lineSep + jniMethodName(method, cname, longName)
        + "(JNIEnv *, " + cRcvrDecl(method, cname);
    List<? extends VariableElement> params = method.getParameters();
    List<TypeMirror> argTypes = new ArrayList<TypeMirror>();
    for (VariableElement p: params){
        argTypes.add(types.erasure(p.asType()));
    }

    /* It would have been nice to include the argument names in the
       declaration, but there seems to be a bug in the "BinaryField"
       class, causing the getArguments() method to return "null" for
       most (non-constructor) methods. */
    for (TypeMirror argType: argTypes)
        res = res + ", " + jniType(argType);
    res = res + ");" + lineSep;
    return res;
}
 
源代码15 项目: Aria   文件: ParamObtainUtil.java
/**
 * 查找并保存扫描到的方法
 */
void saveMethod(TaskEnum taskEnum, RoundEnvironment roundEnv,
    Class<? extends Annotation> annotationClazz, int annotationType) {
  for (Element element : roundEnv.getElementsAnnotatedWith(annotationClazz)) {
    ElementKind kind = element.getKind();
    if (kind == ElementKind.METHOD) {
      ExecutableElement method = (ExecutableElement) element;
      TypeElement classElement = (TypeElement) method.getEnclosingElement();
      PackageElement packageElement = mElementUtil.getPackageOf(classElement);

      String methodName = method.getSimpleName().toString();
      String className = method.getEnclosingElement().toString(); //全类名
      String key = className + taskEnum.proxySuffix;
      ProxyClassParam proxyEntity = mMethodParams.get(key);
      MethodInfo methodInfo = new MethodInfo();
      methodInfo.methodName = methodName;
      methodInfo.params = (List<VariableElement>) method.getParameters();
      if (taskEnum == TaskEnum.M3U8_PEER) {
        checkM3U8PeerMethod(method, methodInfo.params);
      } else {
        checkTaskMethod(taskEnum, method, annotationClazz, methodInfo.params);
      }

      if (proxyEntity == null) {
        proxyEntity = new ProxyClassParam();
        proxyEntity.taskEnums = new HashSet<>();
        proxyEntity.packageName = packageElement.getQualifiedName().toString();
        proxyEntity.className = classElement.getSimpleName().toString();
        proxyEntity.proxyClassName = proxyEntity.className + taskEnum.proxySuffix;
        proxyEntity.mainTaskEnum = taskEnum;
        if (taskEnum == TaskEnum.DOWNLOAD_GROUP_SUB || taskEnum == TaskEnum.DOWNLOAD_GROUP) {
          proxyEntity.subTaskEnum = EntityInfo.DOWNLOAD;
        }
        mMethodParams.put(key, proxyEntity);
      }
      proxyEntity.taskEnums.add(taskEnum);
      if (proxyEntity.methods.get(taskEnum) == null) {
        proxyEntity.methods.put(taskEnum, new HashMap<Class<? extends Annotation>, MethodInfo>());
      }

      proxyEntity.methods.get(taskEnum).put(annotationClazz, methodInfo);
      proxyEntity.keyMappings.put(methodName, getValues(taskEnum, method, annotationType));
    }
  }
}
 
源代码16 项目: jdk8u60   文件: WebServiceVisitor.java
protected boolean isLegalMethod(ExecutableElement method, TypeElement typeElement) {
    WebMethod webMethod = method.getAnnotation(WebMethod.class);
    //SEI cannot have methods with @WebMethod(exclude=true)
    if (typeElement.getKind().equals(ElementKind.INTERFACE) && webMethod != null && webMethod.exclude())
        builder.processError(WebserviceapMessages.WEBSERVICEAP_INVALID_SEI_ANNOTATION_ELEMENT_EXCLUDE("exclude=true", typeElement.getQualifiedName(), method.toString()), method);
    // With https://jax-ws.dev.java.net/issues/show_bug.cgi?id=577, hasWebMethods has no effect
    if (hasWebMethods && webMethod == null) // backwards compatibility (for legacyWebMethod computation)
        return true;

    if ((webMethod != null) && webMethod.exclude()) {
        return true;
    }
    /*
    This check is not needed as Impl class is already checked that it is not abstract.
    if (typeElement instanceof TypeElement && method.getModifiers().contains(Modifier.ABSTRACT)) {  // use Kind.equals instead of instanceOf
        builder.processError(method.getPosition(), WebserviceapMessages.WEBSERVICEAP_WEBSERVICE_METHOD_IS_ABSTRACT(typeElement.getQualifiedName(), method.getSimpleName()));
        return false;
    }
    */
    TypeMirror returnType = method.getReturnType();
    if (!isLegalType(returnType)) {
        builder.processError(WebserviceapMessages.WEBSERVICEAP_METHOD_RETURN_TYPE_CANNOT_IMPLEMENT_REMOTE(typeElement.getQualifiedName(),
                method.getSimpleName(),
                returnType), method);
    }
    boolean isOneWay = method.getAnnotation(Oneway.class) != null;
    if (isOneWay && !isValidOneWayMethod(method, typeElement))
        return false;

    SOAPBinding soapBinding = method.getAnnotation(SOAPBinding.class);
    if (soapBinding != null) {
        if (soapBinding.style().equals(SOAPBinding.Style.RPC)) {
            builder.processError(WebserviceapMessages.WEBSERVICEAP_RPC_SOAPBINDING_NOT_ALLOWED_ON_METHOD(typeElement.getQualifiedName(), method.toString()), method);
        }
    }

    int paramIndex = 0;
    for (VariableElement parameter : method.getParameters()) {
        if (!isLegalParameter(parameter, method, typeElement, paramIndex++))
            return false;
    }

    if (!isDocLitWrapped() && soapStyle.equals(SOAPStyle.DOCUMENT)) {
        VariableElement outParam = getOutParameter(method);
        int inParams = getModeParameterCount(method, WebParam.Mode.IN);
        int outParams = getModeParameterCount(method, WebParam.Mode.OUT);
        if (inParams != 1) {
            builder.processError(WebserviceapMessages.WEBSERVICEAP_DOC_BARE_AND_NO_ONE_IN(typeElement.getQualifiedName(), method.toString()), method);
        }
        if (returnType.accept(NO_TYPE_VISITOR, null)) {
            if (outParam == null && !isOneWay) {
                builder.processError(WebserviceapMessages.WEBSERVICEAP_DOC_BARE_NO_OUT(typeElement.getQualifiedName(), method.toString()), method);
            }
            if (outParams != 1) {
                if (!isOneWay && outParams != 0)
                    builder.processError(WebserviceapMessages.WEBSERVICEAP_DOC_BARE_NO_RETURN_AND_NO_OUT(typeElement.getQualifiedName(), method.toString()), method);
            }
        } else {
            if (outParams > 0) {
                builder.processError(WebserviceapMessages.WEBSERVICEAP_DOC_BARE_RETURN_AND_OUT(typeElement.getQualifiedName(), method.toString()), outParam);
            }
        }
    }
    return true;
}
 
源代码17 项目: j2objc   文件: Functionizer.java
/**
 * Declare any inherited constructors that aren't allowed to be accessed in Java
 * with a NS_UNAVAILABLE macro, so that clang will flag such access from native
 * code as an error.
 */
private void addDisallowedConstructors(TypeDeclaration node) {
  TypeElement typeElement = node.getTypeElement();
  TypeElement superClass = ElementUtil.getSuperclass(typeElement);
  if (ElementUtil.isPrivateInnerType(typeElement)
      || superClass == null
      // If we're not emitting constructors we don't need to disallow anything unless our
      // superclass is NSObject.
      || (!options.emitWrapperMethods()
          && typeUtil.getObjcClass(superClass) != TypeUtil.NS_OBJECT)) {
    return;
  }
  Map<String, ExecutableElement> inheritedConstructors = new HashMap<>();
  // Add super constructors that have unique parameter lists.
  for (ExecutableElement superC : ElementUtil.getConstructors(superClass)) {
    if (ElementUtil.isPrivate(superC)) {
      // Skip private super constructors since they're already unavailable.
      continue;
    }
    String selector = nameTable.getMethodSelector(superC);
    inheritedConstructors.put(selector, superC);
  }
  // Don't disallow this class' constructors if we're emitting wrapper methods.
  if (options.emitWrapperMethods()) {
    for (ExecutableElement constructor : ElementUtil.getConstructors(typeElement)) {
      inheritedConstructors.remove(nameTable.getMethodSelector(constructor));
    }
  }
  for (Map.Entry<String, ExecutableElement> entry : inheritedConstructors.entrySet()) {
    ExecutableElement oldConstructor = entry.getValue();
    GeneratedExecutableElement newConstructor =
        GeneratedExecutableElement.newConstructorWithSelector(
            entry.getKey(), typeElement, typeUtil);
    MethodDeclaration decl = new MethodDeclaration(newConstructor).setUnavailable(true);
    decl.addModifiers(Modifier.ABSTRACT);
    int count = 0;
    for (VariableElement param : oldConstructor.getParameters()) {
      VariableElement newParam = GeneratedVariableElement.newParameter(
          "arg" + count++, param.asType(), newConstructor);
      newConstructor.addParameter(newParam);
      decl.addParameter(new SingleVariableDeclaration(newParam));
    }
    addImplicitParameters(decl, ElementUtil.getDeclaringClass(oldConstructor));
    node.addBodyDeclaration(decl);
  }
}
 
源代码18 项目: buck   文件: ClassVisitorDriverFromElement.java
private void generateBridge(ExecutableElement fromMethod, ExecutableElement toMethod) {
  ExecutableType toErasure = (ExecutableType) types.erasure(toMethod.asType());
  String bridgeDescriptor = descriptorFactory.getDescriptor(toErasure);
  if (bridgedDescriptors.get(toMethod.getSimpleName()).contains(bridgeDescriptor)) {
    return;
  }

  innerClassesTable.addTypeReferences(toErasure);

  String[] exceptions =
      toErasure.getThrownTypes().stream()
          .map(descriptorFactory::getInternalName)
          .toArray(String[]::new);

  MethodVisitor methodVisitor =
      visitor.visitMethod(
          getBridgeAccessFlags(fromMethod),
          toMethod.getSimpleName().toString(),
          bridgeDescriptor,
          signatureFactory.getSignature(toErasure),
          exceptions);
  if (methodVisitor != null) {
    List<? extends VariableElement> fromMethodParameters = fromMethod.getParameters();
    for (int i = 0; i < fromMethodParameters.size(); i++) {
      VariableElement fromMethodParameter = fromMethodParameters.get(i);
      List<? extends AnnotationMirror> annotations =
          fromMethodParameter.getAnnotationMirrors();
      innerClassesTable.addTypeReferences(annotations);
      visitParameter(
          i,
          fromMethodParameter,
          fromMethodParameter.getSimpleName(),
          accessFlagsUtils.getAccessFlags(fromMethodParameter) | Opcodes.ACC_SYNTHETIC,
          annotations,
          methodVisitor);
    }
    innerClassesTable.addTypeReferences(fromMethod.getAnnotationMirrors());
    visitAnnotations(fromMethod, methodVisitor::visitAnnotation);
    methodVisitor.visitEnd();

    bridgedDescriptors.put(toMethod.getSimpleName(), bridgeDescriptor);
  }
}
 
源代码19 项目: openjdk-8   文件: WebServiceVisitor.java
protected boolean isLegalMethod(ExecutableElement method, TypeElement typeElement) {
    WebMethod webMethod = method.getAnnotation(WebMethod.class);
    //SEI cannot have methods with @WebMethod(exclude=true)
    if (typeElement.getKind().equals(ElementKind.INTERFACE) && webMethod != null && webMethod.exclude())
        builder.processError(WebserviceapMessages.WEBSERVICEAP_INVALID_SEI_ANNOTATION_ELEMENT_EXCLUDE("exclude=true", typeElement.getQualifiedName(), method.toString()), method);
    // With https://jax-ws.dev.java.net/issues/show_bug.cgi?id=577, hasWebMethods has no effect
    if (hasWebMethods && webMethod == null) // backwards compatibility (for legacyWebMethod computation)
        return true;

    if ((webMethod != null) && webMethod.exclude()) {
        return true;
    }
    /*
    This check is not needed as Impl class is already checked that it is not abstract.
    if (typeElement instanceof TypeElement && method.getModifiers().contains(Modifier.ABSTRACT)) {  // use Kind.equals instead of instanceOf
        builder.processError(method.getPosition(), WebserviceapMessages.WEBSERVICEAP_WEBSERVICE_METHOD_IS_ABSTRACT(typeElement.getQualifiedName(), method.getSimpleName()));
        return false;
    }
    */
    TypeMirror returnType = method.getReturnType();
    if (!isLegalType(returnType)) {
        builder.processError(WebserviceapMessages.WEBSERVICEAP_METHOD_RETURN_TYPE_CANNOT_IMPLEMENT_REMOTE(typeElement.getQualifiedName(),
                method.getSimpleName(),
                returnType), method);
    }
    boolean isOneWay = method.getAnnotation(Oneway.class) != null;
    if (isOneWay && !isValidOneWayMethod(method, typeElement))
        return false;

    SOAPBinding soapBinding = method.getAnnotation(SOAPBinding.class);
    if (soapBinding != null) {
        if (soapBinding.style().equals(SOAPBinding.Style.RPC)) {
            builder.processError(WebserviceapMessages.WEBSERVICEAP_RPC_SOAPBINDING_NOT_ALLOWED_ON_METHOD(typeElement.getQualifiedName(), method.toString()), method);
        }
    }

    int paramIndex = 0;
    for (VariableElement parameter : method.getParameters()) {
        if (!isLegalParameter(parameter, method, typeElement, paramIndex++))
            return false;
    }

    if (!isDocLitWrapped() && soapStyle.equals(SOAPStyle.DOCUMENT)) {
        VariableElement outParam = getOutParameter(method);
        int inParams = getModeParameterCount(method, WebParam.Mode.IN);
        int outParams = getModeParameterCount(method, WebParam.Mode.OUT);
        if (inParams != 1) {
            builder.processError(WebserviceapMessages.WEBSERVICEAP_DOC_BARE_AND_NO_ONE_IN(typeElement.getQualifiedName(), method.toString()), method);
        }
        if (returnType.accept(NO_TYPE_VISITOR, null)) {
            if (outParam == null && !isOneWay) {
                builder.processError(WebserviceapMessages.WEBSERVICEAP_DOC_BARE_NO_OUT(typeElement.getQualifiedName(), method.toString()), method);
            }
            if (outParams != 1) {
                if (!isOneWay && outParams != 0)
                    builder.processError(WebserviceapMessages.WEBSERVICEAP_DOC_BARE_NO_RETURN_AND_NO_OUT(typeElement.getQualifiedName(), method.toString()), method);
            }
        } else {
            if (outParams > 0) {
                builder.processError(WebserviceapMessages.WEBSERVICEAP_DOC_BARE_RETURN_AND_OUT(typeElement.getQualifiedName(), method.toString()), outParam);
            }
        }
    }
    return true;
}
 
源代码20 项目: openjdk-jdk8u   文件: AnnotationProcessorContext.java
public String methodToString(ExecutableElement method) {
    StringBuilder buf = new StringBuilder(method.getSimpleName());
    for (VariableElement param : method.getParameters())
        buf.append(';').append(param.asType());
    return buf.toString();
}