Commons JCS
  1. Commons JCS
  2. JCS-22

IllegalStateException and NullPointerException thrown by CompositeCacheManager

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: jcs-1.3
    • Fix Version/s: jcs-2.0.0
    • Component/s: Composite Cache
    • Labels:
      None
    • Environment:
      N/A

      Description

      If a cache configuration file does not exist on the classpath, an IllegalStateException is thrown by JCS.getInstance. This is not mentioned in the javadoc, and because it's not expected, crashes the calling program. Preferably, this should be a checked exception of some sort to force the caller to deal with this issue (potentially continuing their program with the cache disabled), but should at least be documented.

      JCS.getInstance(cacheClassName)

      java.lang.IllegalStateException: Failed to load properties for name [/cache.ccf]
      at org.apache.jcs.engine.control.CompositeCacheManager.configure(CompositeCacheManager.java:239)
      at org.apache.jcs.engine.control.CompositeCacheManager.configure(CompositeCacheManager.java:191)
      at org.apache.jcs.engine.control.CompositeCacheManager.getInstance(CompositeCacheManager.java:119)
      at org.apache.jcs.JCS.ensureCacheManager(JCS.java:99)
      at org.apache.jcs.JCS.getInstance(JCS.java:64)
      at com.telstra.tdsdi.cache.CacheManager.configure(CacheManager.java:72)
      at com.telstra.tdsdi.cache.CacheManager.doWork(CacheManager.java:194)
      at com.telstra.common.supervisor.SupervisedThread.run(SupervisedThread.java:39)

      The next time that getInstance is called, and every time after that, JCS reacts differently - throwing a NullPointerException. This is inconsistent. Preferably, this should check to see whether the first 'configure' attempt was successful, and react accordingly. Optionally it could throw the same exception as the first call, or failing that, should at least be documented in the javadoc for this method.

      java.lang.NullPointerException
      at org.apache.jcs.config.OptionConverter.findAndSubst(OptionConverter.java:289)
      at org.apache.jcs.config.OptionConverter.instantiateByKey(OptionConverter.java:167)
      at org.apache.jcs.engine.control.CompositeCacheConfigurator.parseElementAttributes(CompositeCacheConfigurator.java:438)
      at org.apache.jcs.engine.control.CompositeCacheConfigurator.parseRegion(CompositeCacheConfigurator.java:304)
      at org.apache.jcs.engine.control.CompositeCacheConfigurator.parseRegion(CompositeCacheConfigurator.java:280)
      at org.apache.jcs.engine.control.CompositeCacheManager.getCache(CompositeCacheManager.java:445)
      at org.apache.jcs.engine.control.CompositeCacheManager.getCache(CompositeCacheManager.java:384)
      at org.apache.jcs.engine.control.CompositeCacheManager.getCache(CompositeCacheManager.java:371)
      at org.apache.jcs.JCS.getInstance(JCS.java:66)
      at com.telstra.tdsdi.cache.CacheManager.configure(CacheManager.java:72)
      at com.telstra.tdsdi.cache.CacheManager.doWork(CacheManager.java:194)
      at com.telstra.common.supervisor.SupervisedThread.run(SupervisedThread.java:39)

        Activity

        Hide
        Thomas Vandahl added a comment -

        Fixed in SVN. JCS will now throw a CacheException in this case.

        Show
        Thomas Vandahl added a comment - Fixed in SVN. JCS will now throw a CacheException in this case.

          People

          • Assignee:
            Aaron Smuts
            Reporter:
            Michael Jordan
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development