I have checkout out the code from git and the tests seem to run apart from three (two of which are inconsistent).
TestMapper.SingleLookup fails inconsistently(sometimes it works) on line 150 with A.loadCount returning 2
TestPerf.testAddressInsertPerf sometimes fails on the assert (line 142) but I suspect a performance test failure can likely be ignored.
ListOfDoubleArrayMappingTest.testMapping which fails with the following stacktrace:
java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: com.github.jmkgreen.morphia.mapping.MappingException: No usable constructor for [Ljava.lang.Double;
at com.github.jmkgreen.morphia.mapping.DefaultMapper.fromDb(DefaultMapper.java:510)
at com.github.jmkgreen.morphia.mapping.DefaultMapper.fromDBObject(DefaultMapper.java:256)
at com.github.jmkgreen.morphia.query.MorphiaIterator.convertItem(MorphiaIterator.java:66)
at com.github.jmkgreen.morphia.query.MorphiaIterator.processItem(MorphiaIterator.java:53)
at com.github.jmkgreen.morphia.query.MorphiaIterator.next(MorphiaIterator.java:48)
at com.github.jmkgreen.morphia.query.QueryImpl.get(QueryImpl.java:362)
at com.github.jmkgreen.morphia.DatastoreImpl.get(DatastoreImpl.java:493)
at com.github.jmkgreen.morphia.DatastoreImpl.get(DatastoreImpl.java:511)
at com.github.jmkgreen.morphia.mapping.ListOfDoubleArrayMappingTest.testMapping(ListOfDoubleArrayMappingTest.java:34)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
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.InvokeMethod.evaluate(InvokeMethod.java: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.java:76)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
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.runners.ParentRunner.run(ParentRunner.java:236)
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.RuntimeException: java.lang.RuntimeException: com.github.jmkgreen.morphia.mapping.MappingException: No usable constructor for [Ljava.lang.Double;
at com.github.jmkgreen.morphia.mapping.EmbeddedMapper.fromDBObject(EmbeddedMapper.java:151)
at com.github.jmkgreen.morphia.mapping.DefaultMapper.readMappedField(DefaultMapper.java:530)
at com.github.jmkgreen.morphia.mapping.DefaultMapper.fromDb(DefaultMapper.java:507)
... 32 more
Caused by: java.lang.RuntimeException: com.github.jmkgreen.morphia.mapping.MappingException: No usable constructor for [Ljava.lang.Double;
at com.github.jmkgreen.morphia.mapping.DefaultCreator.createInst(DefaultCreator.java:123)
at com.github.jmkgreen.morphia.mapping.DefaultCreator.createInstance(DefaultCreator.java:31)
at com.github.jmkgreen.morphia.mapping.DefaultCreator.createInstance(DefaultCreator.java:41)
at com.github.jmkgreen.morphia.mapping.DefaultCreator.createInstance(DefaultCreator.java:52)
at com.github.jmkgreen.morphia.mapping.EmbeddedMapper.readMapOrCollectionOrEntity(EmbeddedMapper.java:234)
at com.github.jmkgreen.morphia.mapping.EmbeddedMapper.readCollection(EmbeddedMapper.java:180)
at com.github.jmkgreen.morphia.mapping.EmbeddedMapper.fromDBObject(EmbeddedMapper.java:124)
... 34 more
Caused by: com.github.jmkgreen.morphia.mapping.MappingException: No usable constructor for [Ljava.lang.Double;
at com.github.jmkgreen.morphia.mapping.DefaultCreator.getNoArgsConstructor(DefaultCreator.java:146)
at com.github.jmkgreen.morphia.mapping.DefaultCreator.createInst(DefaultCreator.java:121)
... 40 more
Caused by: java.lang.NoSuchMethodException: [Ljava.lang.Double;.<init>()
at java.lang.Class.getConstructor0(Class.java:2721)
at java.lang.Class.getDeclaredConstructor(Class.java:2002)
at com.github.jmkgreen.morphia.mapping.DefaultCreator.getNoArgsConstructor(DefaultCreator.java:142)
... 41 more
* make it possible for BasicDAO to be defined using an interface as a type and mapping the concrete class
* potentially adding in a default no-arg constructor for helping deployment into Java EE environments.
I can package the changes up and send it across if I get it working.