Я полагаю, что ответ лежит в строке
while((i=ap.evalXPath)!= -1) {
В Scala присваивание возвращает Unit (эквивалентно void в Java), и, следовательно, этот цикл не может завершиться. Например, следующая программа зацикливается бесконечно
scala> var i = 0
i: Int = 0
scala> while((i = i + 1) != 10) { println(i) }
<console>:7: warning: comparing values of types Unit and Int using `!=' will always yield true
while((i = i + 1) != 10) { println(i) }