From 1eed9c9979dada790a7b65e1a2927e985da41a2e Mon Sep 17 00:00:00 2001 From: Martin Ciglan Date: Mon, 11 Sep 2017 18:45:09 +0200 Subject: [PATCH] Use properly module file path resolver in binding2 Twirl template. - fix implementation - checkstyle fixes Change-Id: I14aca1517cb1f5d6087b38791b298b4ec096509d Signed-off-by: Martin Ciglan --- .../api/generator/renderers/BaseRenderer.java | 2 +- .../generator/renderers/BuilderRenderer.java | 3 + .../api/generator/renderers/EnumRenderer.java | 2 +- .../YangModuleInfoTemplateRenderer.java | 2 +- .../AlphabeticallyTypeMemberComparator.java | 2 +- .../api/generator/util/TextTemplateUtil.java | 62 +++++++++++-------- .../yangModuleInfoTemplate.scala.txt | 9 ++- 7 files changed, 48 insertions(+), 34 deletions(-) diff --git a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/BaseRenderer.java b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/BaseRenderer.java index 4c5726db0f..cdf6f13108 100644 --- a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/BaseRenderer.java +++ b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/BaseRenderer.java @@ -245,7 +245,7 @@ public abstract class BaseRenderer { } /** - * @param constant + * @param constant constant to emit * @return string with constant wrapped in code */ protected String emitConstant(final Constant constant) { diff --git a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/BuilderRenderer.java b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/BuilderRenderer.java index 31e3520f55..bd7e75a090 100644 --- a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/BuilderRenderer.java +++ b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/BuilderRenderer.java @@ -248,6 +248,9 @@ public class BuilderRenderer extends BaseRenderer { /** * Method is used to find out if given type implements any interface from uses. + * + * @param type type to inspect + * @return has implements from uses-stmt true/false */ public static boolean hasImplementsFromUses(GeneratedType type) { for (Type impl : getAllIfcs(type)) { diff --git a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/EnumRenderer.java b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/EnumRenderer.java index 7aa07f46bd..b70009c601 100644 --- a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/EnumRenderer.java +++ b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/EnumRenderer.java @@ -31,7 +31,7 @@ public class EnumRenderer extends BaseRenderer { } /** - * @param enumeration + * @param enumeration enumeration to write * @return List of enumeration pairs with javadoc */ public static String writeEnumeration(final Enumeration enumeration) { diff --git a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/YangModuleInfoTemplateRenderer.java b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/YangModuleInfoTemplateRenderer.java index 0d58154f19..ebb1e7f229 100644 --- a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/YangModuleInfoTemplateRenderer.java +++ b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/YangModuleInfoTemplateRenderer.java @@ -82,7 +82,7 @@ public class YangModuleInfoTemplateRenderer { importedNames.put("semVer", importedName(SemVer.class)); importedNames.put("schemaSourceRepresentation", importedName(SchemaSourceRepresentation.class)); - return yangModuleInfoTemplate.render(module, ctx, importedNames).body(); + return yangModuleInfoTemplate.render(module, ctx, importedNames, moduleFilePathResolver).body(); } /** diff --git a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/util/AlphabeticallyTypeMemberComparator.java b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/util/AlphabeticallyTypeMemberComparator.java index e55eac7d78..a539c90643 100644 --- a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/util/AlphabeticallyTypeMemberComparator.java +++ b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/util/AlphabeticallyTypeMemberComparator.java @@ -15,7 +15,7 @@ import org.opendaylight.mdsal.binding.javav2.model.api.TypeMember; * Alphabetically type member {@link Comparator} which provides sorting by name for type members * (variables and methods) in generated class. * - * @param + * @param type */ public class AlphabeticallyTypeMemberComparator implements Comparator{ diff --git a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/util/TextTemplateUtil.java b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/util/TextTemplateUtil.java index 654767e27b..5eaca3cfa0 100644 --- a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/util/TextTemplateUtil.java +++ b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/util/TextTemplateUtil.java @@ -15,7 +15,9 @@ import com.google.common.base.Strings; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import java.util.List; +import java.util.Optional; import java.util.StringTokenizer; +import java.util.function.Function; import java.util.regex.Pattern; import org.opendaylight.mdsal.binding.javav2.generator.util.Types; import org.opendaylight.mdsal.binding.javav2.model.api.AccessModifier; @@ -89,7 +91,7 @@ public final class TextTemplateUtil { /** * Returns formatted Javadoc, based on type - * @param typeName + * @param typeName given type name * @return formatted Javadoc, based on type */ public static String formatDataForJavaDocBuilder(final String typeName) { @@ -105,8 +107,8 @@ public final class TextTemplateUtil { /** * Returns formatted Javadoc with possible additional comment, based on type - * @param type - * @param additionalComment + * @param type given type + * @param additionalComment additional comment to format * @return formatted Javadoc with possible additional comment, based on type */ public static String formatDataForJavaDoc(final GeneratedType type, final String additionalComment) { @@ -123,7 +125,7 @@ public final class TextTemplateUtil { /** * Returns properties names in formatted string - * @param properties + * @param properties list of given properties * @return properties names in formatted string */ //FIXME: this needs further clarification in future patch @@ -133,7 +135,7 @@ public final class TextTemplateUtil { /** * Returns formatted type description - * @param type + * @param type given type * @return formatted type description */ public static String formatDataForJavaDoc(final GeneratedType type) { @@ -142,8 +144,8 @@ public final class TextTemplateUtil { /** * Returns parameter name, based on given Type - * @param returnType - * @param paramName + * @param returnType given type + * @param paramName parameter name * @return parameter name, based on given Type */ public static String paramValue(final Type returnType, final String paramName) { @@ -174,7 +176,7 @@ public final class TextTemplateUtil { /** * Returns related Javadoc - * @param methodSignature + * @param methodSignature method signature * @return related Javadoc */ public static String getJavaDocForInterface(final MethodSignature methodSignature) { @@ -211,7 +213,7 @@ public final class TextTemplateUtil { /** * Returns collection of properties as formatted String - * @param properties + * @param properties list of given properties * @return generated properties as formatted String */ public static String propsAsArgs(final Iterable properties) { @@ -220,8 +222,8 @@ public final class TextTemplateUtil { /** * Returns properties as formatted String - * @param properties - * @param booleanName + * @param properties list of given properties + * @param booleanName Java Boolean type name * @return Properties as formatted String */ public static String propsAsList(final Iterable properties, final String booleanName) { @@ -231,7 +233,7 @@ public final class TextTemplateUtil { /** * Extracts available restrictions from given type - * @param currentType + * @param currentType given type * @return restrictions from given type */ public static Restrictions getRestrictions(final Type currentType) { @@ -249,6 +251,7 @@ public final class TextTemplateUtil { * method(type fieldname) * * @param property type from getter + * @return underscored string form */ public static String fieldName(final GeneratedProperty property) { final String name = Preconditions.checkNotNull(property.getName()); @@ -256,7 +259,7 @@ public final class TextTemplateUtil { } /** - * Template method which generates sequence of the names of the class attributes + * Template method which generates sequence of the names of the class attributes. * * @param parameters group of generated property instances which are transformed to the sequence of parameter names * @return string with the list of the parameter names @@ -266,10 +269,10 @@ public final class TextTemplateUtil { } /** - * Helper method for building getter + * Helper method for building getter. * * @param field property name - * @return getter for propery + * @return getter for property */ public static String getterMethodName(final GeneratedProperty field) { final Type type = Preconditions.checkNotNull(field.getReturnType()); @@ -279,10 +282,10 @@ public final class TextTemplateUtil { } /** - * Returns built setter method body - * @param field - * @param typeName - * @param returnTypeName + * Returns built setter method body from input parameters. + * @param field generated property + * @param typeName type name + * @param returnTypeName return type name * @return built setter method body */ public static String setterMethod(final GeneratedProperty field, final String typeName, final String returnTypeName) { @@ -319,7 +322,7 @@ public final class TextTemplateUtil { } /** - * Cuts prefix from getter name + * Cuts prefix from getter name. * * @param getter getter name * @return getter name without prefix @@ -338,8 +341,8 @@ public final class TextTemplateUtil { } /** - * Returns list of properties as formatted String - * @param properties + * Returns list of properties as formatted String. + * @param properties input list of generated properties * @return formatted property list as String */ public static String getPropertyList(final List properties) { @@ -363,16 +366,21 @@ public final class TextTemplateUtil { } /** - * Returns source path as String - * @param module + * Returns source path as String. + * @param module module + * @param moduleFilePathResolver function module to module file path * @return formatted String source path */ - public static String getSourcePath(final Module module) { - return "/".concat(module.getModuleSourcePath().replace(java.io.File.separatorChar, '/')); + public static String getSourcePath(final Module module, final Function> moduleFilePathResolver) { + final java.util.Optional moduleFilePath = moduleFilePathResolver.apply(module); + Preconditions.checkArgument(moduleFilePath.isPresent(),"Module file path for %s is not present", module); + + return moduleFilePath.get(); } /** - * util method for unionTemplateBuilderTemplate + * Util method for unionTemplateBuilderTemplate. + * @param modifier enum representing Java access modifier * @return needed access modifier */ public static String getAccessModifier(final AccessModifier modifier) { diff --git a/binding2/mdsal-binding2-java-api-generator/src/main/twirl/org/opendaylight/mdsal/binding/javav2/java/api/generator/yangModuleInfoTemplate.scala.txt b/binding2/mdsal-binding2-java-api-generator/src/main/twirl/org/opendaylight/mdsal/binding/javav2/java/api/generator/yangModuleInfoTemplate.scala.txt index 4e752537ba..e2a7fedaca 100644 --- a/binding2/mdsal-binding2-java-api-generator/src/main/twirl/org/opendaylight/mdsal/binding/javav2/java/api/generator/yangModuleInfoTemplate.scala.txt +++ b/binding2/mdsal-binding2-java-api-generator/src/main/twirl/org/opendaylight/mdsal/binding/javav2/java/api/generator/yangModuleInfoTemplate.scala.txt @@ -6,6 +6,8 @@ * and is available at http://www.eclipse.org/legal/epl-v10.html *@ +@import java.util.function.Function; +@import java.util.Optional @import org.opendaylight.mdsal.binding.javav2.generator.util.JavaIdentifier.CLASS @import org.opendaylight.mdsal.binding.javav2.generator.util.JavaIdentifierNormalizer.normalizeSpecificIdentifier @import org.opendaylight.mdsal.binding.javav2.generator.util.JavaIdentifierNormalizer.normalizeFullPackageName @@ -16,7 +18,8 @@ @import org.opendaylight.yangtools.yang.model.api.Module @import org.opendaylight.yangtools.yang.model.api.SchemaContext -@(module: Module, ctx: SchemaContext, importedNames: Map[String, String]) +@(module: Module, ctx: SchemaContext, importedNames: Map[String, String], +moduleFilePathResolver: Function[Module, Optional[String]]) @if(module != null && ctx != null) { public final class @{MODULE_INFO_CLASS_NAME} implements @{importedNames.get("yangModuleInfo")} { @@ -26,7 +29,7 @@ public final class @{MODULE_INFO_CLASS_NAME} implements @{importedNames.get("yan private final @{importedNames.get("string")} namespace = "@{module.getNamespace.toString}"; private final @{importedNames.get("string")} semanticVersion = "@{module.getSemanticVersion}"; private final @{importedNames.get("string")} revision = "@{module.getQNameModule.getFormattedRevision}"; - private final @{importedNames.get("string")} resourcePath = "@{getSourcePath(module)}"; + private final @{importedNames.get("string")} resourcePath = "@{getSourcePath(module, moduleFilePathResolver)}"; private final @{importedNames.get("set")} importedModules; public static @{importedNames.get("yangModuleInfo")} getInstance() { @@ -47,7 +50,7 @@ public final class @{MODULE_INFO_CLASS_NAME} implements @{importedNames.get("yan private final @{importedNames.get("string")} semanticVersion = "@{submodule.getSemanticVersion}"; private final @{importedNames.get("string")} namespace = "@{submodule.getNamespace.toString}"; private final @{importedNames.get("string")} revision = "@{submodule.getQNameModule.getFormattedRevision}"; - private final @{importedNames.get("string")} resourcePath = "@{getSourcePath(submodule)}"; + private final @{importedNames.get("string")} resourcePath = "@{getSourcePath(submodule, moduleFilePathResolver)}"; private final @{importedNames.get("set")} importedModules; public static @{importedNames.get("yangModuleInfo")} getInstance() { -- 2.36.6