List of usage examples for org.eclipse.jdt.core.dom ASTParser K_CLASS_BODY_DECLARATIONS
int K_CLASS_BODY_DECLARATIONS
To view the source code for org.eclipse.jdt.core.dom ASTParser K_CLASS_BODY_DECLARATIONS.
Click Source Link
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; }