scala models parsing not working with swagger-scala-module "1.0.2" and swagger-play2 "1.5.3"

43 views
Skip to first unread message

Михаил Ерёменко

unread,
Jan 14, 2017, 11:08:01 AM1/14/17
to Swagger
Hello!

I have a problem with generating model definitions from my model classes.

Here my models:

object DocumentsModels {

  case class FColor(id: Int, name: String)

  case class FSize(id: Int, name: String)

  case class FType(id: Int, name: String, abr: Option[String])

  case class FSort(id: Int, flowerTypeId: Int, name: String, abr: Option[String])

  case class PlantCountry(id: Int, name: String, abr: Option[String])

  case class Plant(id: Int, name: String, brand: Option[String])

  case class Truck(id: Int, name: String)

  case class User(id: Int, name: String)

  case class Claim(id: Int, userId: Int, invoiceId: Long, invoiceHeadId: Long, status: Int, unixDate: Long,
                   plantationId: Option[Int], comment: Option[String], stems: Int, sum: BigDecimal, photoUrls: Option[Seq[String]])

//...

case class ClaimDetails(status: Int, timestamp: Long, id: Int, invoice: Invoice, invoiceDetailsHead: InvoiceDetails.Head,
claimInvoiceRows: Seq[ClaimDetails.Row], claimSubjectId: Option[Int], claimComment: Option[String],
photos: Option[Seq[ClaimDetails.Photo]],
flowerSorts: Seq[FSort], flowerTypes: Seq[FType], flowerSizes: Seq[FSize],
plantations: Seq[Plant], countries: Seq[PlantCountry], users: Seq[User])

object ClaimDetails {
case class Row(rowId: Int, claimStems: Int, claimPerStemPrice: BigDecimal)
case class Photo(id: String, url: String)
}

  case class ClaimChanges(status: Int, clientId: Int, claimInvoiceId: Long, claimInvoiceHeadId: Long,
                          claimSubjectId: Option[Int], claimComment: Option[String], claimInvoiceRows: Seq[ClaimDetails.Row],
                          photos: Option[Seq[ClaimChanges.Photo]])

  object ClaimChanges {
    case class Photo(photoId: Option[String], fileName: Option[String])
  }

  case class InvoicesBundle(invoices: Seq[Invoice], users: Seq[User], plantations: Seq[Plant])

  case class Invoice(id: Long, date: String, userId: Int, fb: BigDecimal, number: String, zipFile: String, fileName: String,
                     claims: Option[Seq[Claim]] = None)

  }

}

I`m trying set swagger api operation like this:
@ApiOperation(value = "....", response = classOf[models.DocumentsModels.Invoice]) // working fine
@ApiOperation(value = "....", response = classOf[models.DocumentsModels.ClaimChanges]) // error

Here the stacktrace:

CreationException: Unable to create injector, see the following errors:

1) Error injecting constructor, java.lang.InternalError: Malformed class name
  at play.modules.swagger.SwaggerPluginImpl.<init>(SwaggerPlugin.scala:35)
  while locating play.modules.swagger.SwaggerPluginImpl
  at play.modules.swagger.SwaggerModule.bindings(SwaggerModule.scala:11):
Binding(interface play.modules.swagger.SwaggerPlugin to ConstructionTarget(class play.modules.swagger.SwaggerPluginImpl) eagerly) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1)
  while locating play.modules.swagger.SwaggerPlugin

1 error

com.google.inject.CreationException: Unable to create injector, see the following errors:

1) Error injecting constructor, java.lang.InternalError: Malformed class name
  at play.modules.swagger.SwaggerPluginImpl.<init>(SwaggerPlugin.scala:35)
  while locating play.modules.swagger.SwaggerPluginImpl
  at play.modules.swagger.SwaggerModule.bindings(SwaggerModule.scala:11):
Binding(interface play.modules.swagger.SwaggerPlugin to ConstructionTarget(class play.modules.swagger.SwaggerPluginImpl) eagerly) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1)
  while locating play.modules.swagger.SwaggerPlugin

1 error
     com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:466)
     com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:184)
     com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)
     com.google.inject.Guice.createInjector(Guice.java:96)
     com.google.inject.Guice.createInjector(Guice.java:84)
     play.api.inject.guice.GuiceBuilder.injector(GuiceInjectorBuilder.scala:181)
     play.api.inject.guice.GuiceApplicationBuilder.build(GuiceApplicationBuilder.scala:123)
     play.api.inject.guice.GuiceApplicationLoader.load(GuiceApplicationLoader.scala:21)
     play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1$$anonfun$2.apply(DevServerStart.scala:168)
     play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1$$anonfun$2.apply(DevServerStart.scala:164)
     play.utils.Threads$.withContextClassLoader(Threads.scala:21)
     play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:164)
     play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:131)
     scala.Option.map(Option.scala:146)
     play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(DevServerStart.scala:131)
     play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(DevServerStart.scala:129)
     scala.util.Success.flatMap(Try.scala:231)
     play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(DevServerStart.scala:129)
     play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(DevServerStart.scala:121)
     scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
     scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
     java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
     java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
     java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
     java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
     java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

Why it is happening? And how I can fixed this error? 

Thanks

Tony Tam

unread,
Jan 14, 2017, 12:40:32 PM1/14/17
to swagger-sw...@googlegroups.com
Can you try with the latest snapshot?
--
You received this message because you are subscribed to the Google Groups "Swagger" group.
To unsubscribe from this group and stop receiving emails from it, send an email to swagger-swaggers...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Михаил Ерёменко

unread,
Jan 14, 2017, 1:05:35 PM1/14/17
to swagger-sw...@googlegroups.com
Yes, I can. How I can get the latest snapshot? Is it published somewhere?

Tony Tam

unread,
Jan 14, 2017, 2:09:41 PM1/14/17
to swagger-sw...@googlegroups.com
It should be on sonatype snapshots 

On Jan 14, 2017, at 10:05 AM, Михаил Ерёменко <yeryo...@gmail.com> wrote:

Yes, I can. How I can get the latest snapshot? Is it published somewhere?

--

diaz_car...@yahoo.com

unread,
Jan 14, 2017, 5:56:57 PM1/14/17
to swagger-sw...@googlegroups.com

--------------------------------------------
On Sat, 1/14/17, Tony Tam <feh...@gmail.com> wrote:

Subject: Re: scala models parsing not working with swagger-scala-module "1.0.2" and swagger-play2 "1.5.3"
To: swagger-sw...@googlegroups.com
Date: Saturday, January 14, 2017, 9:09 PM
iata culturala romaneasca din perioada 1877-1918 se prezinta astfel ca jn fenomen complex atingand cote valorice superlative. in cadrul sau s-au ructificat roadele unei activitati inceputa inca anterior anului 1848 si in care cultura romana s-a aliniat celei europene. Principalele institutii culturale s-au aflat acum in perioada de organizare care nu lipsita de unele ezitari a constituit un inceput condus in mod ferm de o generatie de oameni de cultura beneficiind

Михаил Ерёменко

unread,
Jan 14, 2017, 7:07:50 PM1/14/17
to Swagger
I`m sorry, but I can not figure out how to add snapshot to my project.
Maybe you can tell me which dependencies and resolvers I should provide in my build.sbt file?

BTW Should I add  both "swagger-scala-module" and "swagger-play2" to my dependencies or "swagger-play2" will be enough?


суббота, 14 января 2017 г., 21:09:41 UTC+2 пользователь tony tam написал:
It should be on sonatype snapshots 

On Jan 14, 2017, at 10:05 AM, Михаил Ерёменко <yeryo...@gmail.com> wrote:

Yes, I can. How I can get the latest snapshot? Is it published somewhere?

--
You received this message because you are subscribed to the Google Groups "Swagger" group.
To unsubscribe from this group and stop receiving emails from it, send an email to swagger-swaggersocket+unsub...@googlegroups.com.

calde...@yahoo.com

unread,
Jan 15, 2017, 6:30:27 AM1/15/17
to swagger-sw...@googlegroups.com

--------------------------------------------
On Sun, 1/15/17, Михаил Ерёменко <yeryo...@gmail.com> wrote:

Subject: Re: scala models parsing not working with swagger-scala-module "1.0.2" and swagger-play2 "1.5.3"
To: "Swagger" <swagger-sw...@googlegroups.com>
Date: Sunday, January 15, 2017, 2:07 AM
from it, send an email to swagger-swaggers...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.
tunci s-a nascut ideea de a oferi tronul celor doua Principate reunite lui ' Sturdza. Desi domnul Moldovei nu avea renumele unui liberal si nici nu imarcase in apararea autonomiei tarii se spera astfel sa se puna capat ilor boieresti si sa fie anihilata preponderenta tarista. Ion Ghica emisarul 'idei nationale a fost trimis la lasi cu mandat precis. . Campineanu renunta litiv la tron in schimbul angajamentului lui Mihail Sturdza ca va obtine de ia rea suzerana Unirea Principatelor si desfiintarea protectoratului rus. Domnul moldovean s-a aratat interesat de propunere in ce priveste unirea a convins ca nu se putea realiza fara sprijinul Frantei si Angliei. in relatii mai ise decat Al. Ghica cu puterile occidentale M. Sturdza intelegea ca ersul unionist nu poate avea succes decat insotit de o puternica presiune nationala asupra puterii protectoare si a celei suzerane. Misiunile diplo-

frazierj...@yahoo.com

unread,
Jan 15, 2017, 7:54:50 AM1/15/17
to swagger-sw...@googlegroups.com

--------------------------------------------
On Sun, 1/15/17, caldercarey via Swagger <swagger-sw...@googlegroups.com> wrote:

Subject: Re: scala models parsing not working with swagger-scala-module "1.0.2" and swagger-play2 "1.5.3"
To: swagger-sw...@googlegroups.com
Date: Sunday, January 15, 2017, 1:27 PM
https://groups.google.com/d/optout.2 mai - Parlamentul maghiar voteaza legea Trefort ce prevede obligativitatea invatarii limbii maghiare in toate scolile elementare din Ungaria

diaz_car...@yahoo.com

unread,
Jan 15, 2017, 9:01:58 PM1/15/17
to swagger-sw...@googlegroups.com

--------------------------------------------
On Sun, 1/15/17, frazierjanice629 via Swagger <swagger-sw...@googlegroups.com> wrote:

Subject: Re: scala models parsing not working with swagger-scala-module "1.0.2" and swagger-play2 "1.5.3"
To: swagger-sw...@googlegroups.com
Date: Sunday, January 15, 2017, 2:51 PM
https://groups.google.com/d/optout.a sub nici o forma ametit de un succes neasteptat foarte hotarat sa puna in practica Unirea si

diaz_car...@yahoo.com

unread,
Jan 16, 2017, 12:17:24 AM1/16/17
to swagger-sw...@googlegroups.com

--------------------------------------------
On Mon, 1/16/17, diaz_carolyn97772 via Swagger <swagger-sw...@googlegroups.com> wrote:

Subject: Re: scala models parsing not working with swagger-scala-module "1.0.2" and swagger-play2 "1.5.3"
To: swagger-sw...@googlegroups.com
Date: Monday, January 16, 2017, 3:57 AM
https://groups.google.com/d/optout.n consecinta in noaptea de 18 ianuarie 1821 Tudor a parasit Bucurestiul si dupa ce a intarit Manastirea Tismana s-a instalat la Pades unde oamenii sai de incredere pregatisera ra ea De aici la 23 ianuarie el a facut cunoscuta Proclamatia prin care chema pe toti locuitorii tarii pentru a inlatura nedreptatile si raul ce ni-l pun peste cap capeteniile noastre iar dintre acestia sa se aleaga... cei care pot sa fie buni si cu care noi dimpreuna vom lucra binele ca sa le fie si lor bine precum ne sunt fagaduiti .

tony tam

unread,
Jan 16, 2017, 10:59:16 PM1/16/17
to swagger-sw...@googlegroups.com
I think that’s more of an SBT concern.  See here for how to enable snapshot repos in SBT (depends on version, of course):


To unsubscribe from this group and stop receiving emails from it, send an email to swagger-swaggers...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages