Skip to content

Commit

Permalink
Create nodelists generator
Browse files Browse the repository at this point in the history
  • Loading branch information
matozoid committed Jan 28, 2017
1 parent 135276f commit b6e98a6
Show file tree
Hide file tree
Showing 15 changed files with 146 additions and 70 deletions.
Expand Up @@ -9,8 +9,8 @@
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>


<artifactId>javaparser-visitor-generator</artifactId> <artifactId>javaparser-core-generators</artifactId>
<description>A visitor generator framework, and the generators for the javaparser-core visitors</description> <description>A visitor generator framework, and the generators for javaparser-core</description>


<dependencies> <dependencies>
<dependency> <dependency>
Expand Down
@@ -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;
}
@@ -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);
}
@@ -1,4 +1,4 @@
package com.github.javaparser.generator.visitor; package com.github.javaparser.generator;


import com.github.javaparser.JavaParser; import com.github.javaparser.JavaParser;
import com.github.javaparser.ast.CompilationUnit; import com.github.javaparser.ast.CompilationUnit;
Expand All @@ -19,28 +19,23 @@
* It will create missing visit methods on the fly, * It will create missing visit methods on the fly,
* and will ask you to fill in the bodies of the visit methods. * and will ask you to fill in the bodies of the visit methods.
*/ */
public abstract class VisitorGenerator { public abstract class VisitorGenerator extends Generator {
protected final JavaParser javaParser;
protected final SourceRoot sourceRoot;
private final String pkg; private final String pkg;
private final String visitorClassName; private final String visitorClassName;
private final String returnType; private final String returnType;
private final String argumentType; private final String argumentType;
private final boolean createMissingVisitMethods; private final boolean createMissingVisitMethods;
protected final JavaParserMetaModel javaParserMetaModel;


public VisitorGenerator(JavaParser javaParser, SourceRoot sourceRoot, String pkg, String visitorClassName, String returnType, String argumentType, boolean createMissingVisitMethods, JavaParserMetaModel javaParserMetaModel) { public VisitorGenerator(JavaParser javaParser, SourceRoot sourceRoot, String pkg, String visitorClassName, String returnType, String argumentType, boolean createMissingVisitMethods, JavaParserMetaModel javaParserMetaModel) {
this.javaParser = javaParser; super(javaParser, sourceRoot, javaParserMetaModel);
this.sourceRoot = sourceRoot;
this.pkg = pkg; this.pkg = pkg;
this.visitorClassName = visitorClassName; this.visitorClassName = visitorClassName;
this.returnType = returnType; this.returnType = returnType;
this.argumentType = argumentType; this.argumentType = argumentType;
this.createMissingVisitMethods = createMissingVisitMethods; this.createMissingVisitMethods = createMissingVisitMethods;
this.javaParserMetaModel = javaParserMetaModel;
} }


public void generate() throws IOException { public final void generate() throws IOException {
CompilationUnit compilationUnit = sourceRoot.parse(pkg, visitorClassName + ".java", javaParser).get(); CompilationUnit compilationUnit = sourceRoot.parse(pkg, visitorClassName + ".java", javaParser).get();


Optional<ClassOrInterfaceDeclaration> visitorClassOptional = compilationUnit.getClassByName(visitorClassName); Optional<ClassOrInterfaceDeclaration> visitorClassOptional = compilationUnit.getClassByName(visitorClassName);
Expand All @@ -55,33 +50,21 @@ public void generate() throws IOException {
} }


private void generateVisitMethodForNode(BaseNodeMetaModel node, ClassOrInterfaceDeclaration visitorClass, CompilationUnit compilationUnit) { private void generateVisitMethodForNode(BaseNodeMetaModel node, ClassOrInterfaceDeclaration visitorClass, CompilationUnit compilationUnit) {
List<PropertyMetaModel> allPropertyMetaModels = collectAllPropertyMetaModels(node);

Optional<MethodDeclaration> visitMethod = visitorClass.getMethods().stream() Optional<MethodDeclaration> visitMethod = visitorClass.getMethods().stream()
.filter(m -> m.getNameAsString().equals("visit")) .filter(m -> m.getNameAsString().equals("visit"))
.filter(m -> m.getParameter(0).getType().toString().equals(node.getTypeName())) .filter(m -> m.getParameter(0).getType().toString().equals(node.getTypeName()))
.findFirst(); .findFirst();


if (visitMethod.isPresent()) { if (visitMethod.isPresent()) {
generateVisitMethodBody(node, visitMethod.get(), allPropertyMetaModels, compilationUnit); generateVisitMethodBody(node, visitMethod.get(), compilationUnit);
} else if (createMissingVisitMethods) { } else if (createMissingVisitMethods) {
MethodDeclaration methodDeclaration = visitorClass.addMethod("visit") MethodDeclaration methodDeclaration = visitorClass.addMethod("visit")
.addParameter(node.getTypeNameGenerified(), "n") .addParameter(node.getTypeNameGenerified(), "n")
.addParameter(argumentType, "arg") .addParameter(argumentType, "arg")
.setType(returnType); .setType(returnType);
generateVisitMethodBody(node, methodDeclaration, allPropertyMetaModels, compilationUnit); generateVisitMethodBody(node, methodDeclaration, compilationUnit);
}
}

private List<PropertyMetaModel> collectAllPropertyMetaModels(BaseNodeMetaModel node) {
List<PropertyMetaModel> allPropertyMetaModels = new ArrayList<>(node.getDeclaredPropertyMetaModels());
BaseNodeMetaModel walkNode = node;
while (walkNode.getSuperNodeMetaModel().isPresent()) {
walkNode = walkNode.getSuperNodeMetaModel().get();
allPropertyMetaModels.addAll(walkNode.getDeclaredPropertyMetaModels());
} }
return allPropertyMetaModels;
} }


protected abstract void generateVisitMethodBody(BaseNodeMetaModel node, MethodDeclaration visitMethod, List<PropertyMetaModel> allPropertyMetaModels, CompilationUnit compilationUnit); protected abstract void generateVisitMethodBody(BaseNodeMetaModel node, MethodDeclaration visitMethod, CompilationUnit compilationUnit);
} }
@@ -1,6 +1,9 @@
package com.github.javaparser.generator.visitor; package com.github.javaparser.generator.core;


import com.github.javaparser.JavaParser; import com.github.javaparser.JavaParser;
import com.github.javaparser.generator.VisitorGenerator;
import com.github.javaparser.generator.core.node.GetNodeListsGenerator;
import com.github.javaparser.generator.core.visitor.*;
import com.github.javaparser.generator.utils.SourceRoot; import com.github.javaparser.generator.utils.SourceRoot;
import com.github.javaparser.metamodel.JavaParserMetaModel; import com.github.javaparser.metamodel.JavaParserMetaModel;


Expand All @@ -11,7 +14,7 @@
/** /**
* Generates all generated visitors in the javaparser-core module. * Generates all generated visitors in the javaparser-core module.
*/ */
public class CoreVisitorsGenerator { public class CoreGenerator {
public static void main(String[] args) throws IOException { public static void main(String[] args) throws IOException {
final JavaParserMetaModel javaParserMetaModel = new JavaParserMetaModel(); final JavaParserMetaModel javaParserMetaModel = new JavaParserMetaModel();


Expand All @@ -29,6 +32,8 @@ public static void main(String[] args) throws IOException {
new HashCodeVisitorGenerator(javaParser, sourceRoot, javaParserMetaModel).generate(); new HashCodeVisitorGenerator(javaParser, sourceRoot, javaParserMetaModel).generate();
new CloneVisitorGenerator(javaParser, sourceRoot, javaParserMetaModel).generate(); new CloneVisitorGenerator(javaParser, sourceRoot, javaParserMetaModel).generate();


new GetNodeListsGenerator(javaParser, sourceRoot, javaParserMetaModel).generate();

sourceRoot.saveAll(); sourceRoot.saveAll();
} }
} }
@@ -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());
}
}
@@ -1,33 +1,32 @@
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.ast.stmt.BlockStmt; import com.github.javaparser.ast.stmt.BlockStmt;
import com.github.javaparser.generator.VisitorGenerator;
import com.github.javaparser.generator.utils.SeparatedItemStringBuilder; import com.github.javaparser.generator.utils.SeparatedItemStringBuilder;
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 com.github.javaparser.metamodel.PropertyMetaModel;


import java.util.List;

import static com.github.javaparser.generator.utils.GeneratorUtils.f; import static com.github.javaparser.generator.utils.GeneratorUtils.f;


/** /**
* Generates JavaParser's CloneVisitor. * Generates JavaParser's CloneVisitor.
*/ */
public class CloneVisitorGenerator extends VisitorGenerator { public class CloneVisitorGenerator extends VisitorGenerator {
CloneVisitorGenerator(JavaParser javaParser, SourceRoot sourceRoot, JavaParserMetaModel javaParserMetaModel) { public CloneVisitorGenerator(JavaParser javaParser, SourceRoot sourceRoot, JavaParserMetaModel javaParserMetaModel) {
super(javaParser, sourceRoot, "com.github.javaparser.ast.visitor", "CloneVisitor", "void", "A", true, javaParserMetaModel); super(javaParser, sourceRoot, "com.github.javaparser.ast.visitor", "CloneVisitor", "void", "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) {
BlockStmt body = visitMethod.getBody().get(); BlockStmt body = visitMethod.getBody().get();
body.getStatements().clear(); body.getStatements().clear();


for (PropertyMetaModel field : allPropertyMetaModels) { for (PropertyMetaModel field : node.getAllPropertyMetaModels()) {
final String getter = field.getGetterMethodName() + "()"; final String getter = field.getGetterMethodName() + "()";
if (field.getNodeReference().isPresent()) { if (field.getNodeReference().isPresent()) {
if (field.isOptional() && field.isNodeList()) { if (field.isOptional() && field.isNodeList()) {
Expand Down
@@ -1,34 +1,33 @@
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.ast.stmt.BlockStmt; import com.github.javaparser.ast.stmt.BlockStmt;
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 com.github.javaparser.metamodel.PropertyMetaModel;


import java.util.List;

import static com.github.javaparser.generator.utils.GeneratorUtils.f; import static com.github.javaparser.generator.utils.GeneratorUtils.f;


/** /**
* Generates JavaParser's EqualsVisitor. * Generates JavaParser's EqualsVisitor.
*/ */
public class EqualsVisitorGenerator extends VisitorGenerator { public class EqualsVisitorGenerator extends VisitorGenerator {
EqualsVisitorGenerator(JavaParser javaParser, SourceRoot sourceRoot, JavaParserMetaModel javaParserMetaModel) { public EqualsVisitorGenerator(JavaParser javaParser, SourceRoot sourceRoot, JavaParserMetaModel javaParserMetaModel) {
super(javaParser, sourceRoot, "com.github.javaparser.ast.visitor", "EqualsVisitor", "Boolean", "Node", true, javaParserMetaModel); super(javaParser, sourceRoot, "com.github.javaparser.ast.visitor", "EqualsVisitor", "Boolean", "Node", 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) {
BlockStmt body = visitMethod.getBody().get(); BlockStmt body = visitMethod.getBody().get();
body.getStatements().clear(); body.getStatements().clear();


body.addStatement(f("final %s n2 = (%s) arg;", node.getTypeName(), node.getTypeName())); body.addStatement(f("final %s n2 = (%s) arg;", node.getTypeName(), node.getTypeName()));


for (PropertyMetaModel field : allPropertyMetaModels) { for (PropertyMetaModel field : node.getAllPropertyMetaModels()) {
final String getter = field.getGetterMethodName() + "()"; final String getter = field.getGetterMethodName() + "()";
if (field.getNodeReference().isPresent()) { if (field.getNodeReference().isPresent()) {
if (field.isNodeList()) { if (field.isNodeList()) {
Expand Down
@@ -1,36 +1,35 @@
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.ast.stmt.BlockStmt; import com.github.javaparser.ast.stmt.BlockStmt;
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 com.github.javaparser.metamodel.PropertyMetaModel;


import java.util.List;

import static com.github.javaparser.generator.utils.GeneratorUtils.f; import static com.github.javaparser.generator.utils.GeneratorUtils.f;


/** /**
* Generates JavaParser's VoidVisitorAdapter. * Generates JavaParser's VoidVisitorAdapter.
*/ */
public class GenericVisitorAdapterGenerator extends VisitorGenerator { public class GenericVisitorAdapterGenerator extends VisitorGenerator {
GenericVisitorAdapterGenerator(JavaParser javaParser, SourceRoot sourceRoot, JavaParserMetaModel javaParserMetaModel) { public GenericVisitorAdapterGenerator(JavaParser javaParser, SourceRoot sourceRoot, JavaParserMetaModel javaParserMetaModel) {
super(javaParser, sourceRoot, "com.github.javaparser.ast.visitor", "GenericVisitorAdapter", "void", "A", true, javaParserMetaModel); super(javaParser, sourceRoot, "com.github.javaparser.ast.visitor", "GenericVisitorAdapter", "void", "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) {
BlockStmt body = visitMethod.getBody().get(); BlockStmt body = visitMethod.getBody().get();
body.getStatements().clear(); body.getStatements().clear();


body.addStatement("R result;"); body.addStatement("R result;");


final String resultCheck = "if (result != null) return result;"; final String resultCheck = "if (result != null) return result;";


for (PropertyMetaModel field : allPropertyMetaModels) { for (PropertyMetaModel field : node.getAllPropertyMetaModels()) {
final String getter = field.getGetterMethodName() + "()"; final String getter = field.getGetterMethodName() + "()";
if (field.getNodeReference().isPresent()) { if (field.getNodeReference().isPresent()) {
if (field.isOptional()) { if (field.isOptional()) {
Expand Down
@@ -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);
} }
} }
@@ -1,9 +1,10 @@
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.ast.stmt.BlockStmt; import com.github.javaparser.ast.stmt.BlockStmt;
import com.github.javaparser.generator.VisitorGenerator;
import com.github.javaparser.generator.utils.SeparatedItemStringBuilder; import com.github.javaparser.generator.utils.SeparatedItemStringBuilder;
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;
Expand All @@ -18,16 +19,17 @@
* Generates JavaParser's HashCodeVisitor. * Generates JavaParser's HashCodeVisitor.
*/ */
public class HashCodeVisitorGenerator extends VisitorGenerator { public class HashCodeVisitorGenerator extends VisitorGenerator {
HashCodeVisitorGenerator(JavaParser javaParser, SourceRoot sourceRoot, JavaParserMetaModel javaParserMetaModel) { public HashCodeVisitorGenerator(JavaParser javaParser, SourceRoot sourceRoot, JavaParserMetaModel javaParserMetaModel) {
super(javaParser, sourceRoot, "com.github.javaparser.ast.visitor", "HashCodeVisitor", "Integer", "Void", true, javaParserMetaModel); super(javaParser, sourceRoot, "com.github.javaparser.ast.visitor", "HashCodeVisitor", "Integer", "Void", true, javaParserMetaModel);
} }


@Override @Override
protected void generateVisitMethodBody(BaseNodeMetaModel node, MethodDeclaration visitMethod, List<PropertyMetaModel> propertyMetaModels, CompilationUnit compilationUnit) { protected void generateVisitMethodBody(BaseNodeMetaModel node, MethodDeclaration visitMethod, CompilationUnit compilationUnit) {
BlockStmt body = visitMethod.getBody().get(); final BlockStmt body = visitMethod.getBody().get();
body.getStatements().clear(); body.getStatements().clear();


SeparatedItemStringBuilder builder = new SeparatedItemStringBuilder("return ", "* 31 +", ";"); final SeparatedItemStringBuilder builder = new SeparatedItemStringBuilder("return ", "* 31 +", ";");
final List<PropertyMetaModel> propertyMetaModels= node.getAllPropertyMetaModels();
if (propertyMetaModels.isEmpty()) { if (propertyMetaModels.isEmpty()) {
builder.append("0"); builder.append("0");
} else { } else {
Expand Down

0 comments on commit b6e98a6

Please sign in to comment.