aboutsummaryrefslogtreecommitdiffstats
path: root/javaparser-core-generators
diff options
context:
space:
mode:
authorDanny van Bruggen <hexagonaal@gmail.com>2017-12-08 22:33:51 +0100
committerDanny van Bruggen <hexagonaal@gmail.com>2017-12-08 22:33:51 +0100
commitec67c249106a847bcb63816da967c5edbdbce114 (patch)
treefbb7adf8e17896264b1afdca9e532fe37a56853f /javaparser-core-generators
parentf373cb0d8ba5d56c175a12e8faaab4f16cc54b3f (diff)
downloadplatform_external_javaparser-ec67c249106a847bcb63816da967c5edbdbce114.tar.gz
platform_external_javaparser-ec67c249106a847bcb63816da967c5edbdbce114.tar.bz2
platform_external_javaparser-ec67c249106a847bcb63816da967c5edbdbce114.zip
Generate toXyz methods
Diffstat (limited to 'javaparser-core-generators')
-rw-r--r--javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/node/TypeCastingGenerator.java11
1 files changed, 10 insertions, 1 deletions
diff --git a/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/node/TypeCastingGenerator.java b/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/node/TypeCastingGenerator.java
index c44573a0f..3a611f4c5 100644
--- a/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/node/TypeCastingGenerator.java
+++ b/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/node/TypeCastingGenerator.java
@@ -1,7 +1,6 @@
package com.github.javaparser.generator.core.node;
import com.github.javaparser.ast.CompilationUnit;
-import com.github.javaparser.ast.body.BodyDeclaration;
import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
import com.github.javaparser.ast.body.MethodDeclaration;
import com.github.javaparser.generator.NodeGenerator;
@@ -10,6 +9,7 @@ import com.github.javaparser.metamodel.JavaParserMetaModel;
import com.github.javaparser.utils.Pair;
import com.github.javaparser.utils.SourceRoot;
+import java.util.Optional;
import java.util.Set;
import java.util.function.Consumer;
@@ -56,6 +56,7 @@ public class TypeCastingGenerator extends NodeGenerator {
generateIsType(baseCu, nodeCoid, baseCoid, typeName);
generateAsType(baseCu, nodeCoid, baseCoid, typeName);
+ generateToType(nodeCu, baseCu, nodeCoid, baseCoid, typeName);
generateIfType(nodeCu, baseCu, nodeCoid, baseCoid, typeName);
}
@@ -65,7 +66,15 @@ public class TypeCastingGenerator extends NodeGenerator {
addOrReplaceWhenSameSignature(baseCoid, asTypeBaseMethod);
addOrReplaceWhenSameSignature(nodeCoid, asTypeNodeMethod);
baseCu.addImport("com.github.javaparser.utils.CodeGenerationUtils.f", true, false);
+ }
+ private void generateToType(CompilationUnit nodeCu, CompilationUnit baseCu, ClassOrInterfaceDeclaration nodeCoid, ClassOrInterfaceDeclaration baseCoid, String typeName) {
+ baseCu.addImport(Optional.class);
+ nodeCu.addImport(Optional.class);
+ final MethodDeclaration asTypeBaseMethod = (MethodDeclaration) parseBodyDeclaration(f("public Optional<%s> to%s() { return Optional.empty(); }", typeName, typeName, typeName));
+ final MethodDeclaration asTypeNodeMethod = (MethodDeclaration) parseBodyDeclaration(f("@Override public Optional<%s> to%s() { return Optional.of(this); }", typeName, typeName));
+ addOrReplaceWhenSameSignature(baseCoid, asTypeBaseMethod);
+ addOrReplaceWhenSameSignature(nodeCoid, asTypeNodeMethod);
}
private void generateIfType(CompilationUnit nodeCu, CompilationUnit baseCu, ClassOrInterfaceDeclaration nodeCoid, ClassOrInterfaceDeclaration baseCoid, String typeName) {