Check to make sure you have all of the test Jar files in your
classpath - I remember having this error and I was missing one of them
(can't remember which one I'm afraid...)


On Aug 26, 10:38 pm, Arnold <[email protected]> wrote:
> When using JDO persistence manager to begin a transaction,
> DatastoreService().getCurrentTransaction() seems to fail.
>
> A unit test:
> ----------------------------------------------------------
> public class TransactionTest{
>     private final LocalServiceTestHelper helper =
>         new LocalServiceTestHelper(new
> LocalDatastoreServiceTestConfig());
>
>     @Before
>     public void setUp() {
>         helper.setUp();
>     }
>
>     @After
>     public void tearDown() {
>         helper.tearDown();
>     }
>
>         @Test
>         public void test(){
>                 PersistenceManager pm = PMF.get().getPersistenceManager();
>                 Transaction tx = pm.currentTransaction();
>                 try{
>                         tx.begin();
>
> DatastoreServiceFactory.getDatastoreService().getCurrentTransaction();
>
>                         tx.commit();
>                 }finally{
>                         if(pm.currentTransaction().isActive()){
>                                 pm.currentTransaction().rollback();
>                         }
>                         pm.close();
>                 }
>
>         }}
>
> ----------------------------------------------------------
>
> The test fails with stack trace:
> ----------------------------------------------------------
> java.lang.IllegalStateException: java.util.NoSuchElementException
>         at
> com.google.appengine.api.datastore.TransactionStackImpl.peek(TransactionSta­ckImpl.java:
> 70)
>         at
> com.google.appengine.api.datastore.DatastoreServiceImpl.getCurrentTransacti­on(DatastoreServiceImpl.java:
> 307)
>         at TransactionTest.test(TransactionTest.java:37)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
> 39)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImp­l.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.j­ava:
> 41)
>         at
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.ja­va:
> 20)
>         at
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:
> 28)
>         at
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:
> 31)
>         at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.ja­va:
> 73)
>         at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.ja­va:
> 46)
>         at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
>         at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
>         at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
>         at
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:
> 28)
>         at
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:
> 31)
>         at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
>         at
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestRe­ference.java:
> 46)
>         at
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:
> 38)
>         at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestR­unner.java:
> 467)
>         at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestR­unner.java:
> 683)
>         at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner­.java:
> 390)
>         at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunne­r.java:
> 197)
> Caused by: java.util.NoSuchElementException
>         at java.util.LinkedList.getFirst(LinkedList.java:109)
>         at
> com.google.appengine.api.datastore.TransactionStackImpl.peek(TransactionSta­ckImpl.java:
> 68)
>         ... 26 more
>
> ----------------------------------------------------------
>
> As a result, the example shown here:
>
> http://code.google.com/appengine/docs/java/taskqueue/overview.html#Ta...
>
> does not work.
>
> Can someone help shade some light on what I may be missing?
>
> Thanks.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to