summaryrefslogtreecommitdiffstats
path: root/configgen/src/main/java/com/yahoo
diff options
context:
space:
mode:
authorgjoranv <gv@oath.com>2017-08-31 15:35:01 +0200
committergjoranv <gv@oath.com>2017-08-31 16:42:00 +0200
commitf6ec274aab8d1b4d2ac25c104bc5a603dc4156ff (patch)
tree1bb34e8b61d43516100949def824a28ec3523219 /configgen/src/main/java/com/yahoo
parentb3a4db45c7fae896a2d5e9ae3fbf2b7fd072f7c9 (diff)
Rewrite ConfigGenerator.createClassName to Java.
- In new class ConfiggenUtil. - This allows using the function without loading classes from scala-xml.
Diffstat (limited to 'configgen/src/main/java/com/yahoo')
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/ConfiggenUtil.java43
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;
+ }
+}