BTW, I'm using SWT if that is pertinent.

It probably is. The ClassLoader settings are likely different.

Anyways the code in question does look suspect. I implemented a bit more paranoid version of this method (without actually knowing whether null values are valid here or not). The code is checked in to trunk, and you may try this cayenne-server.jar that contains the fix:

http://people.apache.org/~aadamchik/patched/cayenne-server-3.0-07012008.jar

Andrus




On Jul 1, 2008, at 9:02 PM, Jerald Dawson wrote:

Ok, more info. I have been stepping through the code to see what is actually throwing the NPE and I've come to this code in DataSourceInfo class:

  public PasswordEncoding getPasswordEncoder() {
      PasswordEncoding encoder = null;

      try {
          encoder = (PasswordEncoding) Thread
                  .currentThread()
                  .getContextClassLoader()
                  .loadClass(getPasswordEncoderClass())
                  .newInstance();
          // encoder = (PasswordEncoding)
          // Class.forName(getPasswordEncoderClass()).newInstance();
      }
...

Now following the code, I notice that the getContextClassLoader call returns null which seems to be the source of the NPE. Is there a reason getContextClassLoader would be returning null?

BTW, I'm using SWT if that is pertinent.



Reply via email to