axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jorge Fernandez <informaticu007-...@yahoo.es>
Subject Issue with ADB and parsing a response message (namespaces)
Date Fri, 20 Apr 2007 21:03:08 GMT
Hi all,


I'm having problems with the namespaces of a response message like this:

 <ns3:getDetailedMonitoringStagesResponse xmlns:ns3="http://op_messages.medici_link/xsd">
            <ns3:return xmlns:ns0="http://external.communication_data_model.medici_link/xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns0:extConfiguration">
        ..................................
               <ns0:abstractParameters xsi:type="ns0:extAbstractParameterDesc">
        ..................................
               </ns0:abstractParameters>
         ..................................
               <ns0:primitiveParameters xsi:type="ns0:extPrimitiveParameterDesc">
        .................................
               </ns0:primitiveParameters>
        ..................................
            </ns3:return>
         </ns3:getDetailedMonitoringStagesResponse>
      </soapenv:Body>
   </soapenv:Envelope>


I have this exception when parsing the first element (ns0:abstractParameters):

java.lang.RuntimeException: java.lang.RuntimeException: Unsupported type null extPrimitiveParameterDesc
     at client.Medici_LinkStub.fromOM(Medici_LinkStub.java:5210)
    at client.Medici_LinkStub.getDetailedMonitoringStages(Medici_LinkStub.java:1945)
    at client.ClientUtilities.getDetailedMonitoringStagesTest(ClientUtilities.java:244)
    at client.Client.main(Client.java:53)
Caused by: java.lang.RuntimeException: Unsupported type null extPrimitiveParameterDesc
    at medici_link.op_messages.xsd.ExtensionMapper.getTypeObject(ExtensionMapper.java:181)
    at medici_link.communication_data_model.external.xsd.ExtParameterDesc$Factory.parse(ExtParameterDesc.java:1171)
    at medici_link.communication_data_model.external.xsd.ExtAbstractParameterDesc$Factory.parse(ExtAbstractParameterDesc.java:1311)
    at medici_link.communication_data_model.external.xsd.ExtConfiguration$Factory.parse(ExtConfiguration.java:923)
    at  medici_link.communication_data_model.external.xsd.ExtStage$Factory.parse(ExtStage.java:650)
    at medici_link.op_messages.xsd.GetDetailedMonitoringStagesResponse$Factory.parse(GetDetailedMonitoringStagesResponse.java:424)
    at client.Medici_LinkStub.fromOM(Medici_LinkStub.java:4833)
    ... 3 more

I have a hierachy of classes:

ExtAbstractParameterDesc and ExtPrimitiveParameterDesc that extend ExtParameterDesc.

I've been diving in my code that was created with WSDL2Java and ADB (Axis 1.1.1) and I could
see that for that element, it enters
the parse Method of ExtAbstractParameterDesc, then it reaches this:

 if ("true".equals(reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"))){
    list9.add(null);
    reader.next();
} else {
     list9.add(medici_link.communication_data_model.external.xsd.ExtParameterDesc.Factory.parse(reader));
}

And goes to the else statement. So it enters the parse method of ExtParameterDesc (it's father
class).

When it's inside that method, variable type gets the value "ExtPrimitiveParameterDesc" (I
don't know if it should be 
ExtAbstractParameterDesc but I made that change and it threw an exception in other place)
and finally it tries to get the namespace uri of prefix ns0 and it gets null. 
this is the snippet:

java.lang.String type = fullTypeName.substring(fullTypeName.indexOf(":")+1);
 if (!"extParameterDesc".equals(type)){
     //find namespace for the prefix
     java.lang.String nsUri = reader.getNamespaceContext().getNamespaceURI("ns0");
     nsUri="http://external.communication_data_model.medici_link/xsd";
     return  (ExtParameterDesc)medici_link.op_messages.xsd.ExtensionMapper.getTypeObject(nsUri,type,reader);
 }
 

As you can see in the message, it is "http://external.communication_data_model.medici_link/xsd".
So the exception is thrown because it can't get de typeObject.

I added the line nsUri="http://external.communication_data_model.medici_link/xsd"; just before
getTypeObject is called and it works.

With XMLBeans, it works perfectly.

Regards,

Jorge Fernández


       
---------------------------------

LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com
Mime
View raw message