NAME
    Catalyst::Model::SOAP - Map a WSDL to a catalyst model class.

SYNOPSIS
      {# In the model class...
          package MyApp::Model::SOAP;
          use base qw(Catalyst::Model::SOAP);
          __PACKAGE__->register_wsdl('http://foo.bar/baz.wsdl', 'Baz');
          __PACKAGE__->register_wsdl('http://baz.bar/foo.wsdl', 'Foo');
      };
      {# later in some other class..
         $c->model('SOAP::Baz')->getWeather(%arguments);
         # is then dispatched to the operation getWeather described by the
         # first wsdl...
         $c->model('SOAP::Foo')->foo(%arguments);
         # is then dispatched to the operation foo described by the
         # second wsdl...
      };

ABSTRACT
    Create a catalyst model class from a WSDL definition using
    XML::Compile::SOAP.

DESCRIPTION
    This module implements a mapping from a wsdl definition, interpreted by
    XML::Compile::SOAP::WSDL, as a Model class, where each operation in the
    wsdl file is represented by a method with the same name.

METHODS
    register_wsdl($wsdl, $targetclass)
        This method will register the operations described by $wsdl in the
        $targetclass package. $wsdl may be anythin
        XML::Compile::SOAP::WSDL11 accepts. The $targetclass is a relative
        package name which will be concatenated in the name of the model.

        Note that XML::Compile->knownNamespace(...) can be used to help
        declaring the wsdl.

ACCESSORS
    For each operation, a secondary method called _$operation_data is
    created. This method returns a list composed by the WSDL object, the
    operation object and the compiled code ref.

INVOCATION
    The invocation schema for each operation is documented in
    XML::Compile::SOAP. Each method is a closure that will call the coderef
    with the parameters ($self excluded).

XML::Compile::SOAP x SOAP::WSDL
    For this module, there were two options on the SOAP client
    implementation. XML::Compile::SOAP and SOAP::WSDL. While both implement
    all the features expected by this module, the reason to choose
    XML::Compile::SOAP over SOAP::WSDL resides in the hability to support
    the specs more closely in the future. And also to provide a better
    support to handle literal XML messages. As the SOAP::WSDL documentation
    already states, XML::Compile::SOAP provides an approach much more
    extensible and close to the specs than SOAP::WSDL.

    Another version of this module may be implemented in the future
    supporting the other module, but, as for the relationship between
    Catalyst::Controller::SOAP and Catalyst::Model::SOAP, XML::Compile::SOAP
    seems to make more sense.

SEE ALSO
    Catalyst::Controller::SOAP, XML::LibXML, XML::Compile::SOAP

AUTHORS
    Daniel Ruoso "daniel.ruoso@verticalone.pt"

BUG REPORTS
    Please submit all bugs regarding "Catalyst::Model::SOAP" to
    "bug-catalyst-model-soap@rt.cpan.org"

LICENSE
    This library is free software, you can redistribute it and/or modify it
    under the same terms as Perl itself.

