Example usage for org.eclipse.jdt.core.dom ArrayType getDimensions

List of usage examples for org.eclipse.jdt.core.dom ArrayType getDimensions

Introduction

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

Prototype

public int getDimensions() 

Source Link

Document

Returns the number of dimensions in this array type.

Usage

From source file:at.bestsolution.fxide.jdt.corext.dom.ASTFlattener.java

License:Open Source License

@Override
public boolean visit(ArrayCreation node) {
    this.fBuffer.append("new ");//$NON-NLS-1$
    ArrayType at = node.getType();
    int dims = at.getDimensions();
    Type elementType = at.getElementType();
    elementType.accept(this);
    for (Iterator<Expression> it = node.dimensions().iterator(); it.hasNext();) {
        this.fBuffer.append("[");//$NON-NLS-1$
        Expression e = it.next();
        e.accept(this);
        this.fBuffer.append("]");//$NON-NLS-1$
        dims--;//from  w w w .  j  av a2 s . c  o  m
    }
    // add empty "[]" for each extra array dimension
    for (int i = 0; i < dims; i++) {
        this.fBuffer.append("[]");//$NON-NLS-1$
    }
    if (node.getInitializer() != null) {
        node.getInitializer().accept(this);
    }
    return false;
}

From source file:boa.datagen.util.Java8Visitor.java

License:Apache License

protected String typeName(final ArrayType t) {
    String name = typeName(t.getElementType());
    // FIXME JLS8: Deprecated getDimensions() and added dimensions()
    for (int i = 0; i < t.getDimensions(); i++)
        name += "[]";
    return name;//  w  ww  . j  ava2 s .  c o m
}

From source file:coloredide.utils.CopiedNaiveASTFlattener.java

License:Open Source License

public boolean visit(ArrayCreation node) {
    this.buffer.append("new ");//$NON-NLS-1$
    ArrayType at = node.getType();
    int dims = at.getDimensions();
    Type elementType = at.getElementType();
    elementType.accept(this);
    for (Iterator it = node.dimensions().iterator(); it.hasNext();) {
        this.buffer.append("[");//$NON-NLS-1$
        Expression e = (Expression) it.next();
        e.accept(this);
        this.buffer.append("]");//$NON-NLS-1$
        dims--;/*from  w  w w.j ava  2  s.c om*/
    }
    // add empty "[]" for each extra array dimension
    for (int i = 0; i < dims; i++) {
        this.buffer.append("[]");//$NON-NLS-1$
    }
    if (node.getInitializer() != null) {
        node.getInitializer().accept(this);
    }
    return false;
}

From source file:com.google.dart.java2dart.SyntaxTranslator.java

License:Open Source License

@Override
public boolean visit(org.eclipse.jdt.core.dom.ArrayType node) {
    TypeName elementType = translate(node.getElementType());
    int dimensions = node.getDimensions();
    return done(listType(elementType, dimensions));
}

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.
 * /*w ww .java 2s  . c o 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.uci.ics.sourcerer.extractor.ast.ReferenceExtractorVisitor.java

License:Open Source License

@SuppressWarnings("unchecked")
private String getTypeFqn(Type type) {
    if (type == null) {
        logger.log(Level.SEVERE, "Attempt to get type fqn of null type!");
        throw new NullPointerException("Attempt to get type fqn of null type!");
    }//from   w  w  w. j a va  2  s  .  c  o m
    ITypeBinding binding = type.resolveBinding();
    if (binding == null) {
        if (type.isPrimitiveType()) {
            return ((PrimitiveType) type).getPrimitiveTypeCode().toString();
        } else if (type.isSimpleType()) {
            return getUnknownFqn(((SimpleType) type).getName().getFullyQualifiedName());
        } else if (type.isArrayType()) {
            ArrayType arrayType = (ArrayType) type;
            Type elementType = arrayType.getElementType();
            if (elementType == null) {
                return getUnknownFqn(BRACKETS.substring(0, 2 * arrayType.getDimensions()));
            } else {
                return getTypeFqn(elementType) + BRACKETS.substring(0, 2 * arrayType.getDimensions());
            }
        } else if (type.isParameterizedType()) {
            ParameterizedType pType = (ParameterizedType) type;
            StringBuilder fqn = new StringBuilder(getTypeFqn(pType.getType()));
            fqn.append("<");
            boolean isFirst = true;
            for (Type arg : (List<Type>) pType.typeArguments()) {
                if (isFirst) {
                    isFirst = false;
                } else {
                    fqn.append(",");
                }
                try {
                    fqn.append(getTypeFqn(arg));
                } catch (NullPointerException e) {
                    logger.log(Level.WARNING, "Eclipse NPE bug in parametrized type", e);
                    fqn.append(UNKNOWN);
                }
            }
            fqn.append(">");
            return fqn.toString();
        } else if (type.isWildcardType()) {
            WildcardType wType = (WildcardType) type;
            Type bound = wType.getBound();
            if (bound == null) {
                return "<?>";
            } else {
                return "<?" + (wType.isUpperBound() ? "+" : "-") + getTypeFqn(bound) + ">";
            }
        } else {
            logger.log(Level.SEVERE, "Unexpected node type for unresolved type!" + type.toString());
            return UNKNOWN;
        }
    } else {
        return getTypeFqn(binding);
    }
}

From source file:edu.uci.ics.sourcerer.tools.java.extractor.eclipse.ReferenceExtractorVisitor.java

License:Open Source License

private String getErasedTypeFqn(Type type) {
    if (type == null) {
        logger.log(Level.SEVERE, "Attempt to get type fqn of null type!");
        throw new NullPointerException("Attempt to get type fqn of null type!");
    }// w  w w.ja va 2s . co  m
    ITypeBinding binding = safeResolve(type);
    if (binding == null) {
        if (type.isPrimitiveType()) {
            return ((PrimitiveType) type).getPrimitiveTypeCode().toString();
        } else if (type.isSimpleType()) {
            return createUnknownFqn(((SimpleType) type).getName().getFullyQualifiedName());
        } else if (type.isArrayType()) {
            ArrayType arrayType = (ArrayType) type;
            Type elementType = arrayType.getElementType();
            if (elementType == null) {
                return createUnknownFqn(BRACKETS.substring(0, 2 * arrayType.getDimensions()));
            } else {
                return getErasedTypeFqn(elementType) + BRACKETS.substring(0, 2 * arrayType.getDimensions());
            }
        } else if (type.isParameterizedType()) {
            ParameterizedType pType = (ParameterizedType) type;
            return getErasedTypeFqn(pType.getType());
        } else {
            logger.log(Level.SEVERE, "1 - Unexpected node type for unresolved type!" + type.toString());
            return UNKNOWN;
        }
    } else {
        return getErasedTypeFqn(binding);
    }
}

From source file:edu.uci.ics.sourcerer.tools.java.extractor.eclipse.ReferenceExtractorVisitor.java

License:Open Source License

@SuppressWarnings("unchecked")
private String getTypeFqn(Type type) {
    if (type == null) {
        logger.log(Level.SEVERE, "Attempt to get type fqn of null type!");
        throw new NullPointerException("Attempt to get type fqn of null type!");
    }/*from w w w  . j  a va2  s. c o m*/
    ITypeBinding binding = safeResolve(type);
    if (binding == null || binding.isRecovered()) {
        if (type.isPrimitiveType()) {
            return ((PrimitiveType) type).getPrimitiveTypeCode().toString();
        } else if (type.isSimpleType()) {
            return createUnknownFqn(((SimpleType) type).getName().getFullyQualifiedName());
        } else if (type.isArrayType()) {
            ArrayType arrayType = (ArrayType) type;
            Type elementType = arrayType.getElementType();
            if (elementType == null) {
                return createUnknownFqn(BRACKETS.substring(0, 2 * arrayType.getDimensions()));
            } else {
                return getTypeFqn(elementType) + BRACKETS.substring(0, 2 * arrayType.getDimensions());
            }
        } else if (type.isParameterizedType()) {
            ParameterizedType pType = (ParameterizedType) type;
            StringBuilder fqn = new StringBuilder(getTypeFqn(pType.getType()));
            fqn.append("<");
            boolean isFirst = true;
            for (Type arg : (List<Type>) pType.typeArguments()) {
                if (isFirst) {
                    isFirst = false;
                } else {
                    fqn.append(",");
                }
                try {
                    fqn.append(getTypeFqn(arg));
                } catch (NullPointerException e) {
                    logger.log(Level.WARNING, "Eclipse NPE bug in parametrized type", e);
                    fqn.append(UNKNOWN);
                }
            }
            fqn.append(">");
            return fqn.toString();
        } else if (type.isWildcardType()) {
            WildcardType wType = (WildcardType) type;
            Type bound = wType.getBound();
            if (bound == null) {
                return "<?>";
            } else {
                return "<?" + (wType.isUpperBound() ? "+" : "-") + getTypeFqn(bound) + ">";
            }
        } else {
            if (type.isIntersectionType()) {
                IntersectionType iType = (IntersectionType) type;

                List<Type> list_types = iType.types();
                String res = "";
                for (Type tt : list_types) {
                    res += getTypeFqn(tt) + "&";
                }

                res = res.substring(0, res.length() - 1);
                return res;
            } else {
                logger.log(Level.SEVERE, "2 - Unexpected node type for unresolved type!" + type.toString());
                return UNKNOWN;
            }
        }
    } else {
        return getTypeFqn(binding);
    }
}

From source file:java5totext.input.JDTVisitorUtils.java

License:Open Source License

public static void manageBindingRef(NamedElementRef element, org.eclipse.jdt.core.dom.ArrayType type,
        JDTVisitor visitor) {/*from ww  w .  j  a  v  a2  s. c o m*/
    Binding id = JDTDelegateBindingFactory.getInstance().getBindingForArrayType(type);
    ArrayType arrayType = (ArrayType) visitor.globalBindings.getTarget(id.toString());
    if (arrayType == null) {
        arrayType = visitor.getFactory().createArrayType();
        arrayType.setDimensions(type.getDimensions());
        arrayType.setProxy(true);
        arrayType.setName(type.toString());
        if (visitor.getBijectiveMap().get(type.getElementType()) != null) {
            arrayType.setElementType((NamedElementRef) visitor.getBijectiveMap().get(type.getElementType()));
        }
        visitor.getJdtModel().getOrphanTypes().add(arrayType);
        visitor.globalBindings.addTarget(id.toString(), arrayType);
    }
    element.setElement(arrayType);
}

From source file:net.sf.eclipsecs.ui.quickfixes.misc.ArrayTypeStyleQuickfix.java

License:Open Source License

/**
 * {@inheritDoc}/*from  w  w w. j  a  v  a2s . co m*/
 */
protected ASTVisitor handleGetCorrectingASTVisitor(final IRegion lineInfo, final int markerStartOffset) {

    return new ASTVisitor() {

        public boolean visit(VariableDeclarationStatement node) {

            if (containsPosition(node, markerStartOffset)) {

                if (isCStyle(node.fragments())) {

                    int dimensions = 0;

                    List fragments = node.fragments();
                    for (int i = 0, size = fragments.size(); i < size; i++) {
                        VariableDeclaration decl = (VariableDeclaration) fragments.get(i);
                        if (decl.getExtraDimensions() > dimensions) {
                            dimensions = decl.getExtraDimensions();

                        }
                        decl.setExtraDimensions(0);
                    }

                    // wrap current type into ArrayType
                    ArrayType arrayType = createArrayType(node.getType(), dimensions);
                    node.setType(arrayType);

                } else if (isJavaStyle(node.getType())) {

                    int dimensions = ((ArrayType) node.getType()).getDimensions();

                    List fragments = node.fragments();
                    for (int i = 0, size = fragments.size(); i < size; i++) {
                        VariableDeclaration decl = (VariableDeclaration) fragments.get(i);
                        decl.setExtraDimensions(dimensions);
                    }

                    Type elementType = (Type) ASTNode.copySubtree(node.getAST(),
                            ((ArrayType) node.getType()).getElementType());
                    node.setType(elementType);
                }
            }
            return true;
        }

        public boolean visit(SingleVariableDeclaration node) {

            if (containsPosition(node, markerStartOffset)) {
                if (isCStyle(node)) {
                    // wrap the existing type into an array type
                    node.setType(createArrayType(node.getType(), node.getExtraDimensions()));
                    node.setExtraDimensions(0);
                } else if (isJavaStyle(node.getType())) {

                    ArrayType arrayType = (ArrayType) node.getType();
                    Type elementType = (Type) ASTNode.copySubtree(node.getAST(), arrayType.getElementType());

                    node.setType(elementType);
                    node.setExtraDimensions(arrayType.getDimensions());
                }
            }

            return true;
        }

        public boolean visit(FieldDeclaration node) {

            if (containsPosition(node, markerStartOffset)) {

                if (isCStyle(node.fragments())) {

                    int dimensions = 0;

                    List fragments = node.fragments();
                    for (int i = 0, size = fragments.size(); i < size; i++) {
                        VariableDeclaration decl = (VariableDeclaration) fragments.get(i);
                        if (decl.getExtraDimensions() > dimensions) {
                            dimensions = decl.getExtraDimensions();

                        }
                        decl.setExtraDimensions(0);
                    }

                    // wrap current type into ArrayType
                    ArrayType arrayType = createArrayType(node.getType(), dimensions);
                    node.setType(arrayType);
                } else if (isJavaStyle(node.getType())) {

                    int dimensions = ((ArrayType) node.getType()).getDimensions();

                    List fragments = node.fragments();
                    for (int i = 0, size = fragments.size(); i < size; i++) {
                        VariableDeclaration decl = (VariableDeclaration) fragments.get(i);
                        decl.setExtraDimensions(dimensions);
                    }

                    Type elementType = (Type) ASTNode.copySubtree(node.getAST(),
                            ((ArrayType) node.getType()).getElementType());
                    node.setType(elementType);
                }
            }
            return true;
        }

        private boolean isJavaStyle(Type type) {
            return type instanceof ArrayType;
        }

        private boolean isCStyle(VariableDeclaration decl) {
            return decl.getExtraDimensions() > 0;
        }

        private boolean isCStyle(List fragments) {

            Iterator it = fragments.iterator();
            while (it.hasNext()) {
                VariableDeclaration decl = (VariableDeclaration) it.next();
                if (isCStyle(decl)) {
                    return true;
                }
            }
            return false;
        }

        private ArrayType createArrayType(Type componentType, int dimensions) {
            Type type = (Type) ASTNode.copySubtree(componentType.getAST(), componentType);
            ArrayType arrayType = componentType.getAST().newArrayType(type, dimensions);

            return arrayType;
        }
    };
}