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.
-j
On Jul 1, 2008, at 11:05 AM, Andrus Adamchik wrote:
> Hmmm... I vaguely remember fixing that in M4 (i.e. making
> "encoderClass", "passwordLocation", "passwordSource" attributes
> optional). There was indeed a version of Cayenne that absolutely
> required those attributes (M3?). Now I think it shouldn't. Can you
> doublecheck the runtime version of cayenne-server.jar that causes
> the NPE?
>
> Andrus
>
> On Jul 1, 2008, at 6:57 PM, Scott Anderson wrote:
>
>> To summarize, a NullPointerException in
>> DataSourceInfo.getPasswordEncoder() is presumably caused by a missing
>> encoderClass attribute in the driver.xml file, despite this field
>> being
>> specified with the modeler.
>>
>> Sounds to me like a candidate for a JIRA against the modeler.
>>
>> -----Original Message-----
>> From: Jerald Dawson [mailto:jdawso..rk.com]
>> Sent: Tuesday, July 01, 2008 11:52 AM
>> To: use..ayenne.apache.org
>> Subject: Fwd: Exception in SAXParserFactory.newInstance with 3.0M4
>>
>> Moving this to the list:
>>
>>
>> Begin forwarded message:
>>
>>> From: Jerald Dawson <jdawso..rk.com>
>>> Date: July 1, 2008 10:49:20 AM CDT
>>> To: "Scott Anderson" <sanderso..irvana.com>
>>> Cc: "Andrus Adamchik" <andru..bjectstyle.org>
>>> Subject: Re: Exception in SAXParserFactory.newInstance with 3.0M4
>>>
>>> Thats interesting. Here is my drive.xml file:
>>>
>>> <?xml version="1.0" encoding="utf-8"?>
>>> <driver project-version="3.0" class="com.mysql.jdbc.Driver">
>>> <url value="jdbc:mysql://10.20.1.10/SystemRunner?
>>> capitalizeTypenames=true"/>
>>> <connectionPool min="1" max="1"/>
>>> <login userName="systemrunner" password="*******"/>
>>> </driver>
>>>
>>> As you can see, I do not have the encoderClass, passwordLocation and
>>> passwordSource attributes in the login item. I'm going to try adding
>>> those manually and see what happens. Again, this file was created
>>> with Modeler.
>>>
>>> -j
>>>
>>> On Jul 1, 2008, at 10:30 AM, Scott Anderson wrote:
>>>
>>>> Judging from the stack trace, I'd guess that the encoderClass
>>>> attribute
>>>> of the login entity is invalid in the .driver.xml file. I'm not
>>>> sure how
>>>> that could happen if you created the file using the modeler. I'm
>>>> copying
>>>> Andrus on this, since he'll probably have a better understand of
>>>> what's
>>>> going on.
>>>>
>>>> Here's what my working driver.xml file looks like, for comparison:
>>>>
>>>> <?xml version="1.0" encoding="utf-8"?>
>>>> <driver project-version="3.0" class="com.mysql.jdbc.Driver">
>>>> <url value="jdbc:mysql://hostname/dbname"/>
>>>> <connectionPool min="1" max="1"/>
>>>> <login userName="user" password="pass"
>>>> encoderClass="org.apache.cayenne.conf.PlainTextPasswordEncoder"
>>>> passwordLocation="model" passwordSource="Not Applicable"/>
>>>> </driver>
>>>>
>>>> -----Original Message-----
>>>> From: Jerald Dawson [mailto:jdawso..rk.com]
>>>> Sent: Tuesday, July 01, 2008 10:41 AM
>>>> To: Scott Anderson
>>>> Subject: Re: Exception in SAXParserFactory.newInstance with 3.0M4
>>>>
>>>> Ok, I removed all the jars from my classpath except for the ones
>>>> specifically needed for cayenne and that seemed to fix my class
>>>> problem. I've not dug into it yet to see what jar was specifically
>>>> causing it but now when I run my app, it attempts to load the
>>>> cayenne.xml file. However, its throwing an exception when it
>>>> tries to
>>>> load the user name and password thats stored in the xml files for
>>>> access the mysql database. The exception is:
>>>>
>>>> ...
>>>> Jul 1, 2008 9:32:24 AM
>>>> org.apache.cayenne.conf.DriverDataSourceFactory
>>>> $LoginHandler init
>>>> INFO: loading user name and password.
>>>> Jul 1, 2008 9:32:24 AM org.apache.cayenne.conf.RuntimeLoadDelegate
>>>> shouldLoadDataNode
>>>> INFO: Error: DataSource load failed
>>>> java.lang.NullPointerException
>>>> at
>>>> org
>>>> .apache
>>>> .cayenne
>>>> .conn.DataSourceInfo.getPasswordEncoder(DataSourceInfo.java:
>>>> 207)
>>>> at org.apache.cayenne.conf.DriverDataSourceFactory
>>>> $LoginHandler.init(DriverDataSourceFactory.java:324)
>>>> ...
>>>>
>>>> I've checked the xml files and the username and password are stored
>>>> in
>>>> the files. The model's password encoder is set to
>>>> org.apache.cayenne.conf.PlainTextPasswordEncoder,
>>>>
>>>> Any help would be greatly appreciated. I feel like a newbie
>>>> again. :-)
>>>>
>>>> -j
>>>>
>>>> On Jul 1, 2008, at 7:45 AM, Scott Anderson wrote:
>>>>
>>>>> You sure you have all of them? Ashwood, collections, lang,
>>>>> logging,
>>>>> and
>>>>> velocity, in addition to the server jar and your mysql/j driver?
>>>>> In my
>>>>> experience, Cayenne generally fail how you describe when one of
>>>>> the
>>>>> non-server jars is missing.
>>>>>
>>>>> -----Original Message-----
>>>>> From: Jerald Dawson [mailto:jdawso..rk.com]
>>>>> Sent: Monday, June 30, 2008 4:36 PM
>>>>> To: use..ayenne.apache.org
>>>>> Subject: Re: Exception in SAXParserFactory.newInstance with 3.0M4
>>>>>
>>>>> Hi Andrus
>>>>>
>>>>> I'm using Eclipse 3.4 for development. I've added the cayenne jars
>>>>> to
>>>>> my classpath and I'm running my app inside eclipse.
>>>>>
>>>>> -j
>>>>>
>>>>> On Jun 30, 2008, at 3:07 PM, Andrus Adamchik wrote:
>>>>>
>>>>>>> Seems to be throwing a class not found exception but I can't be
>>>>>>> sure since it just ungracefully terminates the app with not
>>>>>>> stack
>>>>>>> dump.
>>>>>>
>>>>>> This is unusual for a Java application. What type of
>>>>>> application is
>>>>>> that and how do you compile and run it?
>>>>>>
>>>>>> (and yes - SAX parser is part of JDK, and .. well, it just
>>>>>> works).
>>>>>>
>>>>>> Andrus
>>>>>>
>>>>>>
>>>>>> On Jun 30, 2008, at 10:55 PM, Jerald Dawson wrote:
>>>>>>> Hello
>>>>>>>
>>>>>>> I'm new to cayenne (actually a webobjects guy) and I'm trying
>>>>>>> to
>>>>>>> get it working. I'm was able able to get modeler working and I
>>>>>>> created a model for accessing a mysql database. Everything
>>>>>>> seemed
>>>>>>> pretty simple but now when I try to run my app that uses the
>>>>>>> model,
>>>>>>> when I call DataContext.createDataContext(), it terminates my
>>>>>>> app.
>>>>>>> I've poked around a bit and the crash is actually happening in
>>>>>>> the
>>>>>>> SAXParserFactory.newInstance method that is called during the
>>>>>>> ConfigLoader initialization, specifically during the "parser =
>>>>>>> Util.createXmlReader();" call. Seems to be throwing a class not
>>>>>>> found exception but I can't be sure since it just ungracefully
>>>>>>> terminates the app with not stack dump. Anyway, that kind of
>>>>>>> puzzles me since my understanding was the all the SAX parser
>>>>>>> stuff
>>>>>>> came with java (I'm using 1.5 on Mac OS X 10.5). I thought it
>>>>>>> might
>>>>>>> be that it could be that it can't find my xml files but I tried
>>>>>>> just hard coding the path to the cayanne.xml file and it still
>>>>>>> does
>>>>>>> not work. Any help would be appreciated.
>>>>>>>
>>>>>>> jerald dawson
>>>>>>>
>>>>>>>
>>>>>
>>>>
>>>
>>
>>
This archive was generated by hypermail 2.0.0 : Tue Jul 01 2008 - 14:03:10 EDT