activate icon indicating copy to clipboard operation
activate copied to clipboard

NoSuchElement exception trying to create an EntityMap

Open alcarvalho opened this issue 12 years ago • 5 comments

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

alcarvalho avatar Feb 27 '14 11:02 alcarvalho

I wasn't able to reproduce the error. Could you test again using 1.5-M4?

fwbrasil avatar Mar 02 '14 19:03 fwbrasil

@alcarvalho I will close the issue for now, please reopen if necessary.

fwbrasil avatar Mar 11 '14 22:03 fwbrasil

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)

alcarvalho avatar Mar 12 '14 02:03 alcarvalho

I'm couldn't reproduce the error yet. It happens intermittently? Could you try to add a "transactional{}" call during you application startup?

fwbrasil avatar Mar 27 '14 21:03 fwbrasil

No this happens consistently with the code I have sent you. And I already have a "transactional {}" call on the application startup. :anguished:

alcarvalho avatar Mar 28 '14 03:03 alcarvalho