Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
15 changed files
with
146 additions
and
70 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
19 changes: 19 additions & 0 deletions
19
javaparser-core-generators/src/main/java/com/github/javaparser/generator/Generator.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,19 @@ | |||
package com.github.javaparser.generator; | |||
|
|||
import com.github.javaparser.JavaParser; | |||
import com.github.javaparser.generator.utils.SourceRoot; | |||
import com.github.javaparser.metamodel.JavaParserMetaModel; | |||
|
|||
public abstract class Generator { | |||
protected final JavaParser javaParser; | |||
protected final SourceRoot sourceRoot; | |||
protected final JavaParserMetaModel javaParserMetaModel; | |||
|
|||
protected Generator(JavaParser javaParser, SourceRoot sourceRoot, JavaParserMetaModel javaParserMetaModel) { | |||
this.javaParser = javaParser; | |||
this.sourceRoot = sourceRoot; | |||
this.javaParserMetaModel = javaParserMetaModel; | |||
} | |||
|
|||
public abstract void generate() throws Exception; | |||
} |
28 changes: 28 additions & 0 deletions
28
javaparser-core-generators/src/main/java/com/github/javaparser/generator/NodeGenerator.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,28 @@ | |||
package com.github.javaparser.generator; | |||
|
|||
import com.github.javaparser.JavaParser; | |||
import com.github.javaparser.ast.CompilationUnit; | |||
import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration; | |||
import com.github.javaparser.generator.utils.SourceRoot; | |||
import com.github.javaparser.metamodel.BaseNodeMetaModel; | |||
import com.github.javaparser.metamodel.JavaParserMetaModel; | |||
|
|||
import java.io.IOException; | |||
|
|||
import static com.github.javaparser.generator.utils.GeneratorUtils.f; | |||
|
|||
public abstract class NodeGenerator extends Generator { | |||
protected NodeGenerator(JavaParser javaParser, SourceRoot sourceRoot, JavaParserMetaModel javaParserMetaModel) { | |||
super(javaParser, sourceRoot, javaParserMetaModel); | |||
} | |||
|
|||
public final void generate() throws IOException { | |||
for (BaseNodeMetaModel nodeMetaModel : javaParserMetaModel.getNodeMetaModels()) { | |||
CompilationUnit nodeCu = sourceRoot.parse(nodeMetaModel.getPackageName(), nodeMetaModel.getTypeName() + ".java", javaParser).orElseThrow(() -> new IOException(f("java file for %s not found", nodeMetaModel.getTypeName()))); | |||
ClassOrInterfaceDeclaration nodeCoid = nodeCu.getClassByName(nodeMetaModel.getTypeName()).orElseThrow(() -> new IOException("Can't find class")); | |||
generateNode(nodeMetaModel, nodeCu, nodeCoid); | |||
} | |||
} | |||
|
|||
protected abstract void generateNode(BaseNodeMetaModel nodeMetaModel, CompilationUnit nodeCu, ClassOrInterfaceDeclaration nodeCoid); | |||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
33 changes: 33 additions & 0 deletions
33
...rators/src/main/java/com/github/javaparser/generator/core/node/GetNodeListsGenerator.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,33 @@ | |||
package com.github.javaparser.generator.core.node; | |||
|
|||
import com.github.javaparser.JavaParser; | |||
import com.github.javaparser.ast.CompilationUnit; | |||
import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration; | |||
import com.github.javaparser.ast.body.MethodDeclaration; | |||
import com.github.javaparser.ast.stmt.BlockStmt; | |||
import com.github.javaparser.generator.NodeGenerator; | |||
import com.github.javaparser.generator.utils.SeparatedItemStringBuilder; | |||
import com.github.javaparser.generator.utils.SourceRoot; | |||
import com.github.javaparser.metamodel.BaseNodeMetaModel; | |||
import com.github.javaparser.metamodel.JavaParserMetaModel; | |||
import com.github.javaparser.metamodel.PropertyMetaModel; | |||
|
|||
public class GetNodeListsGenerator extends NodeGenerator { | |||
public GetNodeListsGenerator(JavaParser javaParser, SourceRoot sourceRoot, JavaParserMetaModel javaParserMetaModel) { | |||
super(javaParser, sourceRoot, javaParserMetaModel); | |||
} | |||
|
|||
@Override | |||
protected void generateNode(BaseNodeMetaModel nodeMetaModel, CompilationUnit nodeCu, ClassOrInterfaceDeclaration nodeCoid) { | |||
MethodDeclaration getNodeListsMethod = nodeCoid.getMethodsByName("getNodeLists").get(0); | |||
SeparatedItemStringBuilder statement = new SeparatedItemStringBuilder("return Arrays.asList(", ",", ");"); | |||
for (PropertyMetaModel property : nodeMetaModel.getAllPropertyMetaModels()) { | |||
if (property.isNodeList()) { | |||
statement.append(property.getName()); | |||
} | |||
} | |||
BlockStmt block = getNodeListsMethod.getBody().get(); | |||
block.getStatements().clear(); | |||
block.addStatement(statement.toString()); | |||
} | |||
} |
11 changes: 5 additions & 6 deletions
11
...erator/visitor/CloneVisitorGenerator.java → ...r/core/visitor/CloneVisitorGenerator.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
11 changes: 5 additions & 6 deletions
11
...rator/visitor/EqualsVisitorGenerator.java → .../core/visitor/EqualsVisitorGenerator.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
11 changes: 5 additions & 6 deletions
11
...sitor/GenericVisitorAdapterGenerator.java → ...sitor/GenericVisitorAdapterGenerator.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10 changes: 4 additions & 6 deletions
10
...ator/visitor/GenericVisitorGenerator.java → ...core/visitor/GenericVisitorGenerator.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -1,25 +1,23 @@ | |||
package com.github.javaparser.generator.visitor; | package com.github.javaparser.generator.core.visitor; | ||
|
|
||
import com.github.javaparser.JavaParser; | import com.github.javaparser.JavaParser; | ||
import com.github.javaparser.ast.CompilationUnit; | import com.github.javaparser.ast.CompilationUnit; | ||
import com.github.javaparser.ast.body.MethodDeclaration; | import com.github.javaparser.ast.body.MethodDeclaration; | ||
import com.github.javaparser.generator.VisitorGenerator; | |||
import com.github.javaparser.generator.utils.SourceRoot; | import com.github.javaparser.generator.utils.SourceRoot; | ||
import com.github.javaparser.metamodel.BaseNodeMetaModel; | import com.github.javaparser.metamodel.BaseNodeMetaModel; | ||
import com.github.javaparser.metamodel.JavaParserMetaModel; | import com.github.javaparser.metamodel.JavaParserMetaModel; | ||
import com.github.javaparser.metamodel.PropertyMetaModel; | |||
|
|||
import java.util.List; | |||
|
|
||
/** | /** | ||
* Generates JavaParser's GenericVisitor. | * Generates JavaParser's GenericVisitor. | ||
*/ | */ | ||
public class GenericVisitorGenerator extends VisitorGenerator { | public class GenericVisitorGenerator extends VisitorGenerator { | ||
GenericVisitorGenerator(JavaParser javaParser, SourceRoot sourceRoot, JavaParserMetaModel javaParserMetaModel) { | public GenericVisitorGenerator(JavaParser javaParser, SourceRoot sourceRoot, JavaParserMetaModel javaParserMetaModel) { | ||
super(javaParser, sourceRoot, "com.github.javaparser.ast.visitor", "GenericVisitor", "R", "A", true, javaParserMetaModel); | super(javaParser, sourceRoot, "com.github.javaparser.ast.visitor", "GenericVisitor", "R", "A", true, javaParserMetaModel); | ||
} | } | ||
|
|
||
@Override | @Override | ||
protected void generateVisitMethodBody(BaseNodeMetaModel node, MethodDeclaration visitMethod, List<PropertyMetaModel> allPropertyMetaModels, CompilationUnit compilationUnit) { | protected void generateVisitMethodBody(BaseNodeMetaModel node, MethodDeclaration visitMethod, CompilationUnit compilationUnit) { | ||
visitMethod.setBody(null); | visitMethod.setBody(null); | ||
} | } | ||
} | } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.