Example usage for org.eclipse.jdt.core.dom ASTNode WILDCARD_TYPE

List of usage examples for org.eclipse.jdt.core.dom ASTNode WILDCARD_TYPE

Introduction

In this page you can find the example usage for org.eclipse.jdt.core.dom ASTNode WILDCARD_TYPE.

Prototype

int WILDCARD_TYPE

To view the source code for org.eclipse.jdt.core.dom ASTNode WILDCARD_TYPE.

Click Source Link

Document

Node type constant indicating a node of type WildcardType.

Usage

From source file:de.akra.idocit.java.services.ReflectionHelper.java

License:Apache License

/**
 * Returns the identifier from the {@link Type} depending on the containing type.
 * //from  ww w. j  av a  2 s .co  m
 * @param type
 *            [SOURCE]
 * 
 * @return [OBJECT]
 * @see Type
 * @thematicgrid Extracting Operations
 */
public static String extractIdentifierFrom(Type type) {
    switch (type.getNodeType()) {
    case ASTNode.PRIMITIVE_TYPE: {
        PrimitiveType primitiveType = (PrimitiveType) type;
        return primitiveType.getPrimitiveTypeCode().toString();
    }
    case ASTNode.ARRAY_TYPE: {
        ArrayType arrayType = (ArrayType) type;
        String name = extractIdentifierFrom(arrayType.getElementType());
        StringBuffer identifier = new StringBuffer(name);

        for (int i = 0; i < arrayType.getDimensions(); i++) {
            identifier.append("[]");
        }
        return identifier.toString();
    }
    case ASTNode.SIMPLE_TYPE: {
        SimpleType simpleType = (SimpleType) type;
        return simpleType.getName().getFullyQualifiedName();
    }
    case ASTNode.QUALIFIED_TYPE: {
        QualifiedType qType = (QualifiedType) type;
        return extractIdentifierFrom(qType.getQualifier()) + "." + qType.getName().getIdentifier();
    }
    case ASTNode.PARAMETERIZED_TYPE: {
        ParameterizedType paramType = (ParameterizedType) type;
        StringBuffer identifier = new StringBuffer(extractIdentifierFrom(paramType.getType()));
        identifier.append('<');

        @SuppressWarnings("unchecked")
        Iterator<Type> iterTypeArgs = (Iterator<Type>) paramType.typeArguments().iterator();
        while (iterTypeArgs.hasNext()) {
            Type typeArg = iterTypeArgs.next();
            identifier.append(extractIdentifierFrom(typeArg));
            if (iterTypeArgs.hasNext()) {
                identifier.append(',');
            }
        }

        identifier.append('>');
        return identifier.toString();
    }
    case ASTNode.WILDCARD_TYPE: {
        WildcardType wildcard = (WildcardType) type;
        String identifier = "? extends ";
        if (!wildcard.isUpperBound()) {
            identifier = "? super ";
        }
        return identifier + extractIdentifierFrom(wildcard.getBound());
    }
    }
    return SignatureElement.ANONYMOUS_IDENTIFIER;
}

From source file:edu.brown.cs.bubbles.rebase.java.RebaseJavaElider.java

License:Open Source License

private String getTypeFromContext(ASTNode n) {
    ASTNode p = null;//w w w .  j ava2 s  . c  om

    while (n != null) {
        switch (n.getNodeType()) {
        case ASTNode.SIMPLE_NAME:
        case ASTNode.QUALIFIED_NAME:
            break;
        case ASTNode.SIMPLE_TYPE:
        case ASTNode.QUALIFIED_TYPE:
        case ASTNode.WILDCARD_TYPE:
            return "TYPE";
        case ASTNode.METHOD_INVOCATION:
            if (p != null && p.getLocationInParent() == MethodInvocation.NAME_PROPERTY)
                return "CALL";
            else
                return null;
        default:
            return null;
        }
        p = n;
        n = n.getParent();
    }

    return null;
}

From source file:org.autorefactor.refactoring.ASTHelper.java

License:Open Source License

/**
 * Returns whether the two provided nodes structurally match.
 *
 * @param matcher the AST matcher/*from  w w w  . ja va2s .  c  om*/
 * @param node1 the first node to compare
 * @param node2 the second node to compare
 * @return true if the two provided nodes structurally match, false otherwise
 */
public static boolean match(ASTMatcher matcher, ASTNode node1, ASTNode node2) {
    if (sameClass(node1, node2)) {
        // FIXME JNR implement all expressions
        // TODO JNR
        // can we match "this.ast" and the unqualified "ast" for example?
        // can we match "MyClass.CONSTANT" and the unqualified "CONSTANT" for example?
        // can we use IVariableBindings to compare them?
        switch (node1.getNodeType()) {
        case ASTNode.ANNOTATION_TYPE_DECLARATION:
            return matcher.match((AnnotationTypeDeclaration) node1, node2);
        case ASTNode.ANNOTATION_TYPE_MEMBER_DECLARATION:
            return matcher.match((AnnotationTypeMemberDeclaration) node1, node2);
        case ASTNode.ANONYMOUS_CLASS_DECLARATION:
            return matcher.match((AnonymousClassDeclaration) node1, node2);
        case ASTNode.ARRAY_ACCESS:
            return matcher.match((ArrayAccess) node1, node2);
        case ASTNode.ARRAY_CREATION:
            return matcher.match((ArrayCreation) node1, node2);
        case ASTNode.ARRAY_INITIALIZER:
            return matcher.match((ArrayInitializer) node1, node2);
        case ASTNode.ARRAY_TYPE:
            return matcher.match((ArrayType) node1, node2);
        case ASTNode.ASSERT_STATEMENT:
            return matcher.match((AssertStatement) node1, node2);
        case ASTNode.ASSIGNMENT:
            return matcher.match((Assignment) node1, node2);
        case ASTNode.BLOCK:
            return matcher.match((Block) node1, node2);
        case ASTNode.BLOCK_COMMENT:
            return matcher.match((BlockComment) node1, node2);
        case ASTNode.BOOLEAN_LITERAL:
            return matcher.match((BooleanLiteral) node1, node2);
        case ASTNode.BREAK_STATEMENT:
            return matcher.match((BreakStatement) node1, node2);
        case ASTNode.CAST_EXPRESSION:
            return matcher.match((CastExpression) node1, node2);
        case ASTNode.CATCH_CLAUSE:
            return matcher.match((CatchClause) node1, node2);
        case ASTNode.CHARACTER_LITERAL:
            return matcher.match((CharacterLiteral) node1, node2);
        case ASTNode.CLASS_INSTANCE_CREATION:
            return matcher.match((ClassInstanceCreation) node1, node2);
        case ASTNode.COMPILATION_UNIT:
            return matcher.match((CompilationUnit) node1, node2);
        case ASTNode.CONDITIONAL_EXPRESSION:
            return matcher.match((ConditionalExpression) node1, node2);
        case ASTNode.CONSTRUCTOR_INVOCATION:
            return matcher.match((ConstructorInvocation) node1, node2);
        case ASTNode.CONTINUE_STATEMENT:
            return matcher.match((ContinueStatement) node1, node2);
        case ASTNode.DO_STATEMENT:
            return matcher.match((DoStatement) node1, node2);
        case ASTNode.EMPTY_STATEMENT:
            return matcher.match((EmptyStatement) node1, node2);
        case ASTNode.ENHANCED_FOR_STATEMENT:
            return matcher.match((EnhancedForStatement) node1, node2);
        case ASTNode.ENUM_DECLARATION:
            return matcher.match((EnumDeclaration) node1, node2);
        case ASTNode.ENUM_CONSTANT_DECLARATION:
            return matcher.match((EnumConstantDeclaration) node1, node2);
        case ASTNode.EXPRESSION_STATEMENT:
            return matcher.match((ExpressionStatement) node1, node2);
        case ASTNode.FIELD_ACCESS:
            return matcher.match((FieldAccess) node1, node2);
        case ASTNode.FIELD_DECLARATION:
            return matcher.match((FieldDeclaration) node1, node2);
        case ASTNode.FOR_STATEMENT:
            return matcher.match((ForStatement) node1, node2);
        case ASTNode.IF_STATEMENT:
            return matcher.match((IfStatement) node1, node2);
        case ASTNode.IMPORT_DECLARATION:
            return matcher.match((ImportDeclaration) node1, node2);
        case ASTNode.INFIX_EXPRESSION:
            return matcher.match((InfixExpression) node1, node2);
        case ASTNode.INITIALIZER:
            return matcher.match((Initializer) node1, node2);
        case ASTNode.INSTANCEOF_EXPRESSION:
            return matcher.match((InstanceofExpression) node1, node2);
        case ASTNode.JAVADOC:
            return matcher.match((Javadoc) node1, node2);
        case ASTNode.LABELED_STATEMENT:
            return matcher.match((LabeledStatement) node1, node2);
        case ASTNode.LINE_COMMENT:
            return matcher.match((LineComment) node1, node2);
        case ASTNode.MARKER_ANNOTATION:
            return matcher.match((MarkerAnnotation) node1, node2);
        case ASTNode.MEMBER_REF:
            return matcher.match((MemberRef) node1, node2);
        case ASTNode.MEMBER_VALUE_PAIR:
            return matcher.match((MemberValuePair) node1, node2);
        case ASTNode.METHOD_DECLARATION:
            return matcher.match((MethodDeclaration) node1, node2);
        case ASTNode.METHOD_INVOCATION:
            return matcher.match((MethodInvocation) node1, node2);
        case ASTNode.METHOD_REF:
            return matcher.match((MethodRef) node1, node2);
        case ASTNode.METHOD_REF_PARAMETER:
            return matcher.match((MethodRefParameter) node1, node2);
        case ASTNode.MODIFIER:
            return matcher.match((Modifier) node1, node2);
        case ASTNode.NORMAL_ANNOTATION:
            return matcher.match((NormalAnnotation) node1, node2);
        case ASTNode.NULL_LITERAL:
            return matcher.match((NullLiteral) node1, node2);
        case ASTNode.NUMBER_LITERAL:
            return matcher.match((NumberLiteral) node1, node2);
        case ASTNode.PACKAGE_DECLARATION:
            return matcher.match((PackageDeclaration) node1, node2);
        case ASTNode.PARAMETERIZED_TYPE:
            return matcher.match((ParameterizedType) node1, node2);
        case ASTNode.PARENTHESIZED_EXPRESSION:
            return matcher.match((ParenthesizedExpression) node1, node2);
        case ASTNode.POSTFIX_EXPRESSION:
            return matcher.match((PostfixExpression) node1, node2);
        case ASTNode.PREFIX_EXPRESSION:
            return matcher.match((PrefixExpression) node1, node2);
        case ASTNode.PRIMITIVE_TYPE:
            return matcher.match((PrimitiveType) node1, node2);
        case ASTNode.QUALIFIED_NAME:
            return matcher.match((QualifiedName) node1, node2);
        case ASTNode.QUALIFIED_TYPE:
            return matcher.match((QualifiedType) node1, node2);
        case ASTNode.RETURN_STATEMENT:
            return matcher.match((ReturnStatement) node1, node2);
        case ASTNode.SIMPLE_NAME:
            return matcher.match((SimpleName) node1, node2);
        case ASTNode.SIMPLE_TYPE:
            return matcher.match((SimpleType) node1, node2);
        case ASTNode.SINGLE_MEMBER_ANNOTATION:
            return matcher.match((SingleMemberAnnotation) node1, node2);
        case ASTNode.SINGLE_VARIABLE_DECLARATION:
            return matcher.match((SingleVariableDeclaration) node1, node2);
        case ASTNode.STRING_LITERAL:
            return matcher.match((StringLiteral) node1, node2);
        case ASTNode.SUPER_CONSTRUCTOR_INVOCATION:
            return matcher.match((SuperConstructorInvocation) node1, node2);
        case ASTNode.SUPER_FIELD_ACCESS:
            return matcher.match((SuperFieldAccess) node1, node2);
        case ASTNode.SUPER_METHOD_INVOCATION:
            return matcher.match((SuperMethodInvocation) node1, node2);
        case ASTNode.SWITCH_CASE:
            return matcher.match((SwitchCase) node1, node2);
        case ASTNode.SWITCH_STATEMENT:
            return matcher.match((SwitchStatement) node1, node2);
        case ASTNode.SYNCHRONIZED_STATEMENT:
            return matcher.match((SynchronizedStatement) node1, node2);
        case ASTNode.TAG_ELEMENT:
            return matcher.match((TagElement) node1, node2);
        case ASTNode.TEXT_ELEMENT:
            return matcher.match((TextElement) node1, node2);
        case ASTNode.THIS_EXPRESSION:
            return matcher.match((ThisExpression) node1, node2);
        case ASTNode.THROW_STATEMENT:
            return matcher.match((ThrowStatement) node1, node2);
        case ASTNode.TRY_STATEMENT:
            return matcher.match((TryStatement) node1, node2);
        case ASTNode.TYPE_DECLARATION:
            return matcher.match((TypeDeclaration) node1, node2);
        case ASTNode.TYPE_DECLARATION_STATEMENT:
            return matcher.match((TypeDeclarationStatement) node1, node2);
        case ASTNode.TYPE_LITERAL:
            return matcher.match((TypeLiteral) node1, node2);
        case ASTNode.TYPE_PARAMETER:
            return matcher.match((TypeParameter) node1, node2);
        case ASTNode.UNION_TYPE:
            return matcher.match((UnionType) node1, node2);
        case ASTNode.VARIABLE_DECLARATION_EXPRESSION:
            return matcher.match((VariableDeclarationExpression) node1, node2);
        case ASTNode.VARIABLE_DECLARATION_FRAGMENT:
            return matcher.match((VariableDeclarationFragment) node1, node2);
        case ASTNode.VARIABLE_DECLARATION_STATEMENT:
            return matcher.match((VariableDeclarationStatement) node1, node2);
        case ASTNode.WHILE_STATEMENT:
            return matcher.match((WhileStatement) node1, node2);
        case ASTNode.WILDCARD_TYPE:
            return matcher.match((WildcardType) node1, node2);
        default:
            throw new NotImplementedException(node1);
        }
    }
    return false;
}

From source file:org.eclipse.recommenders.rcp.utils.ASTNodeUtils.java

License:Open Source License

/**
 * Returns the simple name of a given class type, for primitive types their source names "int", "long" etc., for
 * arrays it returns the element type of the array, for wildcards their bound type, and for union types something
 * not meaningful.//w  w  w .ja v a  2 s .  c  om
 */
private static String toSimpleName(Type type) {
    SimpleName name;
    switch (type.getNodeType()) {
    case ASTNode.SIMPLE_TYPE: {
        SimpleType t = cast(type);
        name = stripQualifier(t.getName());
        break;
    }
    case ASTNode.QUALIFIED_TYPE: {
        QualifiedType t = cast(type);
        name = stripQualifier(t.getName());
        break;
    }
    case ASTNode.PARAMETERIZED_TYPE: {
        ParameterizedType t = cast(type);
        return toSimpleName(t.getType());
    }
    case ASTNode.PRIMITIVE_TYPE: {
        PrimitiveType t = cast(type);
        return t.getPrimitiveTypeCode().toString();
    }
    case ASTNode.WILDCARD_TYPE: {
        WildcardType t = cast(type);
        return toSimpleName(t.getBound());
    }
    case ASTNode.UNION_TYPE: {
        // TODO: that will probably not work with any name matching...
        UnionType t = cast(type);
        return "UnionType" + t.types().toString(); //$NON-NLS-1$
    }
    case ASTNode.ARRAY_TYPE: {
        ArrayType t = cast(type);
        return toSimpleName(t.getElementType()) + repeat("[]", t.getDimensions()); //$NON-NLS-1$
    }
    default:
        throw throwUnreachable("No support for type '%s'", type); //$NON-NLS-1$
    }

    return name.getIdentifier();
}

From source file:org.eclipse.recommenders.utils.rcp.ast.ASTNodeUtils.java

License:Open Source License

/**
 * Returns the simple name of a given class type, for primitive types their source names "int", "long" etc., for
 * arrays it returns the element type of the array, for wildcards their bound type, and for union types something
 * not meaningful.//from w w w. j  a va  2 s.co m
 */
private static String toSimpleName(Type type) {
    SimpleName name;
    switch (type.getNodeType()) {
    case ASTNode.SIMPLE_TYPE: {
        SimpleType t = cast(type);
        name = stripQualifier(t.getName());
        break;
    }
    case ASTNode.QUALIFIED_TYPE: {
        QualifiedType t = cast(type);
        name = stripQualifier(t.getName());
        break;
    }
    case ASTNode.PARAMETERIZED_TYPE: {
        ParameterizedType t = cast(type);
        return toSimpleName(t.getType());
    }
    case ASTNode.PRIMITIVE_TYPE: {
        PrimitiveType t = cast(type);
        return t.getPrimitiveTypeCode().toString();
    }
    case ASTNode.WILDCARD_TYPE: {
        WildcardType t = cast(type);
        return toSimpleName(t.getBound());
    }
    case ASTNode.UNION_TYPE: {
        // TODO: that will probably not work with any name matching...
        UnionType t = cast(type);
        return "UnionType" + t.types().toString();
    }
    case ASTNode.ARRAY_TYPE: {
        ArrayType t = cast(type);
        return toSimpleName(t.getElementType()) + repeat("[]", t.getDimensions());
    }
    default:
        throw throwUnreachable("no support for type '%s'", type);
    }

    return name.getIdentifier();
}