Example usage for org.eclipse.jdt.core.dom VariableDeclarationFragment getLength

List of usage examples for org.eclipse.jdt.core.dom VariableDeclarationFragment getLength

Introduction

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

Prototype

public final int getLength() 

Source Link

Document

Returns the length in characters of the original source file indicating where the source fragment corresponding to this node ends.

Usage

From source file:br.uff.ic.gems.resources.ast.Visitor.java

@Override
public boolean visit(FieldDeclaration node) {

    List<VariableDeclarationFragment> fragments = node.fragments();

    for (VariableDeclarationFragment fragment : fragments) {
        int beginLine = cu.getLineNumber(fragment.getStartPosition());
        int endLine = cu.getLineNumber(fragment.getStartPosition() + fragment.getLength());
        int beginColumn = beginColunm(node);
        int endColumn = cu.getColumnNumber(node.getStartPosition() + node.getLength());

        SimpleName name = fragment.getName();

        if (name != null) {
            endLine = cu.getLineNumber(name.getStartPosition() + name.getLength());
            endColumn = cu.getColumnNumber(name.getStartPosition() + name.getLength());
        }/*w w  w. j  a va  2  s  .  c o m*/

        languageConstructs.add(new LanguageConstruct(node.getClass().getSimpleName(), beginLine, endLine,
                beginColumn, endColumn, fragment.getName().getIdentifier()));

    }

    return true;
}

From source file:br.uff.ic.gems.resources.ast.Visitor.java

@Override
public boolean visit(VariableDeclarationExpression node) {

    List<VariableDeclarationFragment> fragments = node.fragments();
    for (VariableDeclarationFragment fragment : fragments) {
        int beginLine = cu.getLineNumber(fragment.getStartPosition());
        int endLine = cu.getLineNumber(fragment.getStartPosition() + fragment.getLength());
        int beginColumn = cu.getColumnNumber(node.getStartPosition());
        int endColumn = cu.getColumnNumber(node.getStartPosition() + node.getLength());

        SimpleName name = fragment.getName();

        if (name != null) {
            endLine = cu.getLineNumber(name.getStartPosition() + name.getLength());
            endColumn = cu.getColumnNumber(name.getStartPosition() + name.getLength());
        }/*from   w  ww  .j a  v a  2  s . c o  m*/

        languageConstructs.add(new LanguageConstruct(node.getClass().getSimpleName(), beginLine, endLine,
                beginColumn, endColumn, fragment.getName().getIdentifier()));
    }

    return true;
}

From source file:br.uff.ic.gems.resources.ast.Visitor.java

@Override
public boolean visit(VariableDeclarationStatement node) {

    List<VariableDeclarationFragment> fragments = node.fragments();

    for (VariableDeclarationFragment fragment : fragments) {
        String identifier = fragment.getName().getIdentifier();
        int beginLine = cu.getLineNumber(fragment.getStartPosition());
        int endLine = cu.getLineNumber(fragment.getStartPosition() + fragment.getLength());
        int beginColumn = cu.getColumnNumber(node.getStartPosition());
        int endColumn = cu.getColumnNumber(node.getStartPosition() + node.getLength());

        SimpleName name = fragment.getName();

        if (name != null) {
            endLine = cu.getLineNumber(name.getStartPosition() + name.getLength());
            endColumn = cu.getColumnNumber(name.getStartPosition() + name.getLength());
        }// w ww.ja  v a 2s .  c om

        languageConstructs.add(new LanguageConstruct(node.getClass().getSimpleName(), beginLine, endLine,
                beginColumn, endColumn, identifier));

    }

    return true;
}

From source file:com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.java

License:Open Source License

/**
 * //from  w ww.  java  2  s . co  m
 * @param n
 * @param bodyDecls
 * @param enumConstants
 * @param typeBinding
 * @param name Used in creating default constructor, and passed into new ClassEntity()
 * @param context
 * @return
 */
private CAstEntity createClassDeclaration(ASTNode n, List/* <BodyDeclaration> */ bodyDecls,
        List/* EnumConstantDeclaration */ enumConstants, ITypeBinding typeBinding, String name, int modifiers,
        boolean isInterface, boolean isAnnotation, WalkContext context) {
    final List<CAstEntity> memberEntities = new ArrayList<CAstEntity>();

    // find and collect all initializers (type Initializer) and field initializers (type VariableDeclarationFragment).
    // instance initializer code will be inserted into each constructors.
    // all static initializer code will be grouped together in its own entity.
    ArrayList<ASTNode> inits = new ArrayList<ASTNode>();
    ArrayList<ASTNode> staticInits = new ArrayList<ASTNode>();

    if (enumConstants != null) {
        for (Object decl : enumConstants) {
            EnumConstantDeclaration ecd = (EnumConstantDeclaration) decl;
            staticInits.add(ecd); // always (implicitly) static,final (actually, no modifiers allowed)
        }
    }

    for (Object decl : bodyDecls) {
        if (decl instanceof Initializer) {
            Initializer initializer = (Initializer) decl;
            boolean isStatic = ((initializer.getModifiers() & Modifier.STATIC) != 0);
            (isStatic ? staticInits : inits).add(initializer);
        } else if (decl instanceof FieldDeclaration) {
            FieldDeclaration fd = (FieldDeclaration) decl;

            for (Object f : fd.fragments()) {
                VariableDeclarationFragment frag = (VariableDeclarationFragment) f;
                if (frag.getInitializer() != null) {
                    boolean isStatic = ((fd.getModifiers() & Modifier.STATIC) != 0);
                    (isStatic ? staticInits : inits).add(frag);
                }
            }
        }
    }

    // process entities. initializers will be folded in here.
    if (enumConstants != null) {
        for (Object decl : enumConstants) {
            memberEntities.add(visit((EnumConstantDeclaration) decl, context));
        }
    }

    for (Object d : bodyDecls) {
        BodyDeclaration decl = (BodyDeclaration) d;
        if (decl instanceof FieldDeclaration) {
            FieldDeclaration fieldDecl = (FieldDeclaration) decl;
            Collection<CAstQualifier> quals = JDT2CAstUtils.mapModifiersToQualifiers(fieldDecl.getModifiers(),
                    false, false);
            for (Object f : fieldDecl.fragments()) {
                VariableDeclarationFragment fieldFrag = (VariableDeclarationFragment) f;
                IVariableBinding fieldBinding = fieldFrag.resolveBinding();
                memberEntities
                        .add(new FieldEntity(fieldFrag.getName().getIdentifier(), fieldBinding.getType(), quals,
                                makePosition(fieldFrag.getStartPosition(),
                                        fieldFrag.getStartPosition() + fieldFrag.getLength()),
                                handleAnnotations(fieldBinding)));
            }
        } else if (decl instanceof Initializer) {
            // Initializers are inserted into constructors when making constructors.
        } else if (decl instanceof MethodDeclaration) {
            MethodDeclaration metDecl = (MethodDeclaration) decl;

            if (typeBinding.isEnum() && metDecl.isConstructor())
                memberEntities.add(createEnumConstructorWithParameters(metDecl.resolveBinding(), metDecl,
                        context, inits, metDecl));
            else {
                memberEntities.add(visit(metDecl, typeBinding, context, inits));

                // /////////////// Java 1.5 "overridden with subtype" thing (covariant return type) ///////////
                Collection<IMethodBinding> overriddenMets = JDT2CAstUtils
                        .getOverriddenMethod(metDecl.resolveBinding());
                if (overriddenMets != null) {
                    for (IMethodBinding overridden : overriddenMets)
                        if (!JDT2CAstUtils.sameErasedSignatureAndReturnType(metDecl.resolveBinding(),
                                overridden))
                            memberEntities.add(makeSyntheticCovariantRedirect(metDecl, metDecl.resolveBinding(),
                                    overridden, context));
                }
            }
        } else if (decl instanceof AbstractTypeDeclaration) {
            memberEntities.add(visit((AbstractTypeDeclaration) decl, context));
        } else if (decl instanceof AnnotationTypeMemberDeclaration) {
            // TODO: need to decide what to do with these
        } else {
            Assertions.UNREACHABLE("BodyDeclaration not Field, Initializer, or Method");
        }
    }

    // add default constructor(s) if necessary
    // most default constructors have no parameters; however, those created by anonymous classes will have parameters
    // (they just call super with those parameters)
    for (Object m : typeBinding.getDeclaredMethods()) {
        IMethodBinding met = (IMethodBinding) m;
        if (met.isDefaultConstructor()) {
            if (typeBinding.isEnum())
                memberEntities.add(createEnumConstructorWithParameters(met, n, context, inits, null));
            else if (met.getParameterTypes().length > 0)
                memberEntities.add(createDefaultConstructorWithParameters(met, n, context, inits));
            else
                memberEntities.add(createDefaultConstructor(name, typeBinding, context, inits, n));
        }
    }

    if (typeBinding.isEnum() && !typeBinding.isAnonymous())
        doEnumHiddenEntities(typeBinding, staticInits, memberEntities, context);

    // collect static inits
    if (!staticInits.isEmpty()) {
        Map<CAstNode, CAstEntity> childEntities = HashMapFactory.make();
        final MethodContext newContext = new MethodContext(context, childEntities);
        // childEntities is the same one as in the ProcedureEntity. later visit(New), etc. may add to this.

        CAstNode[] bodyNodes = new CAstNode[staticInits.size()];
        for (int i = 0; i < staticInits.size(); i++)
            bodyNodes[i] = visitFieldInitNode(staticInits.get(i), newContext);
        CAstNode staticInitAst = makeNode(newContext, fFactory, n, CAstNode.BLOCK_STMT, bodyNodes);
        memberEntities.add(new ProcedureEntity(staticInitAst, typeBinding, childEntities, newContext, null));
    }

    Collection<CAstQualifier> quals = JDT2CAstUtils.mapModifiersToQualifiers(modifiers, isInterface,
            isAnnotation);

    Set<CAstAnnotation> annotations = handleAnnotations(typeBinding);

    return new ClassEntity(typeBinding, name, quals, memberEntities, makePosition(n), annotations);
}

From source file:lang.java.jdt.internal.FindIFields.java

License:Open Source License

@Override
public boolean visit(VariableDeclarationFragment node) {
    if (fieldOffsetsFromLoc.contains(VF.integer(node.getParent().getStartPosition()))) {
        ICompilationUnit icu = JavaCore.createCompilationUnitFrom(file);
        try {//www . j  a  v a 2s  .  co  m
            IJavaElement fieldElement = icu.getElementAt(node.getStartPosition());
            if (fieldElement != null && fieldElement instanceof IField) {
                fieldSet.add((IField) fieldElement);
            }
        } catch (JavaModelException e) {
            ISourceLocation pos = VF.sourceLocation(loc.getURI(), node.getStartPosition(), node.getLength());
            throw new Throw(VF.string("Error during field find visit: " + e.getMessage()), pos, null);
        }
    }
    return true;
}