[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Ksoap: receiving array of user-defined object



I am newbie in ksoap. I want to recieve array of TransRecord user-defined object using KvmSerialize.
I tried to make implementation of KvmSerialize like below, but I only get SoapObject instead TransRecord.
Any help will be appreciated.

                ClassMap cm = new ClassMap(Soap.VER11);
                cm.prefixMap = new PrefixMap(cm.prefixMap, "ns-946433677", "http://model.bank");
                cm.addMapping("http://model.bank", "TransRecord", new TransRecord2().getClass());
                rpc.setClassMap(cm);
               
               
                SoapObject so=null;
                TransRecord[] tr = null;
               
                try {
                        so = (SoapObject)rpc.call(method);
                        //tr = (TransRecord[])rpc.call(method);
                ....

package bank.model;

import java.math.BigDecimal;
import java.util.Calendar;
import java.util.Date;

import org.kobjects.isodate.IsoDate;
import org.kobjects.serialization.ElementType;
import org.kobjects.serialization.KvmSerializable;
import org.kobjects.serialization.PropertyInfo;
import org.ksoap.SoapObject;
import org.ksoap.SoapPrimitive;

public class TransRecord implements KvmSerializable {
    private java.util.Calendar timeStamp;
    private java.lang.String transType;
    private java.math.BigDecimal transAmt;


        private static int PROP_COUNT = 3;
        private static PropertyInfo PI_timeStamp = new PropertyInfo ("timeStamp", Calendar.class.getClass());
        private static PropertyInfo PI_transType = new PropertyInfo ("transType", ElementType.STRING_CLASS);
        private static PropertyInfo PI_transAmt = new PropertyInfo ("transAmt", BigDecimal.class.getClass());
       
        private static PropertyInfo[] PI_PROP_ARRAY = {PI_timeStamp, PI_transType, PI_transAmt};  


    public TransRecord() {
    }


    public java.util.Calendar getTimeStamp() {
        return timeStamp;
    }

    public void setTimeStamp(java.util.Calendar timeStamp) {
        this.timeStamp = timeStamp;
    }

    public java.lang.String getTransType() {
        return transType;
    }

    public void setTransType(java.lang.String transType) {
        this.transType = transType;
    }

    public java.math.BigDecimal getTransAmt() {
        return transAmt;
    }

    public void setTransAmt(java.math.BigDecimal transAmt) {
        this.transAmt = transAmt;
    }
   
   
        /**
         * @see org.kobjects.serialization.KvmSerializable#getProperty(int)
         */
        public Object getProperty(int param) {
                switch (param) {
                        case 0 : return getTimeStamp();
                        case 1 : return getTransType();
                        case 2 : return getTransAmt();
                        default :
                                System.err.println ("FATAL: Unknown type : param");
                                return null;
                }
        }

        /**
         * @see org.kobjects.serialization.KvmSerializable#getPropertyCount()
         */
        public int getPropertyCount() {
                return PI_PROP_ARRAY.length;
        }

        /**
         * @see org.kobjects.serialization.KvmSerializable#setProperty(int, Object)
         */
        public void setProperty(int param, Object obj) {
                switch (param) {
                        case 0 :
                                setTimeStamp((Calendar)obj);
                                break;
                        case 1 :
                                setTransType((String)obj);
                                break;
                        case 2 :
                                setTransAmt((BigDecimal)obj);
                                break;
                        default :
                                System.err.println ("FATAL: Unknown type : param");
                                return;
                }
        }

        /**
         * @see org.kobjects.serialization.KvmSerializable#getPropertyInfo(int, PropertyInfo)
         */
        public void getPropertyInfo(int param, PropertyInfo propertyInfo) {
                propertyInfo.name = PI_PROP_ARRAY[param].name;
                propertyInfo.nonpermanent = PI_PROP_ARRAY[param].nonpermanent;
                propertyInfo.copy(PI_PROP_ARRAY[param]);
        }

}


Here is the SOAP message request/response.
1. request
    <?xml version="1.0" encoding="UTF-8" ?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://service.bank" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <SOAP-ENV:Body>
   <q0:getTransactions>
   <q0:accountID>00</q0:accountID>
  </q0:getTransactions>
  </SOAP-ENV:Body>
  </SOAP-ENV:Envelope>
2. response
  <?xml version="1.0" encoding="UTF-8" ?>
  <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
  <getTransactionsResponse xmlns="http://service.bank">
  <ns-946433677:TransRecord xmlns:ns-946433677="http://model.bank">
  <ns-946433677:timeStamp>2004-02-04T05:16:36.132Z</ns-946433677:timeStamp>
  <ns-946433677:transType>Trx1</ns-946433677:transType>
  <ns-946433677:transAmt>80</ns-946433677:transAmt>
  </ns-946433677:TransRecord>
  <ns-946433677:TransRecord xmlns:ns-946433677="http://model.bank">
  <ns-946433677:timeStamp>2004-02-04T05:16:36.132Z</ns-946433677:timeStamp>
  <ns-946433677:transType>Trx2</ns-946433677:transType>
  <ns-946433677:transAmt>81</ns-946433677:transAmt>
  </ns-946433677:TransRecord>
  <ns-946433677:TransRecord xmlns:ns-946433677="http://model.bank">
  <ns-946433677:timeStamp>2004-02-04T05:16:36.132Z</ns-946433677:timeStamp>
  <ns-946433677:transType>Trx3</ns-946433677:transType>
  <ns-946433677:transAmt>82</ns-946433677:transAmt>
  </ns-946433677:TransRecord>
  <ns-946433677:TransRecord xmlns:ns-946433677="http://model.bank">
  <ns-946433677:timeStamp>2004-02-04T05:16:36.132Z</ns-946433677:timeStamp>
  <ns-946433677:transType>Trx4</ns-946433677:transType>
  <ns-946433677:transAmt>83</ns-946433677:transAmt>
  </ns-946433677:TransRecord>
  <ns-946433677:TransRecord xmlns:ns-946433677="http://model.bank">
  <ns-946433677:timeStamp>2004-02-04T05:16:36.132Z</ns-946433677:timeStamp>
  <ns-946433677:transType>Trx5</ns-946433677:transType>
  <ns-946433677:transAmt>84</ns-946433677:transAmt>
  </ns-946433677:TransRecord>
  </getTransactionsResponse>
  </soapenv:Body>
  </soapenv:Envelope>


Regards,

CW.