Skip to content

Commit

Permalink
New node type : NodeWithBody
Browse files Browse the repository at this point in the history
  • Loading branch information
DeepSnowNeeL committed Aug 24, 2016
1 parent 6687e7b commit 650de78
Show file tree
Hide file tree
Showing 8 changed files with 149 additions and 73 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.github.javaparser.ast.nodeTypes;

import com.github.javaparser.ast.Node;
import com.github.javaparser.ast.stmt.BlockStmt;
import com.github.javaparser.ast.stmt.Statement;

public interface NodeWithBody<T> {
public Statement getBody();

public T setBody(final Statement body);

public default BlockStmt createBlockStatementAsBody() {
BlockStmt b = new BlockStmt();
b.setParentNode((Node) this);
setBody(b);
return b;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,15 @@
import com.github.javaparser.ast.body.Parameter;
import com.github.javaparser.ast.body.VariableDeclaratorId;
import com.github.javaparser.ast.expr.AnnotationExpr;
import com.github.javaparser.ast.nodeTypes.NodeWithBlockStmt;
import com.github.javaparser.ast.type.Type;
import com.github.javaparser.ast.visitor.GenericVisitor;
import com.github.javaparser.ast.visitor.VoidVisitor;

/**
* @author Julio Vilmar Gesser
*/
public final class CatchClause extends Node {
public final class CatchClause extends Node implements NodeWithBlockStmt<CatchClause> {

private Parameter param;

Expand Down Expand Up @@ -68,6 +69,7 @@ public CatchClause(final Range range,
v.visit(this, arg);
}

// TODO Should we deprecate those ?
public BlockStmt getCatchBlock() {
return catchBlock;
}
Expand All @@ -76,6 +78,7 @@ public Parameter getParam() {
return param;
}

// TODO Should we deprecate those ?
public void setCatchBlock(final BlockStmt catchBlock) {
this.catchBlock = catchBlock;
setAsParentNodeOf(this.catchBlock);
Expand All @@ -85,4 +88,16 @@ public void setParam(final Parameter param) {
this.param = param;
setAsParentNodeOf(this.param);
}

@Override
public BlockStmt getBody() {
return catchBlock;
}

@Override
public CatchClause setBody(BlockStmt block) {
this.catchBlock = block;
setAsParentNodeOf(this.catchBlock);
return this;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,14 @@

import com.github.javaparser.Range;
import com.github.javaparser.ast.expr.Expression;
import com.github.javaparser.ast.nodeTypes.NodeWithBody;
import com.github.javaparser.ast.visitor.GenericVisitor;
import com.github.javaparser.ast.visitor.VoidVisitor;

/**
* @author Julio Vilmar Gesser
*/
public final class DoStmt extends Statement {
public final class DoStmt extends Statement implements NodeWithBody<DoStmt> {

private Statement body;

Expand Down Expand Up @@ -57,17 +58,20 @@ public DoStmt(Range range, final Statement body, final Expression condition) {
v.visit(this, arg);
}

public Statement getBody() {
@Override
public Statement getBody() {
return body;
}

public Expression getCondition() {
return condition;
}

public void setBody(final Statement body) {
@Override
public DoStmt setBody(final Statement body) {
this.body = body;
setAsParentNodeOf(this.body);
return this;
}

public void setCondition(final Expression condition) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,19 +21,20 @@

package com.github.javaparser.ast.stmt;

import static com.github.javaparser.utils.Utils.ensureNotNull;

import java.util.List;

import com.github.javaparser.Range;
import com.github.javaparser.ast.expr.Expression;
import com.github.javaparser.ast.nodeTypes.NodeWithBody;
import com.github.javaparser.ast.visitor.GenericVisitor;
import com.github.javaparser.ast.visitor.VoidVisitor;

import java.util.List;

import static com.github.javaparser.utils.Utils.*;

/**
* @author Julio Vilmar Gesser
*/
public final class ForStmt extends Statement {
public final class ForStmt extends Statement implements NodeWithBody<ForStmt> {

private List<Expression> init;

Expand Down Expand Up @@ -74,7 +75,8 @@ public <A> void accept(final VoidVisitor<A> v, final A arg) {
v.visit(this, arg);
}

public Statement getBody() {
@Override
public Statement getBody() {
return body;
}

Expand All @@ -92,9 +94,11 @@ public List<Expression> getUpdate() {
return update;
}

public void setBody(final Statement body) {
@Override
public ForStmt setBody(final Statement body) {
this.body = body;
setAsParentNodeOf(this.body);
return this;
}

public void setCompare(final Expression compare) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,14 @@
import com.github.javaparser.Range;
import com.github.javaparser.ast.expr.Expression;
import com.github.javaparser.ast.expr.VariableDeclarationExpr;
import com.github.javaparser.ast.nodeTypes.NodeWithBody;
import com.github.javaparser.ast.visitor.GenericVisitor;
import com.github.javaparser.ast.visitor.VoidVisitor;

/**
* @author Julio Vilmar Gesser
*/
public final class ForeachStmt extends Statement {
public final class ForeachStmt extends Statement implements NodeWithBody<ForeachStmt> {

private VariableDeclarationExpr var;

Expand Down Expand Up @@ -67,7 +68,8 @@ public <A> void accept(final VoidVisitor<A> v, final A arg) {
v.visit(this, arg);
}

public Statement getBody() {
@Override
public Statement getBody() {
return body;
}

Expand All @@ -79,9 +81,11 @@ public VariableDeclarationExpr getVariable() {
return var;
}

public void setBody(final Statement body) {
@Override
public ForeachStmt setBody(final Statement body) {
this.body = body;
setAsParentNodeOf(this.body);
return this;
}

public void setIterable(final Expression iterable) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,19 +21,20 @@

package com.github.javaparser.ast.stmt;

import static com.github.javaparser.utils.Utils.ensureNotNull;

import java.util.List;

import com.github.javaparser.Range;
import com.github.javaparser.ast.expr.Expression;
import com.github.javaparser.ast.nodeTypes.NodeWithStatements;
import com.github.javaparser.ast.visitor.GenericVisitor;
import com.github.javaparser.ast.visitor.VoidVisitor;

import java.util.List;

import static com.github.javaparser.utils.Utils.*;

/**
* @author Julio Vilmar Gesser
*/
public final class SwitchEntryStmt extends Statement {
public final class SwitchEntryStmt extends Statement implements NodeWithStatements<SwitchEntryStmt> {

private Expression label;

Expand Down Expand Up @@ -68,7 +69,8 @@ public Expression getLabel() {
return label;
}

public List<Statement> getStmts() {
@Override
public List<Statement> getStmts() {
stmts = ensureNotNull(stmts);
return stmts;
}
Expand All @@ -78,8 +80,10 @@ public void setLabel(final Expression label) {
setAsParentNodeOf(this.label);
}

public void setStmts(final List<Statement> stmts) {
@Override
public SwitchEntryStmt setStmts(final List<Statement> stmts) {
this.stmts = stmts;
setAsParentNodeOf(this.stmts);
return this;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,63 +18,86 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*/

package com.github.javaparser.ast.stmt;

import com.github.javaparser.Range;
import com.github.javaparser.ast.expr.Expression;
import com.github.javaparser.ast.nodeTypes.NodeWithBlockStmt;
import com.github.javaparser.ast.visitor.GenericVisitor;
import com.github.javaparser.ast.visitor.VoidVisitor;

/**
* @author Julio Vilmar Gesser
*/
public final class SynchronizedStmt extends Statement {

private Expression expr;

private BlockStmt block;

public SynchronizedStmt() {
}

public SynchronizedStmt(final Expression expr, final BlockStmt block) {
setExpr(expr);
setBlock(block);
}

public SynchronizedStmt(Range range, final Expression expr,
final BlockStmt block) {
super(range);
setExpr(expr);
setBlock(block);
}

@Override
public <R, A> R accept(final GenericVisitor<R, A> v, final A arg) {
return v.visit(this, arg);
}

@Override
public <A> void accept(final VoidVisitor<A> v, final A arg) {
v.visit(this, arg);
}

public BlockStmt getBlock() {
return block;
}

public Expression getExpr() {
return expr;
}

public void setBlock(final BlockStmt block) {
this.block = block;
setAsParentNodeOf(this.block);
}

public void setExpr(final Expression expr) {
this.expr = expr;
setAsParentNodeOf(this.expr);
}
public final class SynchronizedStmt extends Statement implements NodeWithBlockStmt<SynchronizedStmt> {

private Expression expr;

private BlockStmt block;

public SynchronizedStmt() {
}

public SynchronizedStmt(final Expression expr, final BlockStmt block) {
setExpr(expr);
setBlock(block);
}

public SynchronizedStmt(Range range, final Expression expr,
final BlockStmt block) {
super(range);
setExpr(expr);
setBlock(block);
}

@Override
public <R, A> R accept(final GenericVisitor<R, A> v, final A arg) {
return v.visit(this, arg);
}

@Override
public <A> void accept(final VoidVisitor<A> v, final A arg) {
v.visit(this, arg);
}

/**
* @deprecated use {@link #getBody()}
* @return
*/
@Deprecated
public BlockStmt getBlock() {
return block;
}

public Expression getExpr() {
return expr;
}

/**
* @deprecated Use {@link #setBody(BlockStmt)} instead
* @param block
*/
@Deprecated
public void setBlock(final BlockStmt block) {
this.block = block;
setAsParentNodeOf(this.block);
}

public void setExpr(final Expression expr) {
this.expr = expr;
setAsParentNodeOf(this.expr);
}

@Override
public BlockStmt getBody() {
return block;
}

@Override
public SynchronizedStmt setBody(BlockStmt block) {
this.block = block;
setAsParentNodeOf(this.block);
return this;
}
}
Loading

0 comments on commit 650de78

Please sign in to comment.