Merge "BUG 718: changed codec for URI parsing"
[controller.git] / opendaylight / config / yang-jmx-generator-plugin / src / main / resources / freeMarker / module_abs_template_new.ftl
index f7197d1582ca70193cb21591922f8c77529a31ed..848fcfe5fc4808bf1bf260a0022dcd98cf3b1c2a 100644 (file)
@@ -85,6 +85,12 @@ package ${packageName};
     </#if>
     </#list>
 
+    // caches of resolved IdentityRefs
+    <#list moduleFields as field>
+    <#if field.identityRef==true>
+        private ${field.identityClassType} ${field.identityClassName};
+    </#if>
+    </#list>
 
     @Override
     public final ${instanceType} getInstance(){
@@ -109,6 +115,24 @@ package ${packageName};
                         }
                     </#if>
                 </#if>
+
+                <#if field.needsDepResolver==true>
+            if(${field.name} != null) {
+                    <#if field.type?starts_with("java.util.List")>
+                for(${field.type?substring(field.type?index_of("<") + 1, field.type?index_of(">"))} candidate : ${field.name}) {
+                    candidate.injectDependencyResolver(dependencyResolver);
+                }
+                    <#else>
+                ${field.name}.injectDependencyResolver(dependencyResolver);
+                    </#if>
+            }
+                </#if>
+
+                <#if field.identityRef==true>
+            if(${field.name} != null) {
+                set${field.attributeName}(${field.name}.resolveIdentity(dependencyResolver, ${field.identityBaseClass}.class));
+            }
+                </#if>
             </#list>
 
             if(oldInstance!=null && canReuseInstance(oldModule)) {
@@ -149,13 +173,19 @@ package ${packageName};
             throw new IllegalArgumentException("Parameter 'other' is null");
         }
         <#list moduleFields as field>
-        <#if field.dependent==true>
-        if (${field.name}Dependency == null) {
-            if (other.${field.name}Dependency != null)
-                return false;
-        } else if (!${field.name}Dependency.equals(other.${field.name}Dependency)) {
+        <#if field.dependent==true && field.listOfDependencies == false>
+        if (${field.name}Dependency != other.${field.name}Dependency) { // reference to dependency must be same
             return false;
         }
+        <#elseif field.listOfDependencies>
+        if (${field.name}Dependency.equals(other.${field.name}Dependency) == false) {
+            return false;
+        }
+        for (int idx = 0; idx < ${field.name}Dependency.size(); idx++) {
+            if (${field.name}Dependency.get(idx) != other.${field.name}Dependency.get(idx)) {
+                return false;
+            }
+        }
         <#else>
         if (${field.name} == null) {
             if (other.${field.name} != null) {