2

I successfully performed static weaving in EclipseLink-2.4.0 with eclipselink-staticweave-maven-plugin 1.0.3 , but when I also run integration tests. going through all layers in the system, they breaks. In startUp() method I create it's created an User entity which it's committed in the test DB. But in tearDown() method where I clear the DB state that entity (already weaved) could not be removed by same EntityManager.

The test goes without errors when entities are not weaved. What do you think the problem could be here ?

Here the exception status also:

java.lang.AbstractMethodError: nl.innovity.youbank.core.entity.user.User._persistence_setCacheKey(Lorg/eclipse/persistence/internal/identitymaps/CacheKey;)V at org.eclipse.persistence.internal.descriptors.ObjectBuilder.updateCachedAttributes(ObjectBuilder.java:3790) at org.eclipse.persistence.internal.sessions.MergeManager.mergeChangesOfWorkingCopyIntoOriginal(MergeManager.java:871) at org.eclipse.persistence.internal.sessions.MergeManager.mergeChangesOfWorkingCopyIntoOriginal(MergeManager.java:687) at org.eclipse.persistence.internal.sessions.MergeManager.mergeChanges(MergeManager.java:307) at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.mergeChangesIntoParent(UnitOfWorkImpl.java:3260) at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.mergeChangesIntoParent(RepeatableWriteUnitOfWork.java:369) at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.commitRootUnitOfWork(RepeatableWriteUnitOfWork.java:283) at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitAndResume(UnitOfWorkImpl.java:1147) at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commitInternal(EntityTransactionImpl.java:84) at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commit(EntityTransactionImpl.java:63) at nl.innovity.youbank.core.dao.DBManager.reinitDB(DBManager.java:510) at nl.innovity.youbank.core.integration.IntegrationTest.tearDown(IntegrationTest.java:126) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:37) at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:35) at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:146) at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:97) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.maven.surefire.booter.ProviderFactory$ClassLoaderProxy.invoke(ProviderFactory.java:103) at $Proxy0.invoke(Unknown Source) at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:145) at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess(SurefireStarter.java:87) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:69)

Thanks in advance, Simeon

Simeon Angelov
  • 470
  • 4
  • 18

1 Answers1

4

It looks like a problem with the configuratoin of the maven static weaving - it is using a different EclipseLink version than 2.4 version you are running against. Looking at the doc you linked, it is set by default to use EclipseLink 2.3.2: I believe EclipseLink 2.4 changed to add the _persistence_setCacheKey method to the PersistenceEntity used in weaving. This method will be missing if you weaving using EclipseLink 2.3.2.

You will need to change the dependencies list to point to EclipseLink 2.4 as the doc you linked to described (where it refers to using 2.3.X versions other than 2.3.2).

Chris
  • 20,138
  • 2
  • 29
  • 43
  • Hi Chris, It's seems missing of that explicitly pointing to eclipseLink 2.4.0 was the problem. Now it's working fine with versions usage configuring. Thanks, Simeon – Simeon Angelov Nov 16 '12 at 09:05