I was able to fix the problem in TableIdGeneratorMultithreadedJdbcTestCase by making the following change to LatchedThreadGroup. The problem seems to be that javac incorrectly compiles the reference to the getLogger() method from the inner class. Not sure what the specific problem is?? Maybe because it is final? Anyway. The fixed version is checked in, but if anyone has any idea as to why this happened, I would be interrested in hearing it.
----------- RCS file: /home/cvs/jakarta-avalon-excalibur/src/java/org/apache/avalon/excalibur/testcase/LatchedThreadGroup.java,v retrieving revision 1.1 diff -r1.1 LatchedThreadGroup.java 14a15 > import org.apache.avalon.framework.logger.Logger; 142a144,153 > /** > * Inner access method to getLogger() to work around a bug in the Javac compiler > * when getLogger() is called from the method of an inner class. Jikes seems to > * handle it Ok. :-/ > */ > private Logger getInnerLogger() > { > return getLogger(); > } > 164c175 < getLogger().debug( "Started " + m_startedCount + " test threads." ); --- > getInnerLogger().debug( "Started " + m_startedCount + " test >threads." ); 188c199 < getLogger().error( "Error in " + Thread.currentThread().getName(), t ); --- > getInnerLogger().error( "Error in " + >Thread.currentThread().getName(), t ); 202c213 < getLogger().debug( m_completedCount + " test threads completed." ); --- > getInnerLogger().debug( m_completedCount + " test threads >completed." ); ----------- The first test PoolableComponentHandlerTestCase was also fixed with a similar workaround. Not sure quite why these aren't working in these specific cases though :-/ ----------- RCS file: /home/cvs/jakarta-avalon-excalibur/src/test/org/apache/avalon/excalibur/component/test/PoolableComponentHandlerTestCase.java,v retrieving revision 1.2 diff -r1.2 PoolableComponentHandlerTestCase.java 13a14 > import org.apache.avalon.framework.component.ComponentManager; 37a39,51 > * Methods > *-------------------------------------------------------------*/ > /** > * Inner access method to manager to work around a bug in the Javac compiler > * when manager is referenced from the method of an inner class. Jikes seems to > * handle it Ok. :-/ > */ > private ComponentManager getInnerManager() > { > return manager; > } > > /*--------------------------------------------------------------- 299c313 < (PoolableTestObject)manager.lookup( PoolableTestObject.ROLE + "_" + name ); --- > (PoolableTestObject)getInnerManager().lookup( >PoolableTestObject.ROLE + "_" + name ); 309c323 < manager.release( poolable ); --- > getInnerManager().release( poolable ); ----------- Anyway, the build should be fixed now... Cheers, Leif Leif Mortenson wrote: > This is strange, I ran the entire test suite at work before heading home > and it worked fine. I am using Jikes at work and the standard JDK1.3 > javac at home. javac has this problem. :-/ > > I was able to fix this by making more specific references to class > fields from the methods of the inner class. > > Now I am making it past the compile-tests task, but the check task is > failing in two tests with similar problems. The tests compile just > fine, but when they run they are kicking out > java.lang.NoSuchMethodErrors. These are also cases where inner class > methods are referencing the fields of the parent methods... > The tests that are failing are: > org.apache.avalon.excalibur.component.test.PoolableComponentHandlerTestCase > and > >org.apache.avalon.excalibur.datasource.ids.test.TableIdGeneratorMultithreadedJdbcTestCase > > I stared at these and don't see the problem. Any ideas? Here is the > current build output that I am seeing: > <snip> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>