This can be reproduced in 9.2.4 and 9.3.3 (only tried those 2 versions)

We are using java:HashMap, and we are seeing that when we insert a node into 
the HashMap from a file and do a subsequent hash:get, the generate-id() for the 
hash:get is different than the original generate-id value from the hash:put.
Note:  when we read the XML from a file, that is when we see the issue, if we 
declare the XML in Basex GUI, we do NOT see this behavior.  Here are the 
examples:

Scenario #1:  XML is a variable in the BaseX GUI session --- no bug
----------------------------------------------------------------------------------------
declare namespace hash = "java:java.util.HashMap";
let $data := <A>
   <B>
       <C>
           <Message>Hi there</Message>
           <Message>How are you</Message>
           <D>
               <E>1</E>
           </D>
       </C>
   </B>
</A>
let $node := $data//*:C

let $kb := hash:new()
let $nullOp := hash:put($kb, generate-id($node), $node)
let $getNode := hash:get($kb,  generate-id($node))
return
(generate-id($node), generate-id($getNode))

Result:
id6312150
id6312150

Scenario #2:  XML is  read in from a file --- bug appears
----------------------------------------------------------------------------------------
Move the data into a file and then read in from the file, that is when we see 
the issue.

declare namespace hash = "java:java.util.HashMap";
let $file := doc('SampleData.xml')
let $node := $file//*:C[1]

let $kb := hash:new()
let $null := hash:put($kb, generate-id($node), $node)
let $getNode := hash:get($kb,  generate-id($node))
return
(generate-id($node), generate-id($getNode))

Result:
id30601d5
id30602d0


Thanks in advance for your assistance

Buddy

Reply via email to