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