1 package com.github.javaparser.ast.modules; 2 3 import com.github.javaparser.ast.AllFieldsConstructor; 4 import com.github.javaparser.ast.Modifier; 5 import com.github.javaparser.ast.Node; 6 import com.github.javaparser.ast.expr.Name; 7 import com.github.javaparser.ast.nodeTypes.NodeWithName; 8 import com.github.javaparser.ast.nodeTypes.modifiers.NodeWithStaticModifier; 9 import com.github.javaparser.ast.observer.ObservableProperty; 10 import com.github.javaparser.ast.visitor.CloneVisitor; 11 import com.github.javaparser.ast.visitor.GenericVisitor; 12 import com.github.javaparser.ast.visitor.VoidVisitor; 13 import com.github.javaparser.metamodel.JavaParserMetaModel; 14 import com.github.javaparser.metamodel.ModuleRequiresStmtMetaModel; 15 import java.util.EnumSet; 16 import static com.github.javaparser.ast.Modifier.TRANSITIVE; 17 import static com.github.javaparser.utils.Utils.assertNotNull; 18 import javax.annotation.Generated; 19 import com.github.javaparser.TokenRange; 20 import java.util.function.Consumer; 21 import java.util.Optional; 22 23 /** 24 * A require statement in module-info.java. <code>require a.b.C;</code> 25 */ 26 public final class ModuleRequiresStmt extends ModuleStmt implements NodeWithStaticModifier<ModuleRequiresStmt>, NodeWithName<ModuleRequiresStmt> { 27 28 private EnumSet<Modifier> modifiers; 29 30 private Name name; 31 32 public ModuleRequiresStmt() { 33 this(null, EnumSet.noneOf(Modifier.class), new Name()); 34 } 35 36 @AllFieldsConstructor 37 public ModuleRequiresStmt(EnumSet<Modifier> modifiers, Name name) { 38 this(null, modifiers, name); 39 } 40 41 /** 42 * This constructor is used by the parser and is considered private. 43 */ 44 @Generated("com.github.javaparser.generator.core.node.MainConstructorGenerator") 45 public ModuleRequiresStmt(TokenRange tokenRange, EnumSet<Modifier> modifiers, Name name) { 46 super(tokenRange); 47 setModifiers(modifiers); 48 setName(name); 49 customInitialization(); 50 } 51 52 @Override 53 @Generated("com.github.javaparser.generator.core.node.AcceptGenerator") 54 public <R, A> R accept(final GenericVisitor<R, A> v, final A arg) { 55 return v.visit(this, arg); 56 } 57 58 @Override 59 @Generated("com.github.javaparser.generator.core.node.AcceptGenerator") 60 public <A> void accept(final VoidVisitor<A> v, final A arg) { 61 v.visit(this, arg); 62 } 63 64 @Generated("com.github.javaparser.generator.core.node.PropertyGenerator") 65 public EnumSet<Modifier> getModifiers() { 66 return modifiers; 67 } 68 69 @Generated("com.github.javaparser.generator.core.node.PropertyGenerator") 70 public ModuleRequiresStmt setModifiers(final EnumSet<Modifier> modifiers) { 71 assertNotNull(modifiers); 72 if (modifiers == this.modifiers) { 73 return (ModuleRequiresStmt) this; 74 } 75 notifyPropertyChange(ObservableProperty.MODIFIERS, this.modifiers, modifiers); 76 this.modifiers = modifiers; 77 return this; 78 } 79 80 @Generated("com.github.javaparser.generator.core.node.PropertyGenerator") 81 public Name getName() { 82 return name; 83 } 84 85 @Generated("com.github.javaparser.generator.core.node.PropertyGenerator") 86 public ModuleRequiresStmt setName(final Name name) { 87 assertNotNull(name); 88 if (name == this.name) { 89 return (ModuleRequiresStmt) this; 90 } 91 notifyPropertyChange(ObservableProperty.NAME, this.name, name); 92 if (this.name != null) 93 this.name.setParentNode(null); 94 this.name = name; 95 setAsParentNodeOf(name); 96 return this; 97 } 98 99 public boolean isTransitive() { 100 return getModifiers().contains(TRANSITIVE); 101 } 102 103 public ModuleRequiresStmt setTransitive(boolean set) { 104 return setModifier(TRANSITIVE, set); 105 } 106 107 @Override 108 @Generated("com.github.javaparser.generator.core.node.RemoveMethodGenerator") 109 public boolean remove(Node node) { 110 if (node == null) 111 return false; 112 return super.remove(node); 113 } 114 115 @Override 116 @Generated("com.github.javaparser.generator.core.node.CloneGenerator") 117 public ModuleRequiresStmt clone() { 118 return (ModuleRequiresStmt) accept(new CloneVisitor(), null); 119 } 120 121 @Override 122 @Generated("com.github.javaparser.generator.core.node.GetMetaModelGenerator") 123 public ModuleRequiresStmtMetaModel getMetaModel() { 124 return JavaParserMetaModel.moduleRequiresStmtMetaModel; 125 } 126 127 @Override 128 @Generated("com.github.javaparser.generator.core.node.ReplaceMethodGenerator") 129 public boolean replace(Node node, Node replacementNode) { 130 if (node == null) 131 return false; 132 if (node == name) { 133 setName((Name) replacementNode); 134 return true; 135 } 136 return super.replace(node, replacementNode); 137 } 138 139 @Override 140 @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator") 141 public boolean isModuleRequiresStmt() { 142 return true; 143 } 144 145 @Override 146 @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator") 147 public ModuleRequiresStmt asModuleRequiresStmt() { 148 return this; 149 } 150 151 @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator") 152 public void ifModuleRequiresStmt(Consumer<ModuleRequiresStmt> action) { 153 action.accept(this); 154 } 155 156 @Override 157 @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator") 158 public Optional<ModuleRequiresStmt> toModuleRequiresStmt() { 159 return Optional.of(this); 160 } 161 } 162