0 Replies Latest reply on Dec 10, 2015 2:40 PM by 2612722

    Issue with WSDL generated using Integrated SOA Gateway to expose pl/sql custom package with collection parameter

    2612722

      I have a problem when exposing a custom pl/sql package as a SOAP service using Integrated SOA Gateway (EBS version is 12.1.3).


      Let me describe the issue:

      A package is being exposed and it contains a function annotated in the following way:

      /*#

      * Function description

      * @param p_params Table of parameters represented as Key-Value pairs.

      @rep:paraminfo {@rep:innertype apps.xx_ksa_sysadmin_pub.t_param}

      * @param x_result Function result (Success/Error) 

      * @param x_message Function return message in case of error

      * @return Returns the list

      * @rep:scope public

      * @rep:lifecycle active

      * @rep:displayname Function name

      * @rep:compatibility S

      * @rep:businessevent None

      */

      function get_conc_list(p_params  in xx_ksa_sysadmin_pub.t_param,

                               x_result  out varchar2,

                               x_message out varchar2)

      return xx_ksa_sysadmin_pub.t_requests;

                                                       

      One of the parameters of the function, p_param is a table type declared in the package specification the following way:

        type r_param is record(

          param_name varchar2(50),

          param_value varchar2(100));

       

        type t_param is table of r_param;

       

      When this package is imported into integration repository and then the SOAP web service + its WSDL is generated, following thing happens with the collection type parameters; in XSD definition of this function, parameter is defined following way:

      <complexType name="APPS.XX_KSA_SYSADMINX3382376X5X13">

      <sequence>

      <element name="P_PARAMS_ITEM" type="db:APPS.XX_KSA_SYSADMINX3382376X5X14" db:type="Struct" minOccurs="0" maxOccurs="unbounded" nillable="true"/>

      </sequence>

      </complexType>

       

      My problem here is that the type APPS.XX_KSA_SYSADMINX3382376X5X14 was created automatically when the SOAP service was being generated and it has a random unintuitive name. This causes problems to developers when they use WSDL in design time (e.g. Jdeveloper) where a bunch of classes are being generated with the same un-intuitive name.

       

      Is there a way to force the SOAP service generation to create types for collection parameters that have the name I want (e.g I created a type in the package, why is this type not being used)??

       

      I was hoping that by using

      @rep:paraminfo {@rep:innertype apps.xx_ksa_sysadmin_pub.t_param}

      annotation I could achieve desired effect but that didn’t help. which brings to my second question here,  what is this annotation used for?