diff options
author | gjoranv <gv@oath.com> | 2017-08-31 15:35:01 +0200 |
---|---|---|
committer | gjoranv <gv@oath.com> | 2017-09-05 12:07:06 +0200 |
commit | a81650ae405450db737d4dd1777e0cb047579302 (patch) | |
tree | fa3de3e00a7920d51b222cb6fe64406bbe9e4f2c /configgen/src/main/java/com/yahoo/config/codegen/ConfiggenUtil.java | |
parent | dcd280c9de94e318df07f41b74fc24d6f21521d5 (diff) |
Rewrite ConfigGenerator.createClassName to Java.
- In new class ConfiggenUtil.
- This will allow using the function without loading classes
from scala-xml in the future.
- Do not remove the original scala method, as it could still be
used for a while by older config models.
(By classes InstanceResolver and VespaModel.)
Diffstat (limited to 'configgen/src/main/java/com/yahoo/config/codegen/ConfiggenUtil.java')
-rw-r--r-- | configgen/src/main/java/com/yahoo/config/codegen/ConfiggenUtil.java | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/ConfiggenUtil.java b/configgen/src/main/java/com/yahoo/config/codegen/ConfiggenUtil.java new file mode 100644 index 00000000000..a7a3eb718a3 --- /dev/null +++ b/configgen/src/main/java/com/yahoo/config/codegen/ConfiggenUtil.java @@ -0,0 +1,43 @@ +package com.yahoo.config.codegen; + +import java.util.Arrays; +import java.util.stream.Collectors; + +/** + * @author gjoranv + */ +public class ConfiggenUtil { + + /** + * Create class name from def name + * @param defName The file name without the '.def' suffix + */ + public static String createClassName(String defName) { + String className = Arrays.stream(defName.split("-")) + .map(ConfiggenUtil::capitalize) + .collect(Collectors.joining()) + + "Config"; + + if (! isLegalJavaIdentifier(className)) + throw new CodegenRuntimeException("Illegal config definition file name '" + defName + + "'. Must be a legal Java identifier."); + + return className; + } + + private static String capitalize(String in) { + StringBuilder sb = new StringBuilder(in); + sb.setCharAt(0, Character.toTitleCase(in.charAt(0))); + return sb.toString(); + } + + private static boolean isLegalJavaIdentifier(String name) { + if (name.isEmpty()) return false; + if (! Character.isJavaIdentifierStart(name.charAt(0))) return false; + + for (char c : name.substring(1).toCharArray()) { + if (! Character.isJavaIdentifierPart(c)) return false; + } + return true; + } +} |