NoSuchElement exception trying to create an EntityMap
When I try to create an EntityMap it throws this exception.
My entities are:
trait User extends Entity {
val userLogin: String
val email: String
val passwordHash: String
val name: String
}
class Specialist(val email: String, password: String, val name: String, val cpf: String) extends User {
override val userLogin = email
override val passwordHash = User.hashPassword(password)
}
And here is the stack trace:
java.util.NoSuchElementException: None.get
at scala.None$.get(Option.scala:313)
at scala.None$.get(Option.scala:311)
at net.fwbrasil.activate.entity.EntityHelper$.getEntityMetadata(EntityHelper.scala:55)
at net.fwbrasil.activate.entity.map.EntityMapBase$class.$init$(EntityMapBase.scala:118)
at net.fwbrasil.activate.entity.map.EntityMap.<init>(EntityMap.scala:14)
at net.fwbrasil.activate.entity.map.EntityMap.<init>(EntityMap.scala:21)
at preavs.services.service.Authenticate$$anonfun$userForToken$1.apply(Authenticate.scala:20)
at preavs.services.service.Authenticate$$anonfun$userForToken$1.apply(Authenticate.scala:16)
at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
at net.fwbrasil.radon.transaction.TransactionalExecutionContext$$anon$1$$anonfun$run$1.apply$mcV$sp(TransactionContext.scala:109)
at net.fwbrasil.radon.transaction.TransactionalExecutionContext$$anon$1$$anonfun$run$1.apply(TransactionContext.scala:109)
at net.fwbrasil.radon.transaction.TransactionalExecutionContext$$anon$1$$anonfun$run$1.apply(TransactionContext.scala:109)
at net.fwbrasil.radon.transaction.TransactionManager.runInTransaction(TransactionManager.scala:53)
at net.fwbrasil.radon.transaction.Required.execute(Propagation.scala:21)
at net.fwbrasil.radon.transaction.TransactionContext$class.transactional(TransactionContext.scala:57)
at net.fwbrasil.radon.transaction.TransactionContext$class.transactional(TransactionContext.scala:47)
at preavs.services.MyActivateContext$.transactional(MyActivateContext.scala:14)
at net.fwbrasil.radon.transaction.TransactionContext$class.transactional(TransactionContext.scala:44)
at preavs.services.MyActivateContext$.transactional(MyActivateContext.scala:14)
at net.fwbrasil.radon.transaction.TransactionalExecutionContext.transactional(TransactionContext.scala:115)
at net.fwbrasil.radon.transaction.TransactionalExecutionContext$$anon$1.run(TransactionContext.scala:108)
at scala.concurrent.impl.ExecutionContextImpl$$anon$3.exec(ExecutionContextImpl.scala:107)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
This happens on the version 1.5-SNAPSHOT
I wasn't able to reproduce the error. Could you test again using 1.5-M4?
@alcarvalho I will close the issue for now, please reopen if necessary.
I'm sorry it took so long for me to test this against 1.5-M4. But I didn't have the code that produced this problem anymore.
Anyway, I have managed to reproduce it again and with 1.5-M4 version I have this result:
java.lang.IllegalArgumentException: Invalid entity class interface preavs.services.model.User.
at net.fwbrasil.activate.entity.EntityHelper$$anonfun$getEntityMetadata$1.apply(EntityHelper.scala:56)
at net.fwbrasil.activate.entity.EntityHelper$$anonfun$getEntityMetadata$1.apply(EntityHelper.scala:56)
at scala.Option.getOrElse(Option.scala:120)
at net.fwbrasil.activate.entity.EntityHelper$.getEntityMetadata(EntityHelper.scala:55)
at net.fwbrasil.activate.entity.map.EntityMapBase$class.$init$(EntityMapBase.scala:126)
at net.fwbrasil.activate.entity.map.EntityMap.<init>(EntityMap.scala:14)
at net.fwbrasil.activate.entity.map.EntityMap.<init>(EntityMap.scala:21)
at preavs.services.service.Authenticate$$anonfun$1$$anonfun$apply$1$$anonfun$apply$2$$anonfun$apply$4.apply(Authenticate.scala:20)
at preavs.services.service.Authenticate$$anonfun$1$$anonfun$apply$1$$anonfun$apply$2$$anonfun$apply$4.apply(Authenticate.scala:20)
at scala.Option.map(Option.scala:145)
at preavs.services.service.Authenticate$$anonfun$1$$anonfun$apply$1$$anonfun$apply$2.apply(Authenticate.scala:20)
at preavs.services.service.Authenticate$$anonfun$1$$anonfun$apply$1$$anonfun$apply$2.apply(Authenticate.scala:20)
at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
at net.fwbrasil.radon.transaction.TransactionalExecutionContext$$anon$1$$anonfun$run$1.apply$mcV$sp(TransactionContext.scala:109)
at net.fwbrasil.radon.transaction.TransactionalExecutionContext$$anon$1$$anonfun$run$1.apply(TransactionContext.scala:109)
at net.fwbrasil.radon.transaction.TransactionalExecutionContext$$anon$1$$anonfun$run$1.apply(TransactionContext.scala:109)
at net.fwbrasil.radon.transaction.TransactionManager.runInTransaction(TransactionManager.scala:53)
at net.fwbrasil.radon.transaction.Required.execute(Propagation.scala:21)
at net.fwbrasil.radon.transaction.TransactionContext$class.transactional(TransactionContext.scala:57)
at net.fwbrasil.radon.transaction.TransactionContext$class.transactional(TransactionContext.scala:47)
at preavs.services.MyActivateContext$.transactional(MyActivateContext.scala:14)
at net.fwbrasil.radon.transaction.TransactionContext$class.transactional(TransactionContext.scala:44)
at preavs.services.MyActivateContext$.transactional(MyActivateContext.scala:14)
at net.fwbrasil.radon.transaction.TransactionalExecutionContext.transactional(TransactionContext.scala:115)
at net.fwbrasil.radon.transaction.TransactionalExecutionContext$$anon$1.run(TransactionContext.scala:108)
at scala.concurrent.impl.ExecutionContextImpl$$anon$3.exec(ExecutionContextImpl.scala:107)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
I'm couldn't reproduce the error yet. It happens intermittently? Could you try to add a "transactional{}" call during you application startup?
No this happens consistently with the code I have sent you. And I already have a "transactional {}" call on the application startup. :anguished: