JavaParser Source Viewer

Home|JavaParser/com/github/javaparser/ast/stmt/BreakStmt.java
1/*
2 * Copyright (C) 2007-2010 JĂșlio Vilmar Gesser.
3 * Copyright (C) 2011, 2013-2020 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 */
21package com.github.javaparser.ast.stmt;
22
23import com.github.javaparser.ast.AllFieldsConstructor;
24import com.github.javaparser.ast.expr.SimpleName;
25import com.github.javaparser.ast.observer.ObservableProperty;
26import com.github.javaparser.ast.visitor.GenericVisitor;
27import com.github.javaparser.ast.visitor.VoidVisitor;
28import java.util.Optional;
29import com.github.javaparser.ast.Node;
30import com.github.javaparser.ast.visitor.CloneVisitor;
31import com.github.javaparser.metamodel.BreakStmtMetaModel;
32import com.github.javaparser.metamodel.JavaParserMetaModel;
33import com.github.javaparser.TokenRange;
34import com.github.javaparser.metamodel.OptionalProperty;
35import java.util.function.Consumer;
36import com.github.javaparser.ast.Generated;
37
38/**
39 * <h1>The break statement</h1>
40 * <h2>Java 1.0-11</h2>
41 * Break has an optional label:
42 * <br>{@code break;}
43 * <br>{@code break somewhere;}
44 * <br>The label is in the "value" property as a NameExpr.
45 * <h2>Java 12</h2>
46 * Break can now also have any expression,
47 * to be used in the switch-expression:
48 * <br>{@code break 123+456;}
49 * <br>{@code break "more or less";}
50 * <br>The expression will be in the "value" property.
51 * <h2>Java 13</h2>
52 * The break statement has been reverted to what it was before Java 12, and break-with-value is now the YieldStatement.
53 *
54 * @author Julio Vilmar Gesser
55 * @see com.github.javaparser.ast.expr.SwitchExpr
56 * @see YieldStmt
57 */
58public class BreakStmt extends Statement {
59
60    @OptionalProperty
61    private SimpleName label;
62
63    public BreakStmt() {
64        this(null, new SimpleName());
65    }
66
67    public BreakStmt(final String label) {
68        this(null, new SimpleName(label));
69    }
70
71    @AllFieldsConstructor
72    public BreakStmt(final SimpleName label) {
73        this(nulllabel);
74    }
75
76    /**
77     * This constructor is used by the parser and is considered private.
78     */
79    @Generated("com.github.javaparser.generator.core.node.MainConstructorGenerator")
80    public BreakStmt(TokenRange tokenRangeSimpleName label) {
81        super(tokenRange);
82        setLabel(label);
83        customInitialization();
84    }
85
86    @Override
87    @Generated("com.github.javaparser.generator.core.node.AcceptGenerator")
88    public <RAR accept(final GenericVisitor<RAvfinal A arg) {
89        return v.visit(this, arg);
90    }
91
92    @Override
93    @Generated("com.github.javaparser.generator.core.node.AcceptGenerator")
94    public <Avoid accept(final VoidVisitor<Avfinal A arg) {
95        v.visit(this, arg);
96    }
97
98    @Generated("com.github.javaparser.generator.core.node.PropertyGenerator")
99    public Optional<SimpleNamegetLabel() {
100        return Optional.ofNullable(label);
101    }
102
103    /**
104     * Sets the label
105     *
106     * @param label the label, can be null
107     * @return this, the BreakStmt
108     */
109    @Generated("com.github.javaparser.generator.core.node.PropertyGenerator")
110    public BreakStmt setLabel(final SimpleName label) {
111        if (label == this.label) {
112            return (BreakStmt) this;
113        }
114        notifyPropertyChange(ObservableProperty.LABEL, this.labellabel);
115        if (this.label != null)
116            this.label.setParentNode(null);
117        this.label = label;
118        setAsParentNodeOf(label);
119        return this;
120    }
121
122    @Override
123    @Generated("com.github.javaparser.generator.core.node.RemoveMethodGenerator")
124    public boolean remove(Node node) {
125        if (node == null)
126            return false;
127        if (label != null) {
128            if (node == label) {
129                removeLabel();
130                return true;
131            }
132        }
133        return super.remove(node);
134    }
135
136    @Generated("com.github.javaparser.generator.core.node.RemoveMethodGenerator")
137    public BreakStmt removeLabel() {
138        return setLabel((SimpleNamenull);
139    }
140
141    @Override
142    @Generated("com.github.javaparser.generator.core.node.CloneGenerator")
143    public BreakStmt clone() {
144        return (BreakStmtaccept(new CloneVisitor(), null);
145    }
146
147    @Override
148    @Generated("com.github.javaparser.generator.core.node.GetMetaModelGenerator")
149    public BreakStmtMetaModel getMetaModel() {
150        return JavaParserMetaModel.breakStmtMetaModel;
151    }
152
153    @Override
154    @Generated("com.github.javaparser.generator.core.node.ReplaceMethodGenerator")
155    public boolean replace(Node nodeNode replacementNode) {
156        if (node == null)
157            return false;
158        if (label != null) {
159            if (node == label) {
160                setLabel((SimpleNamereplacementNode);
161                return true;
162            }
163        }
164        return super.replace(nodereplacementNode);
165    }
166
167    @Override
168    @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator")
169    public boolean isBreakStmt() {
170        return true;
171    }
172
173    @Override
174    @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator")
175    public BreakStmt asBreakStmt() {
176        return this;
177    }
178
179    @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator")
180    public void ifBreakStmt(Consumer<BreakStmtaction) {
181        action.accept(this);
182    }
183
184    @Override
185    @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator")
186    public Optional<BreakStmttoBreakStmt() {
187        return Optional.of(this);
188    }
189}
190
MembersX
BreakStmt:removeLabel
BreakStmt:ifBreakStmt
BreakStmt:label
BreakStmt:accept
BreakStmt:replace
BreakStmt:toBreakStmt
BreakStmt:BreakStmt
BreakStmt:isBreakStmt
BreakStmt:remove
BreakStmt:asBreakStmt
BreakStmt:clone
BreakStmt:setLabel
BreakStmt:getLabel
BreakStmt:getMetaModel
Members
X