Java Code Examples for javax.lang.model.element.VariableElement#asType()

The following examples show how to use javax.lang.model.element.VariableElement#asType() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: Utils.java    From openjdk-jdk9 with GNU General Public License v2.0 6 votes vote down vote up
public String makeSignature(ExecutableElement e, boolean full, boolean ignoreTypeParameters) {
    StringBuilder result = new StringBuilder();
    result.append("(");
    Iterator<? extends VariableElement> iterator = e.getParameters().iterator();
    while (iterator.hasNext()) {
        VariableElement next = iterator.next();
        TypeMirror type = next.asType();
        result.append(getTypeSignature(type, full, ignoreTypeParameters));
        if (iterator.hasNext()) {
            result.append(", ");
        }
    }
    if (e.isVarArgs()) {
        int len = result.length();
        result.replace(len - 2, len, "...");
    }
    result.append(")");
    return result.toString();
}
 
Example 2
Source File: AsyncConverter.java    From netbeans with Apache License 2.0 6 votes vote down vote up
protected boolean isAsync(Element method){
    if ( method instanceof ExecutableElement ){
        ExecutableElement exec = (ExecutableElement)method;
        List<? extends VariableElement> parameters = exec.getParameters();
        for (VariableElement param : parameters) {
            boolean hasAsyncType = false;
            TypeMirror type = param.asType();
            if ( type instanceof DeclaredType ){
                Element paramElement = ((DeclaredType)type).asElement();
                if ( paramElement instanceof TypeElement ){
                    hasAsyncType = ((TypeElement)paramElement).getQualifiedName().
                            contentEquals("javax.ws.rs.container.AsyncResponse");   // NOI18N
                }
            }
            if( hasAsyncType && hasAnnotation(param, 
                    "javax.ws.rs.container.Suspended")){ // NOI18N
                return true;
            }
        }
    }
    return false;
}
 
Example 3
Source File: TypeModeler.java    From openjdk-8 with GNU General Public License v2.0 6 votes vote down vote up
public static TypeMirror getHolderValueType(TypeMirror type, TypeElement defHolder, ProcessingEnvironment env) {
    TypeElement typeElement = getDeclaration(type);
    if (typeElement == null)
        return null;

    if (isSubElement(typeElement, defHolder)) {
        if (type.getKind().equals(TypeKind.DECLARED)) {
            Collection<? extends TypeMirror> argTypes = ((DeclaredType) type).getTypeArguments();
            if (argTypes.size() == 1) {
                return argTypes.iterator().next();
            } else if (argTypes.isEmpty()) {
                VariableElement member = getValueMember(typeElement);
                if (member != null) {
                    return member.asType();
                }
            }
        }
    }
    return null;
}
 
Example 4
Source File: WebBeansModel.java    From netbeans with Apache License 2.0 6 votes vote down vote up
/**
 * Test if variable element is event injection point.
 * 
 * @param element element for check
 * @return true if element is event injection point
 */
public boolean isEventInjectionPoint( VariableElement element )  
{
    TypeMirror elementType = element.asType();
    Element typeElement = getCompilationController().
        getTypes().asElement( elementType);
    if ( typeElement instanceof TypeElement ){
        String typeElementFqn = ((TypeElement)typeElement).getQualifiedName().
            toString();
        if ( WebBeansModelProviderImpl.EVENT_INTERFACE.equals( typeElementFqn )){
            try {
                return isInjectionPoint(element);
            }
            catch(InjectionPointDefinitionError e ){
                return false;
            }
        }
    }
    return false;
}
 
Example 5
Source File: TypeSimplifierTest.java    From RetroFacebook with Apache License 2.0 6 votes vote down vote up
public void testIsCastingUnchecked() {
  TypeElement erasureClass = typeElementOf("Erasure");
  List<VariableElement> fields = ElementFilter.fieldsIn(erasureClass.getEnclosedElements());
  for (VariableElement field : fields) {
    String fieldName = field.getSimpleName().toString();
    boolean expectUnchecked;
    if (fieldName.endsWith("Yes")) {
      expectUnchecked = true;
    } else if (fieldName.endsWith("No")) {
      expectUnchecked = false;
    } else {
      throw new AssertionError("Fields in Erasure class must end with Yes or No: " + fieldName);
    }
    TypeMirror fieldType = field.asType();
    boolean actualUnchecked = TypeSimplifier.isCastingUnchecked(fieldType);
    assertEquals("Unchecked-cast status for " + fieldType, expectUnchecked, actualUnchecked);
  }
}
 
Example 6
Source File: TransformerElement.java    From sqlitemagic with Apache License 2.0 6 votes vote down vote up
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;
}
 
Example 7
Source File: DecoratorsPanel.java    From netbeans with Apache License 2.0 6 votes vote down vote up
@Override
protected void setScope( WebBeansModel model, Element element ){
    TypeElement clazz = (TypeElement)element;
    List<VariableElement> fields = ElementFilter.fieldsIn(
            model.getCompilationController().getElements().getAllMembers( clazz));
    VariableElement delegate = null;
    for (VariableElement field : fields) {
        if( hasDelegate(field,  model.getCompilationController())){
            delegate = field;
            break;
        }
    }
    TypeMirror delegateType = delegate.asType();
    StringBuilder shortName = new StringBuilder();
    StringBuilder fqnName = new StringBuilder();
    fillElementType(delegateType, shortName, fqnName, model.getCompilationController());
    JEditorPane scopeComponent = getScopeComponent();
    if ( showFqns() ){
        scopeComponent.setText( fqnName.toString() );
    }
    else {
        scopeComponent.setText( shortName.toString() );
    }
}
 
Example 8
Source File: RetroWeiboProcessor.java    From SimpleWeibo with Apache License 2.0 6 votes vote down vote up
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 "";
}
 
Example 9
Source File: Bundler.java    From easybundler with Apache License 2.0 6 votes vote down vote up
/**
 * See {@link #matchesArrayListClass(VariableElement, Class, MatchPolicy)}.
 */
private boolean matchesArrayListClass(VariableElement field, String className, MatchPolicy policy) {
    if (!(field.asType() instanceof DeclaredType)) {
        return false;
    }

    // Get generic information
    DeclaredType declaredType = (DeclaredType) field.asType();

    // Check general form
    if (declaredType.getTypeArguments().size() != 1) {
        return false;
    }

    // Ensure that outer type is ArrayList
    TypeElement arrayList = getTypeElementForClass(ArrayList.class);
    TypeMirror erased = environment.getTypeUtils().erasure(declaredType);
    boolean isArrayList = typesMatch(erased, arrayList.asType(), MatchPolicy.ASSIGNABLE);

    // Make sure inner type matches
    TypeMirror innerType = declaredType.getTypeArguments().get(0);
    TypeElement target = getTypeElementForClass(className);
    boolean innerTypeMatches = target != null && typesMatch(innerType, target.asType(), policy);

    return isArrayList && innerTypeMatches;
}
 
Example 10
Source File: JavadocCompletionItem.java    From netbeans with Apache License 2.0 6 votes vote down vote up
public JavadocExecutableItem(CompletionItem jmethod,
        ExecutableElement ee, int substitutionOffset) {
    
    this.delegate = jmethod;
    this.substitutionOffset = substitutionOffset;
    
    this.name = ee.getKind() == ElementKind.METHOD
            ? ee.getSimpleName()
            : ee.getEnclosingElement().getSimpleName();
    
    List<? extends VariableElement> params = ee.getParameters();
    this.paramTypes = new String[params.size()];
    int i = 0;
    for (VariableElement p : params) {
        TypeMirror asType = p.asType();
        this.paramTypes[i++] = resolveTypeName(asType, ee.isVarArgs()).toString();
    }
}
 
Example 11
Source File: TypeModeler.java    From openjdk-jdk9 with GNU General Public License v2.0 6 votes vote down vote up
public static TypeMirror getHolderValueType(TypeMirror type, TypeElement defHolder, ProcessingEnvironment env) {
    TypeElement typeElement = getDeclaration(type);
    if (typeElement == null)
        return null;

    if (isSubElement(typeElement, defHolder)) {
        if (type.getKind().equals(TypeKind.DECLARED)) {
            Collection<? extends TypeMirror> argTypes = ((DeclaredType) type).getTypeArguments();
            if (argTypes.size() == 1) {
                return argTypes.iterator().next();
            } else if (argTypes.isEmpty()) {
                VariableElement member = getValueMember(typeElement);
                if (member != null) {
                    return member.asType();
                }
            }
        }
    }
    return null;
}
 
Example 12
Source File: UseDatabaseGeneratorTest.java    From netbeans with Apache License 2.0 6 votes vote down vote up
private static void checkDatasourceField(TypeElement typeElement, String name) {
    List<VariableElement> elements = ElementFilter.fieldsIn(typeElement.getEnclosedElements());
    VariableElement variableElement = elements.get(0);
    assertTrue(variableElement.getSimpleName().contentEquals(name)); // field name
    DeclaredType declaredType = (DeclaredType) variableElement.asType();
    TypeElement returnTypeElement = (TypeElement) declaredType.asElement();
    assertTrue(returnTypeElement.getQualifiedName().contentEquals("javax.sql.DataSource")); // field type
    AnnotationMirror annotationMirror = variableElement.getAnnotationMirrors().get(0);
    DeclaredType annotationDeclaredType = annotationMirror.getAnnotationType();
    TypeElement annotationTypeElement = (TypeElement) annotationDeclaredType.asElement();
    assertTrue(annotationTypeElement.getQualifiedName().contentEquals("javax.annotation.Resource")); // annotation type
    Map.Entry<? extends ExecutableElement, ? extends AnnotationValue> entry = annotationMirror.getElementValues().entrySet().iterator().next();
    String attributeName = entry.getKey().getSimpleName().toString();
    String attributeValue = (String) entry.getValue().getValue();
    assertEquals("name", attributeName); // attributes
    assertEquals(name, attributeValue);
}
 
Example 13
Source File: OperatorRewriter.java    From j2objc with Apache License 2.0 5 votes vote down vote up
private String getAssignmentFunctionName(
    Assignment node, VariableElement var, boolean isRetainedWith) {
  if (!ElementUtil.isField(var)) {
    return null;
  }
  TypeMirror type = var.asType();
  boolean isPrimitive = type.getKind().isPrimitive();
  boolean isStrong = !isPrimitive && !ElementUtil.isWeakReference(var);
  boolean isVolatile = ElementUtil.isVolatile(var);

  if (isRetainedWith) {
    return isVolatile ? "JreVolatileRetainedWithAssign" : "JreRetainedWithAssign";
  }

  if (isVolatile) {
    // We can't use the "AndConsume" optimization for volatile objects because that might leave
    // the newly created object vulnerable to being deallocated by another thread assigning to the
    // same field.
    return isStrong ? "JreVolatileStrongAssign" : "JreAssignVolatile"
        + (isPrimitive ? NameTable.capitalize(TypeUtil.getName(type)) : "Id");
  }

  if (isStrong && options.useReferenceCounting()) {
    String funcName = "JreStrongAssign";
    Expression retainedRhs = TranslationUtil.retainResult(node.getRightHandSide());
    if (retainedRhs != null) {
      funcName += "AndConsume";
      node.setRightHandSide(retainedRhs);
    }
    return funcName;
  }

  return null;
}
 
Example 14
Source File: JavahTask.java    From openjdk-jdk9 with GNU General Public License v2.0 5 votes vote down vote up
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);
            }
        }
    }
}
 
Example 15
Source File: LoggerGenerator.java    From netbeans with Apache License 2.0 5 votes vote down vote up
@Override
public List<? extends CodeGenerator> create(Lookup context) {
    ArrayList<CodeGenerator> ret = new ArrayList<>();
    JTextComponent component = context.lookup(JTextComponent.class);
    CompilationController controller = context.lookup(CompilationController.class);
    if (component == null || controller == null) {
        return ret;
    }
    TreePath path = context.lookup(TreePath.class);
    path = controller.getTreeUtilities().getPathElementOfKind(TreeUtilities.CLASS_TREE_KINDS, path);
    if (path == null) {
        return ret;
    }
    try {
        controller.toPhase(JavaSource.Phase.ELEMENTS_RESOLVED);
    } catch (IOException ioe) {
        return ret;
    }
    TypeElement typeElement = (TypeElement) controller.getTrees().getElement(path);
    if (typeElement == null || !typeElement.getKind().isClass()) {
        return ret;
    }
    for (VariableElement ve : ElementFilter.fieldsIn(typeElement.getEnclosedElements())) {
        TypeMirror type = ve.asType();
        if (type.getKind() == TypeKind.DECLARED && ((TypeElement)((DeclaredType)type).asElement()).getQualifiedName().contentEquals(Logger.class.getName())) {
            return ret;
        }
    }
    List<ElementNode.Description> descriptions = new ArrayList<>();
    ret.add(new LoggerGenerator(component, ElementNode.Description.create(controller, typeElement, descriptions, false, false)));
    return ret;
}
 
Example 16
Source File: OptionProcessor.java    From bazel with Apache License 2.0 4 votes vote down vote up
private ImmutableList<TypeMirror> getAcceptedConverterReturnTypes(VariableElement optionField)
    throws OptionProcessorException {
  TypeMirror optionType = optionField.asType();
  Option annotation = optionField.getAnnotation(Option.class);
  TypeMirror listType = elementUtils.getTypeElement(List.class.getCanonicalName()).asType();
  // Options that accumulate multiple mentions in an arglist must have type List<T>, where each
  // individual mention has type T. Identify type T to use it for checking the converter's return
  // type.
  if (annotation.allowMultiple()) {
    // Check that the option type is in fact a list.
    if (optionType.getKind() != TypeKind.DECLARED) {
      throw new OptionProcessorException(
          optionField,
          "Option that allows multiple occurrences must be of type %s, but is of type %s",
          listType,
          optionType);
    }
    DeclaredType optionDeclaredType = (DeclaredType) optionType;
    // optionDeclaredType.asElement().asType() gets us from List<actualType> to List<E>, so this
    // is unfortunately necessary.
    if (!typeUtils.isAssignable(optionDeclaredType.asElement().asType(), listType)) {
      throw new OptionProcessorException(
          optionField,
          "Option that allows multiple occurrences must be of type %s, but is of type %s",
          listType,
          optionType);
    }

    // Check that there is only one generic parameter, and store it as the singular option type.
    List<? extends TypeMirror> genericParameters = optionDeclaredType.getTypeArguments();
    if (genericParameters.size() != 1) {
      throw new OptionProcessorException(
          optionField,
          "Option that allows multiple occurrences must be of type %s, "
              + "where E is the type of an individual command-line mention of this option, "
              + "but is of type %s",
          listType,
          optionType);
    }

    // For repeated options, we also accept cases where each option itself contains a list, which
    // are then concatenated into the final single list type. For this reason, we will accept both
    // converters that return the type of a single option, and List<singleOption>, which,
    // incidentally, is the original optionType.
    // Example: --foo=a,b,c --foo=d,e,f could have a final value of type List<Char>,
    //       value {a,b,c,e,d,f}, instead of requiring a final value of type List<List<Char>>
    //       value {{a,b,c},{d,e,f}}
    TypeMirror singularOptionType = genericParameters.get(0);

    return ImmutableList.of(singularOptionType, optionType);
  } else {
    return ImmutableList.of(optionField.asType());
  }
}
 
Example 17
Source File: ApNavigator.java    From openjdk-8 with GNU General Public License v2.0 4 votes vote down vote up
public TypeMirror getFieldType(VariableElement f) {
    return f.asType();
}
 
Example 18
Source File: ApNavigator.java    From TencentKona-8 with GNU General Public License v2.0 4 votes vote down vote up
public TypeMirror getFieldType(VariableElement f) {
    return f.asType();
}
 
Example 19
Source File: OperationProcessor.java    From jpmml-evaluator with GNU Affero General Public License v3.0 4 votes vote down vote up
static
private void createReportingMethod(JDefinedClass clazz, ExecutableElement executableElement, String operation, String initialOperation, JPrimitiveType type){
	JCodeModel codeModel = clazz.owner();

	String name = String.valueOf(executableElement.getSimpleName());

	JMethod method = clazz.method(JMod.PUBLIC, clazz, name);
	method.annotate(Override.class);

	List<JVar> params = new ArrayList<>();

	List<? extends VariableElement> parameterElements = executableElement.getParameters();
	for(VariableElement parameterElement : parameterElements){
		TypeMirror paramType = parameterElement.asType();
		Name paramName = parameterElement.getSimpleName();

		JVar param;

		if((TypeKind.ARRAY).equals(paramType.getKind())){
			ArrayType arrayType = (ArrayType)paramType;

			param = method.varParam(toType(codeModel, arrayType.getComponentType()), String.valueOf(paramName));
		} else

		{
			param = method.param(toType(codeModel, paramType), String.valueOf(paramName));
		}

		params.add(param);
	}

	String valueMethod;

	if((codeModel.DOUBLE).equals(type)){
		valueMethod = "doubleValue";
	} else

	if((codeModel.FLOAT).equals(type)){
		valueMethod = "floatValue";
	} else

	{
		throw new IllegalArgumentException();
	}

	boolean checkChange;

	switch(name){
		case "add":
		case "subtract":
		case "multiply":
		case "divide":
			checkChange = (clazz.name()).endsWith("Value");
			break;
		default:
			checkChange = false;
			break;
	}

	JBlock body = method.body();

	JVar oldValueVar = null;
	if(checkChange){
		oldValueVar = body.decl(type, "oldValue", JExpr.invoke(valueMethod));
	}

	JVar resultVariable = body.decl(clazz, "result", JExpr.cast(clazz, createSuperInvocation(clazz, method)));

	JVar newValueVar = null;
	if(checkChange){
		newValueVar = body.decl(type, "newValue", JExpr.invoke(valueMethod));
	}

	JBlock block = body;
	if(checkChange){
		block = body._if((oldValueVar).ne(newValueVar))._then();
	}

	if(initialOperation != null){
		JConditional ifStatement = block._if(JExpr.invoke("hasExpression"));

		JBlock trueBlock = ifStatement._then();

		trueBlock.add(JExpr.invoke("report").arg(createReportInvocation(clazz, operation, params, type)));

		JBlock falseBlock = ifStatement._else();

		falseBlock.add(JExpr.invoke("report").arg(createReportInvocation(clazz, initialOperation, params, type)));
	} else

	{
		block.add(JExpr.invoke("report").arg(createReportInvocation(clazz, operation, params, type)));
	}

	body._return(resultVariable);
}
 
Example 20
Source File: Reference.java    From jdk8u60 with GNU General Public License v2.0 2 votes vote down vote up
/**
 * Creates a reference from the parameter type
 * and annotations on the parameter.
 */
public Reference(VariableElement param) {
    this(param.asType(), param);
}