List of usage examples for org.eclipse.jdt.core.dom MethodDeclaration BODY_PROPERTY
ChildPropertyDescriptor BODY_PROPERTY
To view the source code for org.eclipse.jdt.core.dom MethodDeclaration BODY_PROPERTY.
Click Source Link
From source file:org.eclipse.emf.codegen.merge.java.facade.ast.ASTJMethod.java
License:Open Source License
public void setBody(String body) { this.body = body; setTrackedNodeProperty(getASTNode(), body, MethodDeclaration.BODY_PROPERTY, ASTNode.BLOCK); }
From source file:org.eclipse.wb.core.eval.ExecutionFlowUtils.java
License:Open Source License
/** * Visit {@link ASTNode}'s "unconditionally accessible" starting from given {@link Statement}. */// ww w. ja v a 2 s. c om private static void visitStatement(VisitingContext context, ExecutionFlowDescription flowDescription, Statement statement, ExecutionFlowFrameVisitor visitor) { // check if we already visited MethodDeclaration if (statement.getLocationInParent() == MethodDeclaration.BODY_PROPERTY) { MethodDeclaration methodDeclaration = (MethodDeclaration) statement.getParent(); if (context.visitedMethods.contains(methodDeclaration)) { return; } context.visitedMethods.add(methodDeclaration); } // visit "binary flow" methods that should be visited BEFORE current Statement visitBinaryFlowMethods(true, context, flowDescription, statement, visitor); // visit current Statement flowDescription.enterStatement(statement); try { visitStatement0(context, flowDescription, statement, visitor); } finally { flowDescription.leaveStatement(statement); } // visit "binary flow" methods that should be visited AFTER current Statement visitBinaryFlowMethods(false, context, flowDescription, statement, visitor); }
From source file:org.eclipse.wb.internal.core.utils.ast.AstEditor.java
License:Open Source License
/** * Move statement to given {@link StatementTarget}. * //from ww w . j a va2 s.co m * @param target * the new position for statement * @param statement * the statement to move * @param includePrefixComment * flag to mark that comment before statement also should be moved */ public void moveStatement(Statement statement, StatementTarget target) throws Exception { // statement or method declaration required Assert.isTrue(target.getBlock() != null || target.getStatement() != null); // check for no-op if (target.getStatement() != null) { Statement targetStatement = target.getStatement(); // adding relative same statement if (targetStatement == statement) { return; } // adding before current next statement Block targetBlock = (Block) targetStatement.getParent(); List<Statement> targetStatements = DomGenerics.statements(targetBlock); if (statement.getParent() == targetStatement.getParent()) { if (target.isBefore()) { // statement before target if (targetStatements.indexOf(statement) == targetStatements.indexOf(targetStatement) - 1) { return; } } else { // statement after target if (targetStatements.indexOf(statement) == targetStatements.indexOf(targetStatement) + 1) { return; } } } } else { Block targetBlock = target.getBlock(); List<Statement> targetStatements = DomGenerics.statements(targetBlock); if (statement.getParent() == targetBlock) { if (target.isBefore()) { if (targetStatements.indexOf(statement) == 0) { return; } } else { if (targetStatements.indexOf(statement) == targetStatements.size() - 1) { return; } } } } // prepare code generation constants AstCodeGeneration generation = getGeneration(); String singleIndent = generation.getIndentation(1); String eol = generation.getEndOfLine(); // prepare source location Block sourceBlock = (Block) statement.getParent(); int sourceBegin = skipWhitespaceAndPureEOLCToLeft(statement.getStartPosition()); int sourceLength = getStatementEndIndex(statement) - sourceBegin; // remove leading EOL { int leftEOLEnd = sourceBegin; int leftEOLBegin = skipSingleEOLToLeft(leftEOLEnd); int leftEOLLength = leftEOLEnd - leftEOLBegin; // replaceSubstring(leftEOLBegin, leftEOLLength, ""); sourceBegin -= leftEOLLength; } // if (target.getStatement() != null) { Statement targetStatement = target.getStatement(); String indent = getWhitespaceToLeft(targetStatement.getStartPosition(), false); // int position; if (target.isBefore()) { // move before any empty lines and EOLC lines position = skipWhitespaceAndPureEOLCToLeft(targetStatement.getStartPosition()); // move source position = moveSource(position, sourceBegin, sourceLength); // add EOL after statement replaceSubstring(position + sourceLength, 0, eol); } else { // move at the end of target position = getStatementEndIndex(targetStatement); // move source position = moveSource(position, sourceBegin, sourceLength); // add EOL before statement replaceSubstring(position, 0, eol); position += eol.length(); } // move node { Block targetBlock = (Block) targetStatement.getParent(); int index = targetBlock.statements().indexOf(targetStatement); if (!target.isBefore()) { index++; } if (sourceBlock == targetBlock && sourceBlock.statements().indexOf(statement) < index) { index--; } sourceBlock.statements().remove(statement); DomGenerics.statements(targetBlock).add(index, statement); } // re-indent reindentSource(position, sourceLength, indent, eol); } else { Block targetBlock = target.getBlock(); // prepare indentation String indent; { ASTNode indentNode = targetBlock; if (targetBlock.getLocationInParent() == MethodDeclaration.BODY_PROPERTY || targetBlock.getLocationInParent() == TryStatement.BODY_PROPERTY) { indentNode = targetBlock.getParent(); } indent = getWhitespaceToLeft(indentNode.getStartPosition(), false); indent += singleIndent; } // int position; if (target.isBefore()) { // prepare position as position after '{' of block { position = targetBlock.getStartPosition(); Assert.isTrue(position != -1); position++; } // move source position = moveSource(position, sourceBegin, sourceLength); // add EOL before statement replaceSubstring(position, 0, eol); position += eol.length(); // move node sourceBlock.statements().remove(statement); DomGenerics.statements(targetBlock).add(0, statement); } else { // prepare position as position of '}' of block position = AstNodeUtils.getSourceEnd(targetBlock) - 1; String endMethodIndent = getWhitespaceToLeft(position, false); position -= endMethodIndent.length(); // move source position = moveSource(position, sourceBegin, sourceLength); // add EOL after statement replaceSubstring(position + sourceLength, 0, eol); // move node sourceBlock.statements().remove(statement); DomGenerics.statements(targetBlock).add(statement); } // re-indent reindentSource(position, sourceLength, indent, eol); } }
From source file:org.moe.natjgen.ConstructorEditor.java
License:Apache License
public void setBodyAsEmpty() { Block block = getAST().newBlock(); getRewrite().set(methodDecl, MethodDeclaration.BODY_PROPERTY, block, getEditGroup()); }
From source file:org.moe.natjgen.ConstructorEditor.java
License:Apache License
public void setBodyAsSuperInitWithClassAsArg() { Block block = getAST().newBlock();/*from w ww . j a v a2s.c o m*/ getRewrite().set(methodDecl, MethodDeclaration.BODY_PROPERTY, block, getEditGroup()); ListRewrite block_stmts = getRewrite().getListRewrite(block, Block.STATEMENTS_PROPERTY); SuperConstructorInvocation invoke = getAST().newSuperConstructorInvocation(); block_stmts.insertLast(invoke, getEditGroup()); ListRewrite invoke_args = getRewrite().getListRewrite(invoke, SuperConstructorInvocation.ARGUMENTS_PROPERTY); TypeLiteral literal = getAST().newTypeLiteral(); invoke_args.insertLast(literal, getEditGroup()); getRewrite().set(literal, TypeLiteral.TYPE_PROPERTY, getAST().newSimpleType(getAST().newName(getManager().getUnitName())), getEditGroup()); }
From source file:org.moe.natjgen.ConstructorEditor.java
License:Apache License
public void setBodyAsSuperInitWithPointerAsArg(String varname) { Block block = getAST().newBlock();//from w w w . j ava 2s . c om getRewrite().set(methodDecl, MethodDeclaration.BODY_PROPERTY, block, getEditGroup()); ListRewrite block_stmts = getRewrite().getListRewrite(block, Block.STATEMENTS_PROPERTY); SuperConstructorInvocation invoke = getAST().newSuperConstructorInvocation(); block_stmts.insertLast(invoke, getEditGroup()); ListRewrite invoke_args = getRewrite().getListRewrite(invoke, SuperConstructorInvocation.ARGUMENTS_PROPERTY); invoke_args.insertLast(getAST().newSimpleName(varname), getEditGroup()); }
From source file:org.moe.natjgen.ConstructorEditor.java
License:Apache License
public void setBodyAsSuperInitWithFieldSetters(String[] setters, String[] getters) { if (setters == null || getters == null || setters.length != getters.length) { throw new IllegalArgumentException(); }/*w w w . jav a 2 s . c o m*/ Block block = getAST().newBlock(); getRewrite().set(methodDecl, MethodDeclaration.BODY_PROPERTY, block, getEditGroup()); ListRewrite block_stmts = getRewrite().getListRewrite(block, Block.STATEMENTS_PROPERTY); SuperConstructorInvocation invoke = getAST().newSuperConstructorInvocation(); block_stmts.insertLast(invoke, getEditGroup()); ListRewrite invoke_args = getRewrite().getListRewrite(invoke, SuperConstructorInvocation.ARGUMENTS_PROPERTY); TypeLiteral literal = getAST().newTypeLiteral(); invoke_args.insertLast(literal, getEditGroup()); getRewrite().set(literal, TypeLiteral.TYPE_PROPERTY, getAST().newSimpleType(getAST().newName(getManager().getUnitName())), getEditGroup()); for (int i = 0; i < setters.length; i++) { MethodInvocation setfieldinvoke = getAST().newMethodInvocation(); Statement stmt = getAST().newExpressionStatement(setfieldinvoke); block_stmts.insertLast(stmt, getEditGroup()); getRewrite().set(setfieldinvoke, MethodInvocation.NAME_PROPERTY, getAST().newSimpleName(setters[i]), getEditGroup()); ListRewrite arglrw = getRewrite().getListRewrite(setfieldinvoke, MethodInvocation.ARGUMENTS_PROPERTY); arglrw.insertLast(getAST().newSimpleName(getters[i]), getEditGroup()); } }
From source file:org.moe.natjgen.MethodEditor.java
License:Apache License
@SuppressWarnings("unchecked") public void setBodyAsMethodCaller(String jmethod, Type rettype, ArrayList<CalleeArgument> arguments) { Block code = (Block) getRewrite().get(methodDecl, MethodDeclaration.BODY_PROPERTY); if (code == null) { code = getAST().newBlock();/*from w w w.j a v a 2 s . c o m*/ getRewrite().set(methodDecl, MethodDeclaration.BODY_PROPERTY, code, getEditGroup()); } ListRewrite statements = getRewrite().getListRewrite(code, Block.STATEMENTS_PROPERTY); for (ASTNode object : (List<ASTNode>) statements.getRewrittenList()) { statements.remove(object, getEditGroup()); } MethodInvocation invoke = getAST().newMethodInvocation(); getRewrite().set(invoke, MethodInvocation.NAME_PROPERTY, getAST().newSimpleName(jmethod), getEditGroup()); if (rettype.isVoid()) { ExpressionStatement expr_stmt = getAST().newExpressionStatement(invoke); statements.insertLast(expr_stmt, getEditGroup()); } else { ReturnStatement return_stmt = getAST().newReturnStatement(); statements.insertLast(return_stmt, getEditGroup()); getRewrite().set(return_stmt, ReturnStatement.EXPRESSION_PROPERTY, invoke, getEditGroup()); } if (arguments.size() > 0) { ListRewrite args = getRewrite().getListRewrite(invoke, MethodInvocation.ARGUMENTS_PROPERTY); for (CalleeArgument arg : arguments) { args.insertLast(getAST().newSimpleName(arg.getName()), getEditGroup()); } } }
From source file:org.moe.natjgen.MethodEditor.java
License:Apache License
@SuppressWarnings("unchecked") public void setBodyAsProtocolDefaultMethod(Type rettype) { Block code = (Block) getRewrite().get(methodDecl, MethodDeclaration.BODY_PROPERTY); if (code == null) { code = getAST().newBlock();//from w w w . j a va 2s.c o m getRewrite().set(methodDecl, MethodDeclaration.BODY_PROPERTY, code, getEditGroup()); } ListRewrite statements = getRewrite().getListRewrite(code, Block.STATEMENTS_PROPERTY); for (ASTNode object : (List<ASTNode>) statements.getRewrittenList()) { statements.remove(object, getEditGroup()); } Name uoe = getAST().newName("java.lang.UnsupportedOperationException"); SimpleType uoet = getAST().newSimpleType(uoe); ClassInstanceCreation cic = getAST().newClassInstanceCreation(); getRewrite().set(cic, ClassInstanceCreation.TYPE_PROPERTY, uoet, getEditGroup()); ThrowStatement th = getAST().newThrowStatement(); getRewrite().set(th, ThrowStatement.EXPRESSION_PROPERTY, cic, getEditGroup()); statements.insertLast(th, getEditGroup()); }
From source file:org.moe.natjgen.MethodEditor.java
License:Apache License
public void setEmptyBodyForMethod(Type rettype) { Block code = getAST().newBlock(); getRewrite().set(methodDecl, MethodDeclaration.BODY_PROPERTY, code, getEditGroup()); }