<meta charset="utf-8"><span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; "><div>Hi all,</div><div><br></div>I am trying to use a Knowledge Agent in 5.1.1 with a change set with a few different packages and resource types in it, and I am running into a problem where it is not adding all the packages. Looking at the code I can see that KnowledegeAgentImpl.createPackageFromResource has the following code when it loads a resource:<div>
<br></div><div><p>            <span>if</span> (kbuilder.getKnowledgePackages().iterator().hasNext()) {</p><p>                <span>return</span> (KnowledgePackageImp) kbuilder.getKnowledgePackages().iterator().next();</p>
<p>            }</p><p><br></p><p><span style="font-family: arial; font-size: small; ">and KnowledgeBuilderImpl.getKnowledgePackages does the following:</span></p><p><span style="font-family: arial; font-size: small; "><br>
</span></p><p><span></span><span></span>Package[] pkgs = pkgBuilder.getPackages();</p><p><span style="font-family: arial; font-size: small; "><span style="font-family: Monaco; font-size: 11px; "><span></span><span></span>List&lt;KnowledgePackage&gt; list = <span>new</span> ArrayList&lt;KnowledgePackage&gt;( pkgs.length );</span> </span></p>
<p></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-family: arial; font-size: small; "><span style="font-family: arial; font-size: small; "><br></span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">
<font face="arial" size="2">and PackageBuilder.getPackages does the following:</font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="arial" size="2"><br></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">
<font face="arial" size="2"></font></p><p><font face="arial" size="2">        <span>for</span> ( PackageRegistry pkgRegistry : <span>this</span>.<span>pkgRegistryMap</span>.values() ) {</font></p><font face="arial" size="2"><p>
            Package pkg = pkgRegistry.getPackage();</p><p>            // add package to array</p><p>        }</p></font><p></p><div style="font-family: arial; font-size: small; "><br></div><div style="font-family: arial; font-size: small; ">
pkgRegistryMap is implemented as a HashMap however so the order the packages are returned in is not guaranteed. I seem to be hitting this problem. </div><div style="font-family: arial; font-size: small; "><br></div><div style="font-family: arial; font-size: small; ">
This is a hard one to create a unit test for so I wanted to check that my analysis is correct before raising a bug. Perhaps using a LinkedHashMap or similar would fix it?</div><div style="font-family: arial; font-size: small; ">
<br></div><div style="font-family: arial; font-size: small; ">thanks</div><div style="font-family: arial; font-size: small; ">Steve</div></div></span>