#5 tmpl/include updates: exception handling, objectification et

open
nobody
None
5
2004-04-15
2004-04-15
No

As part of a project here at BlueReach we have made
some updates/changes to the wsdl2perl which we hope
others find useful.

I have attached RELEASE-NOTES below which include
high level overview of the changes to the templates.

#
# Revised by: $Author: kapi $
# on: $Date: 2004/03/31 21:10:39 $
#
# Filename: $RCSfile: Adapter.pm,v $
# Revision: $Revision: 1.1 $
#
#

RELEASE-
NOTES.BlueReach
04/16/04

Requirements:
-------------
- need to use latest version of SOAP::Lite 0.65 from CVS

general/global updates
----------------------
- added POD style documentation section to each class
being generated
which includes usage examples of methods in that class

- use of Log::Log4perl for logging. All Log::Log4perl
lines have been
commented out in this release as not everyone gets
the coolness of this
logger.

types.tt
--------
- During the auto generation of all classes distinguish
between:
- methods for exception handling
- methods for complexType handling
to facilitate throwable exceptions as defined by WSDL
faults.
- Extend Error.pm module into each auto generated
exception class
to implement a mechanism of exception handling as
defined
by the source WSDL.
- In methods which extend Error.pm module override
Error::strinify to allow
customizable formating of error messages
- a complexType gets instantiated with a data from a
SOM object. All the
values in the SOM object are not prefixed with '_'.
The constructor
expects all input parameters to be prefixed with
an '_'. A simple,
non-exhaustive conversion logic was added to accept
non-prefixed input
parameters and convert them into '_' prefixed versions.

binding.tt, bindingOperation.tt
----------
- When a method returns a complexType the
complexType is instantiated with
its corresponding SOM data and that complexType is
return as an object of
that complexType. (Internally each method gets a
SOM object from the
SOAP call, we now do a transformation of that data
into the appropriate
complexType object described by the WSDL.)
- If there is a fault returned by the SOM object the
method in which the
fault occured an exception is thrown according to
specificication
described in the WSDL.
- Added a new Util class (per WSDL used) to implement
expandNode().
If a complexType contains a serialized verion of a
complexType as one of
its elements, expandNode() converts that serialized
complexType into
an appropriate complexType object and returns it as
an ArrayOf those types
of objects.

OBSERVATIONS/FEATURES/BUGS:
- overloaded methods in the WSDL are currently not
handled at all, two
methods of the same name will be stubbed which will
case warnings.
- still unable to properly serialize proper name spaces to
nested
complexType's of complexTypes.
- currently data complexTypes during the autobuilding
process do not
check the namespace they belong to. For example
two WSDL's which
share the same namespace will create their own
versions of a complexType
defined inside each of their respective packages even
though that
complexType is really unique within the namespace
that both packages
share.
- WARNING: we also noticed that XML docs sometimes
contain soap:body style
declarations and othertimes contain wsdlsoap:body...
this makes many things
break in wsdl2perl. Hence we modified some findvalue
() pattern matches
to use 'wsdlsoap' instead of 'soap'.

Contact:
--------

These updates are maintained by:

BlueReach Communications Inc.
Jason Kelly (jkelly at promptunetworks dot com)
Piotr Kapiszewski (kapi at promtpunetworks dot com)

Discussion