Sebb created JCS-113:
------------------------

             Summary: Potential NPE in JDBCDiskCache
                 Key: JCS-113
                 URL: https://issues.apache.org/jira/browse/JCS-113
             Project: Commons JCS
          Issue Type: Bug
            Reporter: Sebb


The test JDBCDiskCacheManagerUnitTest fails with an NPE if debug logging is 
enabled.

{code}
java.lang.NullPointerException
at 
org.apache.commons.jcs.auxiliary.disk.jdbc.JDBCDiskCache.getSize(JDBCDiskCache.java:982)
at 
org.apache.commons.jcs.auxiliary.disk.jdbc.JDBCDiskCache.getStatistics(JDBCDiskCache.java:1146)
at 
org.apache.commons.jcs.auxiliary.disk.AbstractDiskCache.getStats(AbstractDiskCache.java:525)
at 
org.apache.commons.jcs.auxiliary.disk.jdbc.JDBCDiskCache.toString(JDBCDiskCache.java:1251)
at 
org.apache.commons.jcs.auxiliary.disk.jdbc.JDBCDiskCacheManagerAbstractTemplate.getCache(JDBCDiskCacheManagerAbstractTemplate.java:119)
at 
org.apache.commons.jcs.auxiliary.disk.jdbc.JDBCDiskCacheManager.getCache(JDBCDiskCacheManager.java:117)
at 
org.apache.commons.jcs.auxiliary.disk.jdbc.JDBCDiskCacheManagerUnitTest.testGetCache_normal(JDBCDiskCacheManagerUnitTest.java:49)
{code}

That happens because the getSize() method calls

{code}
getPoolAccess().getConnection()
{code}

and getPoolAccess() may return null if the initializePoolAccess method called 
by the constructor fails to set up the pool.

It is trivial to check if the poolAccess field has been set up and avoid the 
NPE in getSize(). However, the getPoolAccess() method is used extensively 
within the class, and also externally as well.

It looks as though the class is barely usable if the field cannot be 
initialised, so it might perhaps be better if the constructor threw an 
Exception of some kind.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to