Hmm... no idea. I'd start stepping through the code starting at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter to see what happens.

M.

Mark Slater schrieb:
On Apr 19, 2006, at 2:07 PM, Mika Göckel wrote:
I'm a little bit confused, because you mixed System.out and log.
Could it be that the first element of the List returns null, it fails with a NPE in author.isPerson() and we don't see the System.out logs?

M.


Bloody hell. Thanks for catching that. I'm teaching a beginning programming course this quarter (in Java), and spent all afternoon yesterday telling students how to use System.out.println().

After fixing the logging statements, I'm finally able to see the exception that's getting thrown. Its a NullPointerException within the proxy for my Author object.

2006-04-19 15:11:26,734 INFO [edu.ucsc.whisper.core.LibraryItemInfoData] - <Setting authors to: [EMAIL PROTECTED]> 2006-04-19 15:11:26,734 INFO [edu.ucsc.whisper.core.LibraryItemInfoData] - <author = [EMAIL PROTECTED]> 2006-04-19 15:11:26,738 INFO [edu.ucsc.whisper.core.LibraryItemInfoData] - <Exception while extracting authors>
java.lang.NullPointerException
        at $Proxy13.isPerson(Unknown Source)
        at edu.ucsc.whisper.core.AuthorData.<init>(AuthorData.java:34)
at edu.ucsc.whisper.core.LibraryItemInfoData.setAuthors(LibraryItemInfoData.java:273)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
at org.codehaus.xfire.aegis.type.basic.BeanType.writeProperty(BeanType.java:223)

The method signature for isPerson() is:

    public final boolean isPerson()

So that made me think that perhaps a value wasn't sent for that field, but the SOAP message did send one (I've formatted this to make it more readable):

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";
     xmlns:xsd="http://www.w3.org/2001/XMLSchema";
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
     xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/";
     xmlns:ns4="http://rpc.whisper.ucsc.edu";
     xmlns:ns5="http://core.whisper.ucsc.edu";
>
...
<in0>
    <ns5:authors>
        <AuthorData>
            <person>true</person>
            <familyName>Slater</familyName>
            <firstName>Mark</firstName>
            <otherNames>David</otherNames>
            <username>mark</username>
        </AuthorData>
    </ns5:authors>

    <ns5:dateCreated>2006-02-23T00:00:00-08:00</ns5:dateCreated>
    <ns5:primaryKeyword>Directions</ns5:primaryKeyword>
    <ns5:title>Directions</ns5:title>

    <ns5:keywords>
      <ns4:string>stephen</ns4:string>
      <ns4:string>alameda</ns4:string>
    </ns5:keywords>
</in0>

The WSDL for the service is below.

So I tried changing the type from the Author interface to the AuthorData implementation class, and added logging statements to the constructors and property setters. With those changes, the output I get is:

2006-04-19 15:23:40,710 DEBUG [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping] - <Looking up handler for [/LibraryService]> 2006-04-19 15:23:40,710 DEBUG [org.springframework.web.servlet.DispatcherServlet] - <Testing handler adapter [EMAIL PROTECTED]> 2006-04-19 15:23:40,827 INFO [edu.ucsc.whisper.core.AuthorData] - <Making new AuthorData with default Constructor> 2006-04-19 15:23:40,828 INFO [edu.ucsc.whisper.core.LibraryItemInfoData] - <Setting authors to: [{AuthorData: authorType=person; fullName=}]> 2006-04-19 15:23:40,828 INFO [edu.ucsc.whisper.core.LibraryItemInfoData] - <author = {AuthorData: authorType=person; fullName=}> 2006-04-19 15:23:40,829 INFO [edu.ucsc.whisper.core.LibraryItemInfoData] - <authorClass = class edu.ucsc.whisper.core.AuthorData> 2006-04-19 15:23:40,829 INFO [edu.ucsc.whisper.core.LibraryItemInfoData] - <authorClass interfaces = [Ljava.lang.Class;@33f21d> 2006-04-19 15:23:40,829 INFO [edu.ucsc.whisper.core.AuthorData] - <Making new AuthorData with existing Author> 2006-04-19 15:23:40,829 INFO [edu.ucsc.whisper.core.LibraryItemInfoData] - <authors list is now: [{AuthorData: authorType=person; fullName=}]>

So you can see that the class is begin created, but the properties aren't being set. I'd be willing to bet that this is the cause of the NullPointerException when the dynamic proxy for the Author interface is used instead of the concrete class. And it brings me back to my question from last night: Is the AuthorData part of my message formatted/layed out correctly, and if not, what should it look like?

Thanks,

Mark

WSDL for the types involved.

<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
      xmlns:ns1="http://core.whisper.ucsc.edu";
      xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
      xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
      xmlns:soapenc11="http://schemas.xmlsoap.org/soap/encoding/";
      xmlns:soapenc12="http://www.w3.org/2003/05/soap-encoding";
      xmlns:tns="http://rpc.whisper.ucsc.edu";
      xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/";
      xmlns:xsd="http://www.w3.org/2001/XMLSchema";
      targetNamespace="http://rpc.whisper.ucsc.edu";>

  <wsdl:types>
<xsd:schema targetNamespace="http://core.whisper.ucsc.edu"; elementFormDefault="qualified" attributeFormDefault="qualified">
      <xsd:complexType name="LibraryItemInfoData">
        <xsd:sequence>
<xsd:element name="UUID" type="xsd:string" minOccurs="0" nillable="true" /> <xsd:element name="authors" type="ns1:ArrayOfAuthorData" minOccurs="0" nillable="true" /> <xsd:element name="dateCreated" type="xsd:dateTime" minOccurs="0" nillable="true" /> <xsd:element name="dateEntered" type="xsd:dateTime" minOccurs="0" nillable="true" /> <xsd:element name="encoding" type="xsd:string" minOccurs="0" nillable="true" /> <xsd:element name="keywords" type="tns:ArrayOfString" minOccurs="0" nillable="true" /> <xsd:element name="lastModified" type="xsd:dateTime" minOccurs="0" nillable="true" /> <xsd:element name="mimeType" type="xsd:string" minOccurs="0" nillable="true" /> <xsd:element name="primaryKeyword" type="xsd:string" minOccurs="0" nillable="true" />
          <xsd:element name="size" type="xsd:long" minOccurs="0" />
<xsd:element name="title" type="xsd:string" minOccurs="0" nillable="true" /> <xsd:element name="typeExtension" type="xsd:string" minOccurs="0" nillable="true" /> <xsd:element name="username" type="xsd:string" minOccurs="0" nillable="true" /> <xsd:element name="whisperId" type="xsd:string" minOccurs="0" nillable="true" />
          <xsd:any minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>
        <xsd:anyAttribute />
      </xsd:complexType>
      <xsd:complexType name="ArrayOfAuthorData">
        <xsd:sequence>
<xsd:element name="AuthorData" type="ns1:AuthorData" nillable="true" minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>
      <xsd:complexType name="AuthorData">
        <xsd:sequence>
<xsd:element name="familyName" type="xsd:string" minOccurs="0" nillable="true" /> <xsd:element name="firstName" type="xsd:string" minOccurs="0" nillable="true" /> <xsd:element name="fullName" type="xsd:string" minOccurs="0" nillable="true" /> <xsd:element name="organizationName" type="xsd:string" minOccurs="0" nillable="true" /> <xsd:element name="otherNames" type="xsd:string" minOccurs="0" nillable="true" />
          <xsd:element name="person" type="xsd:boolean" minOccurs="0" />
<xsd:element name="username" type="xsd:string" minOccurs="0" nillable="true" />
          <xsd:any minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>
        <xsd:anyAttribute />
      </xsd:complexType>
      <xsd:complexType name="ArrayOfString">
        <xsd:sequence>
<xsd:element name="string" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>




--
cyber:con gmbh
Mika Göckel

Rathausallee 10
53757 Sankt Augustin

tel (+49)2241 / 9350 0
fax (+49)2241 / 9350 99
mob (+49) 172 / 279 2771
skype mika.goeckel
email [EMAIL PROTECTED]

Reply via email to