2 Replies Latest reply on Apr 8, 2013 10:01 AM by jeffdelong

    Smooks transform problems - Setting data object 'null'

    jeffdelong

      When I run the following transformation:

       

      <smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd"

                            xmlns:core="http://www.milyn.org/xsd/smooks/smooks-core-1.4.xsd"

                        xmlns:jb="http://www.milyn.org/xsd/smooks/javabean-1.4.xsd">

               

         <core:namespaces>

              <core:namespace prefix="pol" uri="http://www.example.org/policyQuote"/>

          </core:namespaces>

       

       

        <jb:bean beanId="policyQuote" class="org.acme.insurance.PolicyQuote" createOnElement="/pol:policyQuote">

          <jb:value property="requestDate" data="/pol:policyQuote/pol:receivePolicyQuote/pol:requestDate" decoder="Date">

            <jb:decodeParam name="format">yyyy-MM-dd</jb:decodeParam>

          </jb:value>

          <jb:value property="policyType" data="/pol:policyQuote/pol:receivePolicyQuote/pol:policyQuoteInfo/pol:policyType" />

          <jb:value property="vehicleYear" data="/pol:policyQuote/pol:receivePolicyQuote/pol:policyQuoteInfo/pol:vehicleYear"  /> 

          <jb:value property="age" data="/pol:policyQuote/pol:receivePolicyQuote/pol:policyQuoteInfo/pol:age" />

          <jb:value property="creditScore" data="/pol:policyQuote/pol:receivePolicyQuote/pol:policyQuoteInfo/pol:creditScore" />

          <jb:value property="dlNumber" data="/pol:policyQuote/pol:receivePolicyQuote/pol:policyQuoteInfo/pol:dlNumber" />

          <jb:value property="driverName" data="/pol:policyQuote/pol:receivePolicyQuote/pol:policyQuoteInfo/pol:driverName" />

          <jb:value property="numberOfAccidents" data="/pol:policyQuote/pol:receivePolicyQuote/pol:policyQuoteInfo/pol:numberOfAccidents" />

          <jb:value property="numberOfTickets" data="/pol:policyQuote/pol:receivePolicyQuote/pol:policyQuoteInfo/pol:numberOfTickets" />

          <jb:value property="ssn" data="/pol:policyQuote/pol:receivePolicyQuote/pol:policyQuoteInfo/pol:ssn" />

        </jb:bean>

       

      </smooks-resource-list>

       

      I see the following in the log (I have set org.milyn logging to debug)

       

       

      ------- Begin Message Trace -------

      Service -> {urn:org.acme.insurance:PolicyQuoteProcessService:0.0.1-SNAPSHOT}PolicyQuoteProcessService

      Operation -> receivePolicyQuote

      Phase -> IN

      State -> OK

      Exchange Context ->

      Message Context ->

          org.switchyard.messageId : dec13419-6b9a-438e-9a32-c9ed42715dec

          Accept : text/xml, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2

          org.switchyard.soap.messageName : receivePolicyQuoteRequest

          org.switchyard.contentType : {http://www.example.org/policyQuote}policyQuote

      Message Content ->

      <?xml version="1.0" encoding="UTF-8"?><pol:policyQuote xmlns:pol="http://www.example.org/policyQuote">

               <pol:receivePolicyQuote>

                    <pol:requestDate>2010-01-01</pol:requestDate>

                  <pol:task>receivePolicyQuote</pol:task>

                  <pol:policyQuoteInfo>

                     <pol:policyType>AUTO</pol:policyType>

                     <pol:vehicleYear>2004</pol:vehicleYear>

                     <pol:driverName>Bob</pol:driverName>

                     <pol:ssn>22345678</pol:ssn>

                     <pol:dlNumber>12345</pol:dlNumber>

                     <pol:age>20</pol:age>

                     <pol:numberOfAccidents>1</pol:numberOfAccidents>

                     <pol:numberOfTickets>0</pol:numberOfTickets>

                     <pol:creditScore>0</pol:creditScore>

                     <pol:price>0</pol:price>

                  </pol:policyQuoteInfo>

               </pol:receivePolicyQuote>

            </pol:policyQuote>

      ------ End Message Trace -------

      15:03:08,068 DEBUG [org.milyn.delivery.sax.SmooksSAXFilter] (http--127.0.0.1-8080-1) DOMSource converted to a StringSource.

      15:03:08,069 DEBUG [org.milyn.javabean.BeanInstanceCreator] (http--127.0.0.1-8080-1) Bean [policyQuote] instance created.

      15:03:08,070 DEBUG [org.milyn.javabean.BeanInstancePopulator] (http--127.0.0.1-8080-1) Setting data object 'null' (java.util.Date) on target bean 'policyQuote'.

      15:03:08,070 DEBUG [org.milyn.javabean.BeanInstancePopulator] (http--127.0.0.1-8080-1) Setting data object 'null' (java.lang.String) on target bean 'policyQuote'.

      15:03:08,070 DEBUG [org.milyn.javabean.BeanInstancePopulator] (http--127.0.0.1-8080-1) Setting data object 'null' (java.lang.Integer) on target bean 'policyQuote'.

      15:03:08,071 DEBUG [org.milyn.javabean.BeanInstancePopulator] (http--127.0.0.1-8080-1) Setting data object 'null' (java.lang.String) on target bean 'policyQuote'.

      15:03:08,071 DEBUG [org.milyn.javabean.BeanInstancePopulator] (http--127.0.0.1-8080-1) Setting data object 'null' (java.lang.String) on target bean 'policyQuote'.

      15:03:08,072 DEBUG [org.milyn.javabean.BeanInstancePopulator] (http--127.0.0.1-8080-1) Setting data object 'null' (java.lang.String) on target bean 'policyQuote'.

      15:03:08,072 DEBUG [org.milyn.javabean.BeanInstancePopulator] (http--127.0.0.1-8080-1) Setting data object 'null' (java.lang.Integer) on target bean 'policyQuote'.

      15:03:08,072 DEBUG [org.milyn.javabean.BeanInstancePopulator] (http--127.0.0.1-8080-1) Setting data object 'null' (java.lang.Integer) on target bean 'policyQuote'.

      15:03:08,073 DEBUG [org.milyn.javabean.BeanInstancePopulator] (http--127.0.0.1-8080-1) Setting data object 'null' (java.lang.Integer) on target bean 'policyQuote'.

      15:03:08,073 DEBUG [org.milyn.javabean.BeanInstancePopulator] (http--127.0.0.1-8080-1) Setting data object 'null' (java.lang.Integer) on target bean 'policyQuote'.

       

       

      The bean is created but the field are all null.

        • 1. Re: Smooks transform problems - Setting data object 'null'
          kcbabo

          Hmm ... can you paste the transform.smooks definition from your switchyard.xml?  I would expect the type to be XML2JAVA or SMOOKS.  Also, please paste the Java class ""org.acme.insurance.PolicyQuote" so that I can give it a run.  Everything looks right (except for the output) in what you pasted above, so I'll need to debug a bit deeper.

           

          thanks,

          keith

          • 2. Re: Smooks transform problems - Setting data object 'null'
            jeffdelong

            <transforms>

                <transform:transform.jaxb from="{http://dmv.com/drivingRecord}drivingRecordResponse" to="java:dmv.com.DrivingRecordResponseType" contextPath="dmv.com"/>

                <transform:transform.jaxb from="java:dmv.com.DrivingRecordRequestType" to="{http://dmv.com/drivingRecord}drivingRecordRequest"/>

                <transform:transform.smooks from="{http://www.example.org/policyQuote}policyQuote" to="java:org.acme.insurance.PolicyQuote" type="XML2JAVA" config="smooks/PolicyQuoteConfigSmooks.xml"/>

                <transform:transform.smooks from="java:org.acme.insurance.PolicyQuote" to="{http://www.example.org/policyQuote}policyQuoteReply" type="JAVA2XML" config="smooks/PolicyQuoteConfigSmooks.xml"/>

              </transforms>

             

            Also, the Visual Editor does not allow the setting of XML2JAVA ro JAVA2XML, only SMOOKS is set when the transformation type is selected to be Smooks.