Home | History | Annotate | Download | only in modules
      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