--- /dev/null
+/*
+ * Copyright (c) 2023 PANTHEON.tech, s.r.o. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.mdsal.binding.java.api.generator;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.mdsal.binding.model.api.GeneratedProperty;
+import org.opendaylight.mdsal.binding.model.api.GeneratedType;
+import org.opendaylight.yangtools.yang.binding.contract.Naming;
+
+/**
+ * Intermediate Java-based parts under {@link BaseTemplate}.
+ */
+abstract class AbstractBaseTemplate extends JavaFileTemplate {
+ AbstractBaseTemplate(final @NonNull GeneratedType type) {
+ super(type);
+ }
+
+ AbstractBaseTemplate(final AbstractJavaGeneratedType javaType, final GeneratedType type) {
+ super(javaType, type);
+ }
+
+ final @NonNull String generate() {
+ final var sb = new StringBuilder()
+ .append("package ").append(type().getPackageName()).append(";\n");
+
+ // Has side-effects
+ final var body = body();
+
+ final var importBlock = generateImportBlock();
+ if (!importBlock.isEmpty()) {
+ sb.append(importBlock).append('\n');
+ }
+ return sb.append(body).toString();
+ }
+
+ /**
+ * Generate the body of this Java file, i.e. the entire class declaration.
+ *
+ * @return Body of this Java file
+ */
+ abstract @NonNull CharSequence body();
+
+ // Helper patterns
+ static final @NonNull String fieldName(final GeneratedProperty property) {
+ return "_" + property.getName();
+ }
+
+ static final @NonNull String getterMethodName(final @NonNull String propName) {
+ return Naming.GETTER_PREFIX + Naming.toFirstUpper(propName);
+ }
+
+ static final @NonNull String getterMethodName(final GeneratedProperty field) {
+ return getterMethodName(field.getName());
+ }
+}
import org.opendaylight.yangtools.yang.binding.contract.Naming
import org.opendaylight.yangtools.yang.common.YangDataName
-abstract class BaseTemplate extends JavaFileTemplate {
+abstract class BaseTemplate extends AbstractBaseTemplate {
static final char NEW_LINE = '\n'
static final char SPACE = ' '
static val WS_MATCHER = CharMatcher.anyOf("\n\t")
super(javaType, type)
}
- final def generate() {
- val _body = body()
- '''
- package «type.packageName»;
- «generateImportBlock»
-
- «_body»
- '''.toString
- }
-
- protected abstract def CharSequence body();
-
// Helper patterns
- final protected def fieldName(GeneratedProperty property) {
- "_" + property.name
- }
-
/**
* Template method which generates the getter method for <code>field</code>
*
}
'''
- final protected def getterMethodName(GeneratedProperty field) {
- return field.name.getterMethodName
- }
-
- final protected def getterMethodName(String propName) {
- return '''«Naming.GETTER_PREFIX»«propName.toFirstUpper»'''
- }
-
/**
* Template method which generates the setter method for <code>field</code>
*