Example usage for org.eclipse.jdt.core.dom ASTParser K_CLASS_BODY_DECLARATIONS

List of usage examples for org.eclipse.jdt.core.dom ASTParser K_CLASS_BODY_DECLARATIONS

Introduction

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

Prototype

int K_CLASS_BODY_DECLARATIONS

To view the source code for org.eclipse.jdt.core.dom ASTParser K_CLASS_BODY_DECLARATIONS.

Click Source Link

Document

Kind constant used to request that the source be parsed as a sequence of class body declarations.

Usage

From source file:com.bsiag.eclipse.jdt.java.formatter.DefaultCodeFormatter.java

License:Open Source License

private ASTNode parseSourceCode(int kind) {
    ASTParser parser = ASTParser.newParser(AST.JLS8);
    Map<String, String> parserOptions = JavaCore.getOptions();
    parserOptions.put(CompilerOptions.OPTION_Source, this.sourceLevel);
    parser.setCompilerOptions(parserOptions);

    switch (kind & K_MASK) {
    case K_COMPILATION_UNIT:
        return parseSourceCode(parser, ASTParser.K_COMPILATION_UNIT, true);
    case K_CLASS_BODY_DECLARATIONS:
        return parseSourceCode(parser, ASTParser.K_CLASS_BODY_DECLARATIONS, false);
    case K_STATEMENTS:
        return parseSourceCode(parser, ASTParser.K_STATEMENTS, false);
    case K_EXPRESSION:
        return parseSourceCode(parser, ASTParser.K_EXPRESSION, false);
    case K_UNKNOWN:
        int[] parserModes = { ASTParser.K_COMPILATION_UNIT, ASTParser.K_EXPRESSION,
                ASTParser.K_CLASS_BODY_DECLARATIONS, ASTParser.K_STATEMENTS };
        for (int parserMode : parserModes) {
            ASTNode astNode = parseSourceCode(parser, parserMode, false);
            if (astNode != null)
                return astNode;
            parser.setCompilerOptions(parserOptions); // parser loses compiler options after every use
        }//from  w w w.  j  a v a 2 s .co m
        return null;
    default:
        throw new IllegalArgumentException();
    }
}

From source file:com.crispico.flower.mp.codesync.code.java.adapter.JavaAbstractAstNodeModelAdapter.java

License:Open Source License

protected void setJavaDoc(Object element, Object docComment) {
    if (element instanceof BodyDeclaration) {
        BodyDeclaration node = (BodyDeclaration) element;
        ASTParser parser = ASTParser.newParser(AST.JLS4);
        parser.setKind(ASTParser.K_CLASS_BODY_DECLARATIONS);
        parser.setSource(("/** " + docComment + "*/ int x;").toCharArray());
        TypeDeclaration type = (TypeDeclaration) parser.createAST(null);
        BodyDeclaration x = (BodyDeclaration) type.bodyDeclarations().get(0);
        Javadoc javadoc = x.getJavadoc();
        node.setJavadoc((Javadoc) ASTNode.copySubtree(node.getAST(), javadoc));
    }/*from   ww w .j av a2 s .  com*/
}

From source file:com.google.googlejavaformat.java.GoogleJavaFormatter.java

License:Apache License

/** Runs the Google Java formatter on the given source, with only the given ranges specified. */
private TextEdit formatInternal(int kind, String source, IRegion[] regions, int initialIndent) {
    try {/* w  w  w.j a  v  a 2 s  .  c om*/
        boolean includeComments = (kind & CodeFormatter.F_INCLUDE_COMMENTS) == CodeFormatter.F_INCLUDE_COMMENTS;
        kind &= ~CodeFormatter.F_INCLUDE_COMMENTS;
        SnippetKind snippetKind;
        switch (kind) {
        case ASTParser.K_EXPRESSION:
            snippetKind = SnippetKind.EXPRESSION;
            break;
        case ASTParser.K_STATEMENTS:
            snippetKind = SnippetKind.STATEMENTS;
            break;
        case ASTParser.K_CLASS_BODY_DECLARATIONS:
            snippetKind = SnippetKind.CLASS_BODY_DECLARATIONS;
            break;
        case ASTParser.K_COMPILATION_UNIT:
            snippetKind = SnippetKind.COMPILATION_UNIT;
            break;
        default:
            throw new IllegalArgumentException(String.format("Unknown snippet kind: %d", kind));
        }
        List<Replacement> replacements = new SnippetFormatter().format(snippetKind, source,
                rangesFromRegions(regions), initialIndent, includeComments);
        if (idempotent(source, regions, replacements)) {
            // Do not create edits if there's no diff.
            return null;
        }
        // Convert replacements to text edits.
        return editFromReplacements(replacements);
    } catch (IllegalArgumentException | FormatterException exception) {
        // Do not format on errors.
        return null;
    }
}

From source file:com.kodebeagle.javaparser.JavaASTParser.java

License:Apache License

/**
 * Return an ASTNode given the content/*  w ww. ja  v  a2 s  .c  o  m*/
 *
 * @param content
 * @return
 */
public final ASTNode getASTNode(final char[] content, final ParseType parseType) {
    final ASTParser parser = ASTParser.newParser(AST.JLS8);
    final int astKind;
    switch (parseType) {
    case CLASS_BODY:
    case METHOD:
        astKind = ASTParser.K_CLASS_BODY_DECLARATIONS;
        break;
    case COMPILATION_UNIT:
        astKind = ASTParser.K_COMPILATION_UNIT;
        break;
    case EXPRESSION:
        astKind = ASTParser.K_EXPRESSION;
        break;
    case STATEMENTS:
        astKind = ASTParser.K_STATEMENTS;
        break;
    default:
        astKind = ASTParser.K_COMPILATION_UNIT;
    }
    parser.setKind(astKind);

    final Map<String, String> options = new Hashtable<String, String>();
    options.put(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, JavaCore.VERSION_1_8);
    options.put(JavaCore.COMPILER_SOURCE, JavaCore.VERSION_1_8);
    if (useJavadocs) {
        options.put(JavaCore.COMPILER_DOC_COMMENT_SUPPORT, JavaCore.ENABLED);
    }
    parser.setCompilerOptions(options);
    parser.setSource(content);
    parser.setResolveBindings(useBindings);
    parser.setBindingsRecovery(useBindings);
    parser.setStatementsRecovery(true);

    if (parseType != ParseType.METHOD) {
        return parser.createAST(null);
    } else {
        final ASTNode cu = parser.createAST(null);
        return getFirstMethodDeclaration(cu);
    }
}

From source file:de.akra.idocit.java.ui.JavaEditorSelectionListener.java

License:Apache License

/**
 * Collect assigned ThematicRoles from the method and it's parents (classes,
 * interfaces, enumerations) and find the reference ThematicGrid.
 * // w  w  w.ja v a 2s.c  o  m
 * @param method
 *            [SOURCE]
 * @throws Exception
 */
private RecommendedGridsViewSelection prepareViewSelection(final IMethod method) throws Exception {
    final AbsJavadocParser javadocParser = JavaParser.getJavadocParser();
    final List<Addressee> addressees = ServiceManager.getInstance().getPersistenceService()
            .loadConfiguredAddressees();
    final List<ThematicRole> roles = ServiceManager.getInstance().getPersistenceService().loadThematicRoles();

    final RecommendedGridsViewSelection selection = new RecommendedGridsViewSelection();
    selection.setOperationIdentifier(method.getElementName());

    final Set<ThematicRole> assignedThematicRoles = new TreeSet<ThematicRole>();
    selection.setAssignedThematicRoles(assignedThematicRoles);

    /*
     * Collect documentations from method
     */
    final String methodSource = extractCodeSnippetOf(method);
    final ASTNode node = parseCodeSnippet(methodSource.toCharArray(), ASTParser.K_CLASS_BODY_DECLARATIONS);

    if ((node.getNodeType() == ASTNode.TYPE_DECLARATION || node.getNodeType() == ASTNode.ENUM_DECLARATION)) {
        final TypeDeclaration typeDeclaration = (TypeDeclaration) node;
        @SuppressWarnings("unchecked")
        final List<BodyDeclaration> bodyDeclarations = (List<BodyDeclaration>) typeDeclaration
                .bodyDeclarations();

        // only one method is parsed
        if (bodyDeclarations.size() == 1) {
            final BodyDeclaration bodyDeclaration = bodyDeclarations.get(0);
            if (bodyDeclaration.getNodeType() == ASTNode.METHOD_DECLARATION
                    && bodyDeclaration.getJavadoc() != null) {
                selection.setReferenceThematicGridName(
                        javadocParser.parseIDocItReferenceGrid(bodyDeclaration.getJavadoc()));

                final List<Documentation> parsedDocs = javadocParser
                        .parseIDocItJavadoc(bodyDeclaration.getJavadoc(), addressees, roles, null);
                for (final Documentation doc : parsedDocs) {
                    if (doc.getThematicRole() != null) {
                        assignedThematicRoles.add(doc.getThematicRole());
                    }
                }
            }

            /*
             * Collect documentations from parent interfaces, classes and enumerations
             */
            IJavaElement parent = method.getParent();
            while (parent != null && parent.getElementType() == IJavaElement.TYPE) {
                final IType type = (IType) parent;
                final String typeSource = extractCodeSnippetOf(type);

                final ASTNode parentNode = parseCodeSnippet(typeSource.toCharArray(),
                        ASTParser.K_CLASS_BODY_DECLARATIONS);

                if ((parentNode.getNodeType() == ASTNode.TYPE_DECLARATION
                        || parentNode.getNodeType() == ASTNode.ENUM_DECLARATION)) {
                    final TypeDeclaration typeDecl = (TypeDeclaration) parentNode;

                    @SuppressWarnings("unchecked")
                    final List<BodyDeclaration> bodyDecls = (List<BodyDeclaration>) typeDecl.bodyDeclarations();

                    // only one class, interface or enum is parsed
                    if (bodyDecls.size() == 1) {
                        final BodyDeclaration bodyDecl = bodyDecls.get(0);

                        // process if it is a class, interface or enum and has Javadoc
                        if ((bodyDecl.getNodeType() == ASTNode.TYPE_DECLARATION
                                || bodyDecl.getNodeType() == ASTNode.ENUM_DECLARATION)
                                && bodyDecl.getJavadoc() != null) {
                            final List<Documentation> parsedDocs = javadocParser
                                    .parseIDocItJavadoc(bodyDecl.getJavadoc(), addressees, roles, null);
                            for (final Documentation doc : parsedDocs) {
                                if (doc.getThematicRole() != null) {
                                    assignedThematicRoles.add(doc.getThematicRole());
                                }
                            }
                        }
                    }

                    // parse next parent
                    parent = parent.getParent();
                } else {
                    LOG.fine("Stop parsing because of incorrect source code syntax.");
                    parent = null;
                }
            }
        }
    } else {
        LOG.info("Parsing of code snippet failed. No assigned ThematicRoles can be collected.");
    }
    return selection;
}

From source file:de.ovgu.cide.importjak.featurehouseextension.FeatureJavaMethodOverriding.java

License:Open Source License

private static ASTNode parseMethod(String wrapper) {
    ASTParser parser = ASTParser.newParser(AST.JLS3);
    Hashtable<String, String> options = JavaCore.getOptions();
    options.put(JavaCore.COMPILER_COMPLIANCE, "1.5");
    options.put(JavaCore.COMPILER_SOURCE, "1.5");

    parser.setCompilerOptions(options);// www.  j  av a 2s.com
    parser.setKind(ASTParser.K_CLASS_BODY_DECLARATIONS);
    parser.setSource(wrapper.toCharArray());
    ASTNode ast = parser.createAST(null);

    if (ast instanceof CompilationUnit) {
        if (((CompilationUnit) ast).getProblems().length > 0)
            for (IProblem problem : ((CompilationUnit) ast).getProblems())
                if (problem.isError())
                    System.err.println(problem.getMessage() + "\n" + wrapper);
    }

    return ast;
}

From source file:org.eclipse.ajdt.internal.ui.refactoring.PushInRefactoring.java

License:Open Source License

private Type createTypeAST(String newSuper, AST ast) {
    String toParse = newSuper + " t;";
    ASTParser parser = ASTParser.newParser(AST.JLS8);
    parser.setSource((toParse).toCharArray());
    parser.setKind(ASTParser.K_CLASS_BODY_DECLARATIONS);
    ASTNode astNode = parser.createAST(null);
    Type t = null;/* w  ww  .  j  a v a  2 s . com*/
    if (astNode instanceof TypeDeclaration) {
        Object object = ((TypeDeclaration) astNode).bodyDeclarations().get(0);
        if (object instanceof FieldDeclaration) {
            t = ((FieldDeclaration) object).getType();
            t = (Type) ASTNode.copySubtree(ast, t);
        }
    }
    if (t == null) {
        t = ast.newSimpleType(ast.newSimpleName("MISSING"));
    }
    return t;
}

From source file:org.eclipse.jet.internal.runtime.model.jdt.JavaLoader.java

License:Open Source License

/**
 * @param kind// www  .j av  a2s .  c o  m
 * @return
 */
private int getKind(String kind) {
    if ("classbodydeclarations".equalsIgnoreCase(kind)) { //$NON-NLS-1$
        return ASTParser.K_CLASS_BODY_DECLARATIONS;
    } else if ("expression".equals(kind)) { //$NON-NLS-1$
        return ASTParser.K_EXPRESSION;

    } else if ("statements".equals(kind)) { //$NON-NLS-1$
        return ASTParser.K_STATEMENTS;
    } else {
        return ASTParser.K_COMPILATION_UNIT;
    }

}

From source file:org.eclipse.pde.api.tools.ui.internal.completion.APIToolsJavadocCompletionProposalComputer.java

License:Open Source License

/**
 * Collects the existing tags on the {@link IJavaElement} we have been
 * activated on//from  www.  j a v  a2  s. c o m
 * 
 * @param element
 * @param jcontext
 * @throws JavaModelException
 * @throws BadLocationException
 */
private void collectExistingTags(IJavaElement element, JavaContentAssistInvocationContext jcontext)
        throws JavaModelException {
    if (element instanceof IMember) {
        IMember member = (IMember) element;
        ICompilationUnit cunit = jcontext.getCompilationUnit();
        if (cunit != null) {
            if (cunit.isWorkingCopy()) {
                cunit.reconcile(ICompilationUnit.NO_AST, false, false, null, null);
            }
            fParser.setSource(member.getSource().toCharArray());
            fParser.setKind(ASTParser.K_CLASS_BODY_DECLARATIONS);
            Map<String, String> options = element.getJavaProject().getOptions(true);
            options.put(JavaCore.COMPILER_DOC_COMMENT_SUPPORT, JavaCore.ENABLED);
            fParser.setCompilerOptions(options);
            fParser.setStatementsRecovery(false);
            fParser.setResolveBindings(false);
            fParser.setBindingsRecovery(false);
            ASTNode ast = fParser.createAST(null);
            TagCollector collector = new TagCollector();
            if (ast.getNodeType() == ASTNode.TYPE_DECLARATION) {
                TypeDeclaration typeDeclaration = (TypeDeclaration) ast;
                List<BodyDeclaration> bodyDeclarations = typeDeclaration.bodyDeclarations();
                if (bodyDeclarations.size() == 1) {
                    // only one element should be there as we are parsing a
                    // specific member
                    BodyDeclaration bodyDeclaration = bodyDeclarations.iterator().next();
                    Javadoc javadoc = bodyDeclaration.getJavadoc();
                    if (javadoc != null) {
                        javadoc.accept(collector);
                    }
                }
            }
        }
    }
}

From source file:org.eclipse.xtend.core.javaconverter.JavaCodeAnalyzer.java

License:Open Source License

public JavaCodeAnalyzer.JavaParseResult<? extends ASTNode> determinateJavaType(final String javaCode) {
    ASTParser parser = this.parserFactory.createDefaultJavaParser(this.parserFactory.minParserApiLevel);
    parser.setSource(javaCode.toCharArray());
    parser.setStatementsRecovery(true);//w w w .  j a va 2  s.  c  om
    ASTNode _createAST = parser.createAST(null);
    CompilationUnit unit = ((CompilationUnit) _createAST);
    int _size = unit.types().size();
    boolean _greaterThan = (_size > 0);
    if (_greaterThan) {
        List<CompilationUnit> _singletonList = Collections.<CompilationUnit>singletonList(unit);
        return new JavaCodeAnalyzer.JavaParseResult<CompilationUnit>(javaCode, ASTParser.K_COMPILATION_UNIT,
                _singletonList);
    }
    parser.setSource(javaCode.toCharArray());
    parser.setStatementsRecovery(false);
    parser.setKind(ASTParser.K_CLASS_BODY_DECLARATIONS);
    ASTNode root = parser.createAST(null);
    if ((root instanceof TypeDeclaration)) {
        List<BodyDeclaration> bodyDeclarations = ((TypeDeclaration) root).bodyDeclarations();
        int _size_1 = bodyDeclarations.size();
        boolean _greaterThan_1 = (_size_1 > 0);
        if (_greaterThan_1) {
            return new JavaCodeAnalyzer.JavaParseResult<BodyDeclaration>(javaCode,
                    ASTParser.K_CLASS_BODY_DECLARATIONS, bodyDeclarations);
        }
    }
    parser.setSource(javaCode.toCharArray());
    parser.setStatementsRecovery(false);
    parser.setKind(ASTParser.K_STATEMENTS);
    root = parser.createAST(null);
    if ((root instanceof Block)) {
        List<Statement> statements = ((Block) root).statements();
        int _size_2 = statements.size();
        boolean _greaterThan_2 = (_size_2 > 0);
        if (_greaterThan_2) {
            return new JavaCodeAnalyzer.JavaParseResult<Statement>(javaCode, ASTParser.K_STATEMENTS,
                    statements);
        }
    }
    parser.setSource(javaCode.toCharArray());
    parser.setStatementsRecovery(false);
    parser.setKind(ASTParser.K_EXPRESSION);
    root = parser.createAST(null);
    if ((root instanceof Expression)) {
        List<Expression> _singletonList_1 = Collections.<Expression>singletonList(((Expression) root));
        return new JavaCodeAnalyzer.JavaParseResult<Expression>(javaCode, ASTParser.K_EXPRESSION,
                _singletonList_1);
    }
    return null;
}