Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

scalaxb soap client fails with a strange exception #449

Closed
dportabella opened this issue Nov 8, 2017 · 1 comment
Closed

scalaxb soap client fails with a strange exception #449

dportabella opened this issue Nov 8, 2017 · 1 comment

Comments

@dportabella
Copy link
Contributor

I am trying to call the Web of Science SOAP web service using scalaxb wsdl, as follows:

$ sbt new eed3si9n/scalaxb.g8
  name [foo-project]: WoSScalaAPI
  scala_version [2.12.3]:
  scalaxb_version [1.5.2]:
  dispatch_version [0.12.0]:
  generated_package_name [generated]:
  Template applied in ./wosscalaapi

$ cd wosscalaapi

$ rm ./src/main/wsdl/sample.wsdl
$ wget -O ./src/main/wsdl/WOKMWSAuthenticate.wsdl "http://search.webofknowledge.com/esti/wokmws/ws/WOKMWSAuthenticate?wsdl"
$ wget -O ./src/main/wsdl/WokSearchLite.wsdl "http://search.webofknowledge.com/esti/wokmws/ws/WokSearchLite?wsdl"
$ sbt compile

generated /private/tmp/zz/wosscalaapi/target/scala-2.12/src_managed/main/sbt-scalaxb/generated/WOKMWSAuthenticate_type1.scala.
generated /private/tmp/zz/wosscalaapi/target/scala-2.12/src_managed/main/sbt-scalaxb/generated/WOKMWSAuthenticate.scala.
generated /private/tmp/zz/wosscalaapi/target/scala-2.12/src_managed/main/sbt-scalaxb/generated/WokSearchLite_type1.scala.
generated /private/tmp/zz/wosscalaapi/target/scala-2.12/src_managed/main/sbt-scalaxb/generated/WokSearchLite.scala.
generated /private/tmp/zz/wosscalaapi/target/scala-2.12/src_managed/main/sbt-scalaxb/generated/xmlprotocol.scala.
generated /private/tmp/zz/wosscalaapi/target/scala-2.12/src_managed/main/sbt-scalaxb/scalaxb/scalaxb.scala.
generated /private/tmp/zz/wosscalaapi/target/scala-2.12/src_managed/main/sbt-scalaxb/scalaxb/httpclients_async.scala.
generated /private/tmp/zz/wosscalaapi/target/scala-2.12/src_managed/main/sbt-scalaxb/scalaxb/httpclients_dispatch_async.scala.
generated /private/tmp/zz/wosscalaapi/target/scala-2.12/src_managed/main/sbt-scalaxb/scalaxb/soap11_async.scala.
generated /private/tmp/zz/wosscalaapi/target/scala-2.12/src_managed/main/sbt-scalaxb/soapenvelope11/soapenvelope11.scala.
generated /private/tmp/zz/wosscalaapi/target/scala-2.12/src_managed/main/sbt-scalaxb/soapenvelope11/soapenvelope11_xmlprotocol.scala.

then I create the file src/main/scala/Test.scala with this content:

import generated._
import scala.concurrent._
import scala.concurrent.duration._
import scala.concurrent.ExecutionContext.Implicits.global

object Test extends App {
  val authenticateService =
    new WOKMWSAuthenticateServiceSoapBindings with
      scalaxb.Soap11ClientsAsync with
      scalaxb.DispatchHttpClientsAsync {}
      .service

  val authenticateFutureResponse: Future[AuthenticateResponse] = authenticateService.authenticate()
  val authenticateResponse = Await.result(authenticateFutureResponse, 5 seconds)
  println(authenticateResponse)


  val searchService =
    new WokSearchLiteServiceSoapBindings with
      scalaxb.Soap11ClientsAsync with
      scalaxb.DispatchHttpClientsAsync {}
      .service

  val queryParameters = QueryParameters(databaseId = "WOS", userQuery = "DO='10.1126/science.1227970'", queryLanguage = "en")
  val retrieveParameters = RetrieveParameters(firstRecord = 1, count = 5, Seq(SortField(name = "RS", sort = "D")))

  val searchFutureResponse = searchService.search(queryParameters, retrieveParameters)
  println("AAA1")
  val searchResponse = Await.result(searchFutureResponse, 5 seconds)
  println("AAA2")
  println(searchResponse)
}

This works well on the first call to authenticateService.authenticate(), but it fails on searchService.search, between printing AAA1 and AAA2, with:

AuthenticateResponse(Some(R15ACHlb2emby3TZZZZ))
AAA1
Exception in thread "main" java.util.NoSuchElementException: head of empty list
	at scala.collection.immutable.Nil$.head(List.scala:428)
	at scala.collection.immutable.Nil$.head(List.scala:425)
	at scalaxb.Soap11Fault.$anonfun$asFault$1(soap11_async.scala:6)
	at scala.Option.map(Option.scala:146)
	at scalaxb.Soap11Fault.asFault(soap11_async.scala:5)
	at generated.XMLProtocol$WokSearchLiteServiceSoapBindings$WokSearchLiteServiceSoapBinding.$anonfun$search$2(xmlprotocol.scala:796)
	at scala.concurrent.Future.$anonfun$transform$3(Future.scala:240)
	at scala.concurrent.Future.$anonfun$transform$1(Future.scala:240)
	at scala.concurrent.impl.Promise.liftedTree1$1(Promise.scala:29)
	at scala.concurrent.impl.Promise.$anonfun$transform$1(Promise.scala:29)
	at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:60)
	at scala.concurrent.impl.ExecutionContextImpl$AdaptedForkJoinTask.exec(ExecutionContextImpl.scala:140)
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
	at java.util.concurrent.ForkJoinPool$WorkQueue.pollAndExecAll(ForkJoinPool.java:1021)
	at java.util.concurrent.ForkJoinPool$WorkQueue.execLocalTasks(ForkJoinPool.java:1046)
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1058)
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

Any idea?

Does this look like scalaxb bug, or a web server bug, or a bug on my code?

Question posted in stackoverflow: https://stackoverflow.com/questions/47187224/scalaxb-soap-client-fails-with-a-strange-exception

@eed3si9n
Copy link
Owner

eed3si9n commented Sep 9, 2018

Fixed in #450

@eed3si9n eed3si9n closed this as completed Sep 9, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants