Tnx Dan,
I will look into that. It has the characteristics of an incomplete metamodel I
encountered before in Matching App ....
Hard to say without more information, Johan.
Double check that the "RegisterEntities" key in isis.properties specifies
all the packages where your domain objects live. We introduced this to
provide a hint to DN so that it would be able to eagerly build its
metamodel; we found that sometimes if we made it lazy then we'd get odd
errors.
Another thing you can do is to add dummy @Hidden actions on a repository
that "surface" all subtypes of entities; this is actually what we used to
do before "RegisterEntities" so perhaps do this first (I also have a
sneaking suspicion that "RegisterEntities" might perhaps be broken, need to
investigate).
Of course, all the above might be a wild good chase... but it's seeing DN
complain that it can't instantiate an abstract class that makes me think
that its metamodel is somehow incomplete...
HTH
Dan
On 1 May 2015 at 14:57, wrote:
> When running integration tests in estatio I get. But sometimes it does
> run. Is this a datanucleus problem or am I missing something?
>
>
>
> grtz Johan
>
>
>
>
> 15:55:14,224 [IsisTransaction main INFO ] abort
> transaction IsisTransaction@10f125e5[state=MUST_ABORT,commands=0]
>
>
>
> javax.jdo.JDOFatalInternalException: Cannot instantiate abstract
> class.
>
> at
> org.estatio.dom.EstatioDomainObject.dnNewInstance(EstatioDomainObject.java)
>
> at
> org.datanucleus.state.StateManagerImpl.saveFields(StateManagerImpl.java:672)
>
> at
> org.datanucleus.state.StateManagerImpl.initialiseForPersistentNew(StateManagerImpl.java:420)
>
> at
> org.apache.isis.objectstore.jdo.datanucleus.JDOStateManagerForIsis.initialiseForPersistentNew(JDOStateManagerForIsis.java:87)
>
> at
> org.apache.isis.objectstore.jdo.datanucleus.JDOStateManagerForIsis.initialiseForPersistentNew(JDOStateManagerForIsis.java:33)
>
> at
> org.datanucleus.state.ObjectProviderFactoryImpl.newForPersistentNew(ObjectProviderFactoryImpl.java:218)
>
> at
> org.datanucleus.ExecutionContextImpl.persistObjectInternal(ExecutionContextImpl.java:1999)
>
> at
> org.datanucleus.ExecutionContextImpl.persistObjectWork(ExecutionContextImpl.java:1843)
>
> at
> org.datanucleus.ExecutionContextImpl.persistObject(ExecutionContextImpl.java:1698)
>
> at
> org.datanucleus.api.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceManager.java:720)
>
> at
> org.datanucleus.api.jdo.JDOPersistenceManager.makePersistent(JDOPersistenceManager.java:745)
>
> at
> org.apache.isis.objectstore.jdo.datanucleus.persistence.commands.DataNucleusCreateObjectCommand.execute(DataNucleusCreateObjectCommand.java:54)
>
> at
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusObjectStore.executeCommands(DataNucleusObjectStore.java:363)
>
> at
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusObjectStore.execute(DataNucleusObjectStore.java:357)
>
> at
> org.apache.isis.core.runtime.system.transaction.IsisTransaction.doFlush(IsisTransaction.java:521)
>
> at
> org.apache.isis.core.runtime.system.transaction.IsisTransaction.flush(IsisTransaction.java:467)
>
> at
> org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.flushTransaction(IsisTransactionManager.java:392)
>
> at
> org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession$7.flush(RuntimeContextFromSession.java:238)
>
> at
> org.apache.isis.core.metamodel.services.container.DomainObjectContainerDefault.flush(DomainObjectContainerDefault.java:265)
>
> at
> org.apache.isis.core.metamodel.services.container.DomainObjectContainerDefault.allMatches(DomainObjectContainerDefault.java:546)
>
> at
> org.apache.isis.applib.AbstractContainedObject.allMatches(AbstractContainedObject.java:170)
>
> at
> org.estatio.dom.UdoDomainRepositoryAndFactory.allMatches(UdoDomainRepositoryAndFactory.java:69)
>
> at org.estatio.dom.asset.Units.findByProperty(Units.java:100)
>
> at
> org.estatio.dom.budget.BudgetKeyTable.generateBudgetKeyItems(BudgetKeyTable.java:298)
>
> at
> org.estatio.fixture.budget.BudgetKeyTableAbstact.createBudgetKeyTable(BudgetKeyTableAbstact.java:47)
>
> at
> org.estatio.fixture.budget.BudgetKeyTableForOxf.execute(BudgetKeyTableForOxf.java:49)
>
> at
> org.apache.isis.applib.fixturescripts.FixtureScript$ExecutionContext.executeChildIfNotAlready(FixtureScript.java:549)
>
> at
> org.apache.isis.applib.fixturescripts.FixtureScript$ExecutionContext.access$200(FixtureScript.java:248)
>
> at
> org.apache.isis.applib.fixturescripts.FixtureScript.run(FixtureScript.java:719)
>
> at
> org.apache.isis.applib.fixturescripts.FixtureScripts.runFixtureScript(FixtureScripts.java:285)
>
> at
> org.estatio.fixturescripts.EstatioFixtureScripts.runFixtureScript(EstatioFixtureScripts.java:60)
>
> at
> org.estatio.integtests.EstatioIntegrationTest.runFixtureScript(EstatioIntegrationTest.java:75)
>
> at
> org.estatio.integtests.budget.BudgetKeyTableTest.setupData(BudgetKeyTableTest.java:41)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
> at
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
>
> at
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>
> at
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
>
> at
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
>
> at
> org.apache.isis.core.integtestsupport.IntegrationTestAbstract$IsisTransactionRule$1.evaluate(IntegrationTestAbstract.java:214)
>
> at
> org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2$1.evaluate(JUnitRuleMockery2.java:146)
>
> at
> org.apache.isis.core.integtestsupport.ExceptionRecognizerTranslate$TranslationStatement.evaluate(ExceptionRecognizerTranslate.java:32)
>
> at
> org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:168)
>
> at org.junit.rules.RunRules.evaluate(RunRules.java:20)
>
> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
>
> at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
>
> at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
>
> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
>
> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
>
> at
> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
>
> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
>
> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
>
> at
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
>
> at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
>
> at org.junit.runners.Suite.runChild(Suite.java:127)
>
> at org.junit.runners.Suite.runChild(Suite.java:26)
>
> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
>
> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
>
> at
> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
>
> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
>
> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
>
> at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
>
> at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
>
> at
> com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:78)
>
> at
> com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:212)
>
> at
> com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:68)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>
> at
> com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
>
>
>
> 15:55:14,224 [IsisTransaction main INFO ] abort
> transaction IsisTransaction@10f125e5[state=MUST_ABORT,commands=0]
>
>
>
> javax.jdo.JDOFatalInternalException: Cannot instantiate abstract
> class.
>
> at
> org.estatio.dom.EstatioDomainObject.dnNewInstance(EstatioDomainObject.java)
>
> at
> org.datanucleus.state.StateManagerImpl.saveFields(StateManagerImpl.java:672)
>
> at
> org.datanucleus.state.StateManagerImpl.initialiseForPersistentNew(StateManagerImpl.java:420)
>
> at
> org.apache.isis.objectstore.jdo.datanucleus.JDOStateManagerForIsis.initialiseForPersistentNew(JDOStateManagerForIsis.java:87)
>
> at
> org.apache.isis.objectstore.jdo.datanucleus.JDOStateManagerForIsis.initialiseForPersistentNew(JDOStateManagerForIsis.java:33)
>
> at
> org.datanucleus.state.ObjectProviderFactoryImpl.newForPersistentNew(ObjectProviderFactoryImpl.java:218)
>
> at
> org.datanucleus.ExecutionContextImpl.persistObjectInternal(ExecutionContextImpl.java:1999)
>
> at
> org.datanucleus.ExecutionContextImpl.persistObjectWork(ExecutionContextImpl.java:1843)
>
> at
> org.datanucleus.ExecutionContextImpl.persistObject(ExecutionContextImpl.java:1698)
>
> at
> org.datanucleus.api.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceManager.java:720)
>
> at
> org.datanucleus.api.jdo.JDOPersistenceManager.makePersistent(JDOPersistenceManager.java:745)
>
> at
> org.apache.isis.objectstore.jdo.datanucleus.persistence.commands.DataNucleusCreateObjectCommand.execute(DataNucleusCreateObjectCommand.java:54)
>
> at
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusObjectStore.executeCommands(DataNucleusObjectStore.java:363)
>
> at
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusObjectStore.execute(DataNucleusObjectStore.java:357)
>
> at
> org.apache.isis.core.runtime.system.transaction.IsisTransaction.doFlush(IsisTransaction.java:521)
>
> at
> org.apache.isis.core.runtime.system.transaction.IsisTransaction.flush(IsisTransaction.java:467)
>
> at
> org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.flushTransaction(IsisTransactionManager.java:392)
>
> at
> org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession$7.flush(RuntimeContextFromSession.java:238)
>
> at
> org.apache.isis.core.metamodel.services.container.DomainObjectContainerDefault.flush(DomainObjectContainerDefault.java:265)
>
> at
> org.apache.isis.core.metamodel.services.container.DomainObjectContainerDefault.allMatches(DomainObjectContainerDefault.java:546)
>
> at
> org.apache.isis.applib.AbstractContainedObject.allMatches(AbstractContainedObject.java:170)
>
> at
> org.estatio.dom.UdoDomainRepositoryAndFactory.allMatches(UdoDomainRepositoryAndFactory.java:69)
>
> at org.estatio.dom.asset.Units.findByProperty(Units.java:100)
>
> at
> org.estatio.dom.budget.BudgetKeyTable.generateBudgetKeyItems(BudgetKeyTable.java:298)
>
> at
> org.estatio.fixture.budget.BudgetKeyTableAbstact.createBudgetKeyTable(BudgetKeyTableAbstact.java:47)
>
> at
> org.estatio.fixture.budget.BudgetKeyTableForOxf.execute(BudgetKeyTableForOxf.java:49)
>
> at
> org.apache.isis.applib.fixturescripts.FixtureScript$ExecutionContext.executeChildIfNotAlready(FixtureScript.java:549)
>
> at
> org.apache.isis.applib.fixturescripts.FixtureScript$ExecutionContext.access$200(FixtureScript.java:248)
>
> at
> org.apache.isis.applib.fixturescripts.FixtureScript.run(FixtureScript.java:719)
>
> at
> org.apache.isis.applib.fixturescripts.FixtureScripts.runFixtureScript(FixtureScripts.java:285)
>
> at
> org.estatio.fixturescripts.EstatioFixtureScripts.runFixtureScript(EstatioFixtureScripts.java:60)
>
> at
> org.estatio.integtests.EstatioIntegrationTest.runFixtureScript(EstatioIntegrationTest.java:75)
>
> at
> org.estatio.integtests.budget.BudgetKeyTableTest.setupData(BudgetKeyTableTest.java:41)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
> at
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
>
> at
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>
> at
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
>
> at
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
>
> at
> org.apache.isis.core.integtestsupport.IntegrationTestAbstract$IsisTransactionRule$1.evaluate(IntegrationTestAbstract.java:214)
>
> at
> org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2$1.evaluate(JUnitRuleMockery2.java:146)
>
> at
> org.apache.isis.core.integtestsupport.ExceptionRecognizerTranslate$TranslationStatement.evaluate(ExceptionRecognizerTranslate.java:32)
>
> at
> org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:168)
>
> at org.junit.rules.RunRules.evaluate(RunRules.java:20)
>
> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
>
> at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
>
> at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
>
> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
>
> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
>
> at
> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
>
> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
>
> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
>
> at
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
>
> at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
>
> at org.junit.runners.Suite.runChild(Suite.java:127)
>
> at org.junit.runners.Suite.runChild(Suite.java:26)
>
> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
>
> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
>
> at
> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
>
> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
>
> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
>
> at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
>
> at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
>
> at
> com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:78)
>
> at
> com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:212)
>
> at
> com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:68)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>
> at
> com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
>
>
>
>
>
>
>