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;
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
use
Moose;
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;
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;
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'
,
documentation
=>
'Example Web Service'
,
},
operations
=> [
qw/
CreateCustomer
/
],
);
my
$wsdl
=
$gen
->generate_wsdl();
$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.