While executing JUnit tests with the new "integtests" classes I receive the 
following exception (same happening from the Eclipse Junit installation and 
from "Maven tests"). I'm not sure if it's a problem of the DataNucleus Enhancer 
or Isis:



java.lang.RuntimeException: java.lang.ClassCastException: java.lang.String 
cannot be cast to javax.jdo.spi.PersistenceCapable
        at 
org.apache.isis.core.integtestsupport.IsisSystemForTest.setUpSystem(IsisSystemForTest.java:258)
        at 
integtests.com.xms.framework.continuity.domain.model.AbstractContinuityTest$IsisSystemForTestRule$1.initialValue(AbstractContinuityTest.java:282)
        at 
integtests.com.xms.framework.continuity.domain.model.AbstractContinuityTest$IsisSystemForTestRule$1.initialValue(AbstractContinuityTest.java:1)
        at java.lang.ThreadLocal.setInitialValue(ThreadLocal.java:141)
        at java.lang.ThreadLocal.get(ThreadLocal.java:131)
        at 
integtests.com.xms.framework.continuity.domain.model.AbstractContinuityTest$IsisSystemForTestRule.getIsisSystemForTest(AbstractContinuityTest.java:288)
        at 
integtests.com.xms.framework.continuity.domain.model.AbstractContinuityTest$IsisSystemForTestRule.apply(AbstractContinuityTest.java:294)
        at 
org.junit.runners.BlockJUnit4ClassRunner.withMethodRules(BlockJUnit4ClassRunner.java:349)
        at 
org.junit.runners.BlockJUnit4ClassRunner.withRules(BlockJUnit4ClassRunner.java:339)
        at 
org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:256)
        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.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
        at 
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to 
javax.jdo.spi.PersistenceCapable
        at 
org.apache.isis.objectstore.jdo.datanucleus.persistence.queries.PersistenceQueryProcessorAbstract.loadAdapters(PersistenceQueryProcessorAbstract.java:82)
        at 
org.apache.isis.objectstore.jdo.datanucleus.persistence.queries.PersistenceQueryFindUsingApplibQueryProcessor.process(PersistenceQueryFindUsingApplibQueryProcessor.java:67)
        at 
org.apache.isis.objectstore.jdo.datanucleus.persistence.queries.PersistenceQueryFindUsingApplibQueryProcessor.process(PersistenceQueryFindUsingApplibQueryProcessor.java:39)
        at 
org.apache.isis.objectstore.jdo.datanucleus.DataNucleusObjectStore.processPersistenceQuery(DataNucleusObjectStore.java:541)
        at 
org.apache.isis.objectstore.jdo.datanucleus.DataNucleusObjectStore.loadInstancesAndAdapt(DataNucleusObjectStore.java:536)
        at 
org.apache.isis.core.runtime.system.persistence.PersistenceSession$1.execute(PersistenceSession.java:433)
        at 
org.apache.isis.core.runtime.system.persistence.PersistenceSession$1.execute(PersistenceSession.java:430)
        at 
org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.executeWithinTransaction(IsisTransactionManager.java:220)
        at 
org.apache.isis.core.runtime.system.persistence.PersistenceSession.getInstancesFromPersistenceLayer(PersistenceSession.java:430)
        at 
org.apache.isis.core.runtime.system.persistence.PersistenceSession.getInstances(PersistenceSession.java:426)
        at 
org.apache.isis.core.runtime.system.persistence.PersistenceSession.findInstances(PersistenceSession.java:363)
        at 
org.apache.isis.core.runtime.system.persistence.PersistenceSession.findInstances(PersistenceSession.java:358)
        at 
org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession$8.firstMatchingQuery(RuntimeContextFromSession.java:260)
        at 
org.apache.isis.core.metamodel.services.container.DomainObjectContainerDefault.firstMatch(DomainObjectContainerDefault.java:391)
        at 
org.apache.isis.applib.AbstractContainedObject.firstMatch(AbstractContainedObject.java:155)
        at 
com.xms.framework.risk.domain.model.continuity.BusinessContinuityManagementSystems.businessContinuityManagementSystem(BusinessContinuityManagementSystems.java:22)
        at 
com.xms.framework.risk.domain.model.continuity.BusinessProcessesBCMInformation.createTransientBIA(BusinessProcessesBCMInformation.java:72)
        at 
com.xms.framework.risk.domain.model.continuity.BusinessProcessesBCMInformation.createTransientBusinessProcessBCMInformation(BusinessProcessesBCMInformation.java:91)
        at 
com.xms.framework.risk.domain.model.continuity.BusinessProcessesBCMInformation.createPersistentBusinessProcessBCMInformation(BusinessProcessesBCMInformation.java:103)
        at 
com.xms.framework.risk.domain.model.continuity.BusinessProcessesBCMInformation.businessContinuityInformation(BusinessProcessesBCMInformation.java:51)
        at 
com.xms.framework.risk.domain.model.continuity.BusinessProcessesBCMInformation.businessContinuityInformation(BusinessProcessesBCMInformation.java:27)
        at 
com.xms.framework.continuity.fixtures.BCMFixture.installBCMFixture(BCMFixture.java:36)
        at 
com.xms.framework.continuity.fixtures.BCMFixture.install(BCMFixture.java:27)
        at 
org.apache.isis.core.runtime.fixtures.FixturesInstallerDelegate.installFixture(FixturesInstallerDelegate.java:213)
        at 
org.apache.isis.core.runtime.fixtures.FixturesInstallerDelegate.installFixtureInTransaction(FixturesInstallerDelegate.java:175)
        at 
org.apache.isis.core.runtime.fixtures.FixturesInstallerDelegate.installFixtures(FixturesInstallerDelegate.java:162)
        at 
org.apache.isis.core.runtime.fixtures.FixturesInstallerDelegate.installFixtures(FixturesInstallerDelegate.java:142)
        at 
org.apache.isis.core.integtestsupport.IsisSystemForTest.wireAndInstallFixtures(IsisSystemForTest.java:292)
        at 
org.apache.isis.core.integtestsupport.IsisSystemForTest.setUpSystem(IsisSystemForTest.java:283)
        at 
org.apache.isis.core.integtestsupport.IsisSystemForTest.setUpSystem(IsisSystemForTest.java:256)
        ... 24 more


Also, it's curious, because the exception is on the 
"frameworkSynchronizer.postLoadProcessingFor((PersistenceCapable) pojo, 
CalledFrom.OS_QUERY);"  line of code:

    protected List<ObjectAdapter> loadAdapters(
            final ObjectSpecification specification, final List<?> pojos) {
        final List<ObjectAdapter> adapters = Lists.newArrayList();
        for (final Object pojo : pojos) {
                // ought not to be necessary, however for some queries it seems 
that the 
                // lifecycle listener is not called
                
frameworkSynchronizer.postLoadProcessingFor((PersistenceCapable) pojo, 
CalledFrom.OS_QUERY);
            ObjectAdapter adapter = getAdapterManager().getAdapterFor(pojo);
            Assert.assertNotNull(adapter);
            adapters.add(adapter);
        }
        return adapters;
    }

The pojo is a reference to a Domain Entity class that has the 
@PersistenceCapable annotation. And the "original" Java exception message is:

ClassCastException: Cannot cast 
"com.xms.framework.risk.domain.model.continuity.BusinessContinuityManagementSystem"
 to javax.jdo.spi.PersistenceCapable 


Despite that, the following message is on "ex"  when returning to 
executeWithinTransaction (on the  "} catch (final RuntimeException ex) {" 
block):

java.lang.ClassCastException: java.lang.String cannot be cast to 
javax.jdo.spi.PersistenceCapable




Reply via email to