bet365 / soap

Make it easy to use SOAP from Erlang
Apache License 2.0
200 stars 74 forks source link

Using lists in hrl to create wsdl errors #39

Closed hez closed 5 years ago

hez commented 6 years ago

Using part of the example from https://github.com/bet365/soap/blob/master/doc/generating_a_wsdl.md

-spec store(Parsed_body::#person{},
    Soap_req::soap:soap_req(), State::soap:soap_handler_state())
    -> soap:soap_handler_response(contacts_response()).

-record(person, {
        '@id' :: integer(),          %% will be an attribute "id" in the XML
        first_name :: string(),
        last_name = "" :: string(),  %% will mandatory in the XSD
        married :: boolean(),
        age :: non_neg_integer(),
        height :: float(),
        hobbies :: [string()]
}).

-type person() :: #person{}.

errors with

1> soap:erlang2wsdl("contacts.hrl", "contacts", "http://localhost:8080").
** exception throw: {error,"Wrong Type in attribute type, expected qname, got {{qname,\"http://www.w3.org/2001/XMLSchema\",\"string\",undefined,undefined},\n undefined,undefined}"}
     in function  erlsom_write:processAttributes/5 (src/erlsom_write.erl, line 435)
     in call from erlsom_write:processAlternativeValue/8 (src/erlsom_write.erl, line 306)
     in call from erlsom_write:processElementValues/7 (src/erlsom_write.erl, line 239)
     in call from erlsom_write:struct2xml/6 (src/erlsom_write.erl, line 130)
     in call from erlsom_write:processAlternativeValue/8 (src/erlsom_write.erl, line 326)
     in call from erlsom_write:processElementValues/7 (src/erlsom_write.erl, line 239)
     in call from erlsom_write:struct2xml/6 (src/erlsom_write.erl, line 114)
     in call from erlsom_write:processAlternativeValue/8 (src/erlsom_write.erl, line 326)