1 /* 2 * Copyright (C) 2007-2010 Jlio Vilmar Gesser. 3 * Copyright (C) 2011, 2013-2016 The JavaParser Team. 4 * 5 * This file is part of JavaParser. 6 * 7 * JavaParser can be used either under the terms of 8 * a) the GNU Lesser General Public License as published by 9 * the Free Software Foundation, either version 3 of the License, or 10 * (at your option) any later version. 11 * b) the terms of the Apache License 12 * 13 * You should have received a copy of both licenses in LICENCE.LGPL and 14 * LICENCE.APACHE. Please refer to those files for details. 15 * 16 * JavaParser is distributed in the hope that it will be useful, 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 * GNU Lesser General Public License for more details. 20 */ 21 22 package com.github.javaparser.ast.stmt; 23 24 import com.github.javaparser.Range; 25 import com.github.javaparser.ast.expr.Expression; 26 import com.github.javaparser.ast.nodeTypes.NodeWithBlockStmt; 27 import com.github.javaparser.ast.visitor.GenericVisitor; 28 import com.github.javaparser.ast.visitor.VoidVisitor; 29 30 /** 31 * @author Julio Vilmar Gesser 32 */ 33 public final class SynchronizedStmt extends Statement implements NodeWithBlockStmt<SynchronizedStmt> { 34 35 private Expression expr; 36 37 private BlockStmt block; 38 39 public SynchronizedStmt() { 40 } 41 42 public SynchronizedStmt(final Expression expr, final BlockStmt block) { 43 setExpr(expr); 44 setBlock(block); 45 } 46 47 public SynchronizedStmt(Range range, final Expression expr, 48 final BlockStmt block) { 49 super(range); 50 setExpr(expr); 51 setBlock(block); 52 } 53 54 @Override 55 public <R, A> R accept(final GenericVisitor<R, A> v, final A arg) { 56 return v.visit(this, arg); 57 } 58 59 @Override 60 public <A> void accept(final VoidVisitor<A> v, final A arg) { 61 v.visit(this, arg); 62 } 63 64 /** 65 * @deprecated use {@link #getBody()} 66 * @return 67 */ 68 @Deprecated 69 public BlockStmt getBlock() { 70 return block; 71 } 72 73 public Expression getExpr() { 74 return expr; 75 } 76 77 /** 78 * @deprecated Use {@link #setBody(BlockStmt)} instead 79 * @param block 80 */ 81 @Deprecated 82 public SynchronizedStmt setBlock(final BlockStmt block) { 83 this.block = block; 84 setAsParentNodeOf(this.block); 85 return this; 86 } 87 88 public SynchronizedStmt setExpr(final Expression expr) { 89 this.expr = expr; 90 setAsParentNodeOf(this.expr); 91 return this; 92 } 93 94 @Override 95 public BlockStmt getBody() { 96 return block; 97 } 98 99 @Override 100 public SynchronizedStmt setBody(BlockStmt block) { 101 this.block = block; 102 setAsParentNodeOf(this.block); 103 return this; 104 } 105 } 106