Binding generator v2 - augment statement #4
[mdsal.git] / binding2 / mdsal-binding2-generator-impl / src / main / java / org / opendaylight / mdsal / binding / javav2 / generator / impl / AugmentToGenType.java
index 1b186f5cadebc9b044fdc9851bc203975f71486a..641b71232c5cac92d30cff32516452df569cddd1 100644 (file)
@@ -166,15 +166,19 @@ final class AugmentToGenType {
 
         final Set<AugmentationSchema> augmentations = module.getAugmentations();
         final List<AugmentationSchema> sortedAugmentations = new ArrayList<>(augmentations).stream()
-                .filter(aug -> !module.equals(schemaContext.findModuleByNamespaceAndRevision(
-                        aug.getTargetPath().getLastComponent().getNamespace(),
-                        aug.getTargetPath().getLastComponent().getRevision())))
+                .filter(aug -> !module.equals(findAugmentTargetModule(schemaContext, aug)))
                 .collect(Collectors.toList());
         Collections.sort(sortedAugmentations, AUGMENT_COMP);
 
         return sortedAugmentations;
     }
 
+    public static Module findAugmentTargetModule(final SchemaContext schemaContext , final AugmentationSchema aug) {
+        Preconditions.checkNotNull(aug, "Augmentation schema can not be null.");
+        final QName first = aug.getTargetPath().getPathFromRoot().iterator().next();
+        return schemaContext.findModuleByNamespaceAndRevision(first.getNamespace(), first.getRevision());
+    }
+
     /**
      * Converts <code>augSchema</code> to list of <code>Type</code> which
      * contains generated type for augmentation. In addition there are also
@@ -238,12 +242,12 @@ final class AugmentToGenType {
             throw new NullPointerException("Target type not yet generated: " + targetSchemaNode);
         }
 
-        final String augmentNamespacePackageName =
-                BindingGeneratorUtil.packageNameForAugmentedGeneratedType(basePackageName, targetPath);
+        final String augmentPackageName =
+            BindingGeneratorUtil.packageNameWithNamespacePrefix(basePackageName, BindingNamespaceType.Data);
 
         if (!(targetSchemaNode instanceof ChoiceSchemaNode)) {
-            genCtx = GenHelperUtil.addRawAugmentGenTypeDefinition(module, augmentNamespacePackageName,
-                    targetTypeBuilder.toInstance(), schemaPathAugmentListEntry.getValue(), genTypeBuilders, genCtx,
+            genCtx = GenHelperUtil.addRawAugmentGenTypeDefinition(module, augmentPackageName,
+                    targetTypeBuilder.toInstance(), targetSchemaNode, schemaPathAugmentListEntry.getValue(), genTypeBuilders, genCtx,
                     schemaContext, verboseClassComments, typeProvider, BindingNamespaceType.Data);
         } else {
             genCtx = generateTypesFromAugmentedChoiceCases(schemaContext, module, basePackageName,
@@ -298,7 +302,7 @@ final class AugmentToGenType {
                         (AugmentationSchema)usesNodeParent);
             }
             genCtx = GenHelperUtil.addRawAugmentGenTypeDefinition(module, packageName,
-                    targetTypeBuilder.toInstance(), schemaPathAugmentListEntry, genTypeBuilders, genCtx,
+                    targetTypeBuilder.toInstance(), targetSchemaNode, schemaPathAugmentListEntry, genTypeBuilders, genCtx,
                     schemaContext, verboseClassComments, typeProvider, namespaceType);
             return genCtx;
         } else {