diff options
author | Danny van Bruggen <hexagonaal@gmail.com> | 2017-02-21 23:02:33 +0100 |
---|---|---|
committer | Danny van Bruggen <hexagonaal@gmail.com> | 2017-02-24 22:04:50 +0100 |
commit | 88d5ca079a9ca0f041c3275e47b7a1d69775d6cc (patch) | |
tree | 1f06e14e850457eb0dd7008caebacfac61a830a2 /javaparser-core/src/main/java/com/github/javaparser/ast/modules/ModuleExportsStmt.java | |
parent | 8771897e4cac33462dbdd1d4298811e15dbe8469 (diff) | |
download | javaparser-88d5ca079a9ca0f041c3275e47b7a1d69775d6cc.tar.gz |
Implement Java 9 module info
Diffstat (limited to 'javaparser-core/src/main/java/com/github/javaparser/ast/modules/ModuleExportsStmt.java')
-rw-r--r-- | javaparser-core/src/main/java/com/github/javaparser/ast/modules/ModuleExportsStmt.java | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/modules/ModuleExportsStmt.java b/javaparser-core/src/main/java/com/github/javaparser/ast/modules/ModuleExportsStmt.java new file mode 100644 index 000000000..52a9985c2 --- /dev/null +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/modules/ModuleExportsStmt.java @@ -0,0 +1,106 @@ +package com.github.javaparser.ast.modules; + +import com.github.javaparser.Range; +import com.github.javaparser.ast.AllFieldsConstructor; +import com.github.javaparser.ast.Node; +import com.github.javaparser.ast.NodeList; +import com.github.javaparser.ast.expr.Name; +import com.github.javaparser.ast.nodeTypes.NodeWithName; +import com.github.javaparser.ast.observer.ObservableProperty; +import com.github.javaparser.ast.visitor.CloneVisitor; +import com.github.javaparser.ast.visitor.GenericVisitor; +import com.github.javaparser.ast.visitor.VoidVisitor; +import com.github.javaparser.metamodel.JavaParserMetaModel; +import com.github.javaparser.metamodel.ModuleExportsStmtMetaModel; +import java.util.Arrays; +import java.util.List; +import static com.github.javaparser.utils.Utils.assertNotNull; + +public class ModuleExportsStmt extends ModuleStmt implements NodeWithName<ModuleExportsStmt> { + + private Name name; + + private NodeList<Name> moduleNames; + + public ModuleExportsStmt() { + this(null, new Name(), new NodeList<>()); + } + + @AllFieldsConstructor + public ModuleExportsStmt(Name name, NodeList<Name> moduleNames) { + this(null, name, moduleNames); + } + + public ModuleExportsStmt(Range range, Name name, NodeList<Name> moduleNames) { + super(range); + setName(name); + setModuleNames(moduleNames); + } + + @Override + public <R, A> R accept(GenericVisitor<R, A> v, A arg) { + return v.visit(this, arg); + } + + @Override + public <A> void accept(VoidVisitor<A> v, A arg) { + v.visit(this, arg); + } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + for (int i = 0; i < moduleNames.size(); i++) { + if (moduleNames.get(i) == node) { + moduleNames.remove(i); + return true; + } + } + return super.remove(node); + } + + public Name getName() { + return name; + } + + public ModuleExportsStmt setName(final Name name) { + assertNotNull(name); + notifyPropertyChange(ObservableProperty.NAME, this.name, name); + if (this.name != null) + this.name.setParentNode(null); + this.name = name; + setAsParentNodeOf(name); + return this; + } + + public NodeList<Name> getModuleNames() { + return moduleNames; + } + + public ModuleExportsStmt setModuleNames(final NodeList<Name> moduleNames) { + assertNotNull(moduleNames); + notifyPropertyChange(ObservableProperty.MODULE_NAMES, this.moduleNames, moduleNames); + if (this.moduleNames != null) + this.moduleNames.setParentNode(null); + this.moduleNames = moduleNames; + setAsParentNodeOf(moduleNames); + return this; + } + + @Override + public List<NodeList<?>> getNodeLists() { + return Arrays.asList(getModuleNames()); + } + + @Override + public ModuleExportsStmt clone() { + return (ModuleExportsStmt) accept(new CloneVisitor(), null); + } + + @Override + public ModuleExportsStmtMetaModel getMetaModel() { + return JavaParserMetaModel.moduleExportsStmtMetaModel; + } +} + |