X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=binding2%2Fmdsal-binding2-generator-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fbinding%2Fjavav2%2Fgenerator%2Fimpl%2FAuxiliaryGenUtils.java;h=4432555e945577263895d51e69709f7a52aa8fd6;hb=d68c7fe825e06409bdd721dd15437ae72be097c5;hp=071c133f3bf0220d680279fe89941a4396946200;hpb=9f1c7a47c852b775c62d723f5d6d5d2f2209bf82;p=mdsal.git diff --git a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AuxiliaryGenUtils.java b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AuxiliaryGenUtils.java index 071c133f3b..4432555e94 100644 --- a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AuxiliaryGenUtils.java +++ b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AuxiliaryGenUtils.java @@ -10,6 +10,7 @@ package org.opendaylight.mdsal.binding.javav2.generator.impl; import static com.google.common.base.Preconditions.checkArgument; import static org.opendaylight.mdsal.binding.javav2.generator.util.BindingGeneratorUtil.encodeAngleBrackets; +import static org.opendaylight.mdsal.binding.javav2.generator.util.BindingGeneratorUtil.replacePackageTopNamespace; import static org.opendaylight.mdsal.binding.javav2.generator.util.Types.BOOLEAN; import com.google.common.annotations.Beta; @@ -27,11 +28,13 @@ import org.opendaylight.mdsal.binding.javav2.generator.impl.txt.yangTemplateForN import org.opendaylight.mdsal.binding.javav2.generator.impl.txt.yangTemplateForNodes; import org.opendaylight.mdsal.binding.javav2.generator.impl.util.YangTextTemplate; import org.opendaylight.mdsal.binding.javav2.generator.spi.TypeProvider; +import org.opendaylight.mdsal.binding.javav2.generator.util.BindingGeneratorUtil; import org.opendaylight.mdsal.binding.javav2.generator.util.JavaIdentifier; import org.opendaylight.mdsal.binding.javav2.generator.util.JavaIdentifierNormalizer; import org.opendaylight.mdsal.binding.javav2.generator.util.Types; import org.opendaylight.mdsal.binding.javav2.generator.util.YangSnippetCleaner; import org.opendaylight.mdsal.binding.javav2.generator.util.generated.type.builder.GeneratedTOBuilderImpl; +import org.opendaylight.mdsal.binding.javav2.generator.util.generated.type.builder.GeneratedTypeBuilderImpl; import org.opendaylight.mdsal.binding.javav2.generator.yang.types.TypeProviderImpl; import org.opendaylight.mdsal.binding.javav2.model.api.Constant; import org.opendaylight.mdsal.binding.javav2.model.api.Type; @@ -42,7 +45,9 @@ import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.GeneratedTyp import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.GeneratedTypeBuilderBase; import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.MethodSignatureBuilder; import org.opendaylight.mdsal.binding.javav2.spec.runtime.BindingNamespaceType; +import org.opendaylight.mdsal.binding.javav2.util.BindingMapping; import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; @@ -67,7 +72,7 @@ import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil; @Beta final class AuxiliaryGenUtils { - private static final Splitter BSDOT_SPLITTER = Splitter.on("\\."); + private static final Splitter BSDOT_SPLITTER = Splitter.on("."); private static final char NEW_LINE = '\n'; private static final Pattern UNICODE_CHAR_PATTERN = Pattern.compile("\\\\+u"); @@ -91,12 +96,11 @@ final class AuxiliaryGenUtils { } } - private static boolean hasBuilderClass(final SchemaNode schemaNode) { - if (schemaNode instanceof ContainerSchemaNode || schemaNode instanceof ListSchemaNode || - schemaNode instanceof RpcDefinition || schemaNode instanceof NotificationDefinition) { - return true; - } - return false; + public static boolean hasBuilderClass(final SchemaNode schemaNode, final BindingNamespaceType namespaceType) { + return (namespaceType.equals(BindingNamespaceType.Data) + && (schemaNode instanceof ContainerSchemaNode || schemaNode instanceof ListSchemaNode + || schemaNode instanceof RpcDefinition || schemaNode instanceof NotificationDefinition + || schemaNode instanceof ChoiceCaseNode)); } static Constant qNameConstant(final GeneratedTypeBuilderBase> toBuilder, final String constantName, @@ -163,7 +167,8 @@ final class AuxiliaryGenUtils { } static String createDescription(final SchemaNode schemaNode, final String fullyQualifiedName, - final SchemaContext schemaContext, final boolean verboseClassComments) { + final SchemaContext schemaContext, final boolean verboseClassComments, + final BindingNamespaceType namespaceType) { final StringBuilder sb = new StringBuilder(); final String nodeDescription = encodeAngleBrackets(schemaNode.getDescription()); final String formattedDescription = YangTextTemplate.formatToParagraph(nodeDescription, 0); @@ -173,17 +178,8 @@ final class AuxiliaryGenUtils { sb.append(NEW_LINE); } + final Module module = SchemaContextUtil.findParentModule(schemaContext, schemaNode); if (verboseClassComments) { - final Module module = SchemaContextUtil.findParentModule(schemaContext, schemaNode); - final StringBuilder linkToBuilderClass = new StringBuilder(); - final String[] namespace = Iterables.toArray(BSDOT_SPLITTER.split(fullyQualifiedName), String.class); - final String className = namespace[namespace.length - 1]; - - if (hasBuilderClass(schemaNode)) { - linkToBuilderClass.append(className); - linkToBuilderClass.append("Builder"); - } - sb.append("
"); sb.append("This class represents the following YANG schema fragment defined in module "); sb.append(module.getName()); @@ -202,7 +198,14 @@ final class AuxiliaryGenUtils { sb.append(""); sb.append(NEW_LINE); - if (hasBuilderClass(schemaNode) && !(schemaNode instanceof OperationDefinition)) { + if (hasBuilderClass(schemaNode, namespaceType) && !(schemaNode instanceof OperationDefinition)) { + final StringBuilder linkToBuilderClass = new StringBuilder(); + final String basePackageName = BindingMapping.getRootPackageName(module); + + linkToBuilderClass + .append(replacePackageTopNamespace(basePackageName, fullyQualifiedName, + namespaceType, BindingNamespaceType.Builder)) + .append("Builder"); sb.append(NEW_LINE); sb.append("
To create instances of this class use " + "{@link " + linkToBuilderClass + "}.");
sb.append(NEW_LINE);
@@ -210,11 +213,21 @@ final class AuxiliaryGenUtils {
sb.append(linkToBuilderClass);
sb.append(NEW_LINE);
if (schemaNode instanceof ListSchemaNode) {
+ final StringBuilder linkToKeyClass = new StringBuilder();
+
+ final String[] namespace = Iterables.toArray(BSDOT_SPLITTER.split(fullyQualifiedName), String.class);
+ final String className = namespace[namespace.length - 1];
+
+ linkToKeyClass.append(BindingGeneratorUtil.packageNameForSubGeneratedType(basePackageName, schemaNode,
+ BindingNamespaceType.Key))
+ .append('.')
+ .append(className)
+ .append("Key");
+
final Listleaf
schema node to property of generated TO
* builder.
@@ -469,16 +488,23 @@ final class AuxiliaryGenUtils {
*