[% USE XSD -%]
[% interface_name = XSD.create_interface_name(service, port) -%]
package [% interface_name %];
use strict;
use warnings;
use Class::Std::Fast::Storable;
use Scalar::Util qw(blessed);
use base qw(SOAP::WSDL::Client::Base);

# only load if it hasn't been loaded before
require [% XSD.create_typemap_name(service) %]
    if not [% XSD.create_typemap_name(service) %]->can('get_class');

sub START {
    $_[0]->set_proxy('[% port.first_address.get_location %]') if not $_[2]->{proxy};
    $_[0]->set_class_resolver('[% XSD.create_typemap_name(service) %]')
        if not $_[2]->{class_resolver};

    $_[0]->set_prefix($_[2]->{use_prefix}) if exists $_[2]->{use_prefix};
}

[%      binding = definitions.find_binding( port.expand( port.get_binding ) );
        FOREACH operation = binding.get_operation;
%][% INCLUDE Interface/Operation.tt %]

[%
        END;
%]

1;

[% IF NO_POD; STOP; END %]

__END__
[%# work around for CPAN's indexer, which gets disturbed by pod in templates -%]
[% pod = BLOCK %]=pod[% END -%]
[% head1 = BLOCK %]=head1[% END -%]
[% head2 = BLOCK %]=head2[% END -%]
[% head3 = BLOCK %]=head3[% END -%]

[% pod %]

[% head1 %] NAME

[% interface_name %] - SOAP Interface for the [% service.get_name %] Web Service

[% head1 %] SYNOPSIS

 use [% interface_name %];
 my $interface = [% interface_name %]->new();

 my $response;
[%      FOREACH operation = binding.get_operation;
%] $response = $interface->[% operation.get_name %]();
[%      END %]


[% head1 %] DESCRIPTION

SOAP Interface for the [% service.get_name %] web service
located at [% port.first_address.get_location %].

[% head1 %] SERVICE [% service.get_name %]

[% service.get_documentation %]

[% head2 %] Port [% port.get_name %]

[% port.get_documentation %]

[% head1 %] METHODS

[% head2 %] General methods

[% head3 %] new

Constructor.

All arguments are forwarded to L<SOAP::WSDL::Client|SOAP::WSDL::Client>.

[% head2 %] SOAP Service methods

[% INCLUDE Interface/POD/method_info.tt %]

[%      FOREACH operation = binding.get_operation;
%][% INCLUDE Interface/POD/Operation.tt %]
[%      END %]

[% head1 %] AUTHOR

Generated by SOAP::WSDL on [% PERL %]print scalar localtime() [% END %]

=cut
