diff options
author | Danny van Bruggen <hexagonaal@gmail.com> | 2017-12-08 22:33:51 +0100 |
---|---|---|
committer | Danny van Bruggen <hexagonaal@gmail.com> | 2017-12-08 22:33:51 +0100 |
commit | ec67c249106a847bcb63816da967c5edbdbce114 (patch) | |
tree | fbb7adf8e17896264b1afdca9e532fe37a56853f /javaparser-core-generators | |
parent | f373cb0d8ba5d56c175a12e8faaab4f16cc54b3f (diff) | |
download | platform_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.java | 11 |
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) { |