The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

WSDL::Compile - Compile SOAP WSDL from your Moose classes.

SYNOPSIS

    # Name of your WebService: Example
    # Op stands for Operation
    # Your method is CreateCustomer
    #
    # Request - what you expect to receive
    package Example::Op::CreateCustomer::Request;
    use Moose;
    use MooseX::Types::XMLSchema qw( :all );
    use WSDL::Compile::Meta::Attribute::WSDL;

    has 'FirstName' => (
        metaclass => 'WSDL',
        is => 'rw',
        isa => 'xs:string',
        required => 1,
        xs_minOccurs => 1,
    );
    has 'LastName' => (
        metaclass => 'WSDL',
        is => 'rw',
        isa => 'xs:string',
        required => 1,
        xs_minOccurs => 1,
    );
    has 'Contacts' => (
        metaclass => 'WSDL',
        is => 'rw',
        isa => 'ArrayRef[Example::CT::Contact]',
        xs_maxOccurs => undef,
    );

    # Response - that's what will be sent back
    package Example::Op::CreateCustomer::Response;
    use Moose;
    use MooseX::Types::XMLSchema qw( :all );
    use WSDL::Compile::Meta::Attribute::WSDL;

    has 'CustomerID' => (
        metaclass => 'WSDL',
        is => 'rw',
        isa => 'xs:int',
        required => 1,
        xs_minOccurs => 1,
    );

    # Fault - class that defines faultdetails
    package Example::Op::CreateCustomer::Fault;
    use Moose;
    use MooseX::Types::XMLSchema qw( :all );
    use WSDL::Compile::Meta::Attribute::WSDL;

    has 'Code' => (
        metaclass => 'WSDL',
        is => 'rw',
        isa => 'xs:int',
    );
    has 'Description' => (
        metaclass => 'WSDL',
        is => 'rw',
        isa => 'xs:string',
    );

    # CT stands for ComplexType
    # So you can have more complex data structures
    package Example::CT::Contact;
    use Moose;
    use MooseX::Types::XMLSchema qw( :all );
    use WSDL::Compile::Meta::Attribute::WSDL;

    has 'AddressLine1' => (
        metaclass => 'WSDL',
        is => 'rw',
        isa => 'xs:string',
    );
    has 'AddressLine2' => (
        metaclass => 'WSDL',
        is => 'rw',
        isa => 'Maybe[xs:string]',
    );
    has 'City' => (
        metaclass => 'WSDL',
        is => 'rw',
        isa => 'xs:string',
    );

    # below could be put in a script
    package main;
    use strict;
    use warnings;
    use WSDL::Compile;

    my $gen = WSDL::Compile->new(
        service => {
            name => 'Example',
            tns => 'http://localhost/Example',
            documentation => 'Example Web Service',
        },
        operations => [
            qw/
                CreateCustomer
            /
        ],
    );

    my $wsdl = $gen->generate_wsdl();

    print $wsdl;

Please take a look at example/ directory and/or tests for more details.

ATTRIBUTES

namespace

Namespace for SOAP classes.

service

Hashref with following elements:

  • name

    Name of web service

  • tns

    Target namaspace

  • documentation

    Description of web service

operations

Arrayref of all operations available in web service

FUNCTIONS

generate_wsdl

Compile a WSDL file based on the classes. Returns string that you should save as .wsdl file.

build_messages

Builds wsdl:message.

build_portType

Builds wsdl:portType.

build_binding

Builds wsdl:binding.

build_service

Builds wsdl:service.

build_definitions

Builds wsdl:definitions.

build_documentation

Builds wsdl:documentation.

build_types

Builds wsdl:types.

AUTHOR

Alex J. G. Burzyński, <ajgb at cpan.org>

BUGS

Please report any bugs or feature requests to bug-wsdl-compile at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=WSDL-Compile. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

COPYRIGHT & LICENSE

Copyright 2009 Alex J. G. Burzyński.

This program is free software; you can redistribute it and/or modify it under the terms of the Artistic License.