SOAP::WSDL::Deserializer::SOM - Deserializer SOAP messages into SOM objects


SOAP-WSDL documentation Contained in the SOAP-WSDL distribution.

Index


Code Index:

NAME

Top

SOAP::WSDL::Deserializer::SOM - Deserializer SOAP messages into SOM objects

SYNOPSIS

Top

 use SOAP::WSDL;
 use SOAP::WSDL::Deserializer::SOM;
 use SOAP::WSDL::Factory::Deserializer;
 SOAP::WSDL::Factory::Deserializer->register( '1.1', __PACKAGE__ );

DESCRIPTION

Top

Deserializer for creating SOAP::Lite's SOM object as result of a SOAP call.

This package is here for two reasons:

* Compatibility

You don't have to change the rest of your SOAP::Lite based app when switching to SOAP::WSDL, but can just use SOAP::WSDL::Deserializer::SOM to get back the same objects as you were used to.

* Completeness

SOAP::Lite covers much more of the SOAP specification than SOAP::WSDL.

SOAP::WSDL::Deserializer::SOM can be used for content which cannot be deserialized by SOAP::WSDL::Deserializer::SOAP11 (SOAP::WSDL::Deserializer::SOAP11). This may be XML including mixed content, attachements and other XML data not (yet) handled by SOAP::WSDL::Deserializer::SOAP11 (SOAP::WSDL::Deserializer::SOAP11).

SOAP::WSDL::Deserializer::SOM is a subclass of SOAP::Deserializer (SOAP::Deserializer) from the SOAP::Lite package.

METHODS

Top

deserialize

Deserializes a XML sting into a SOAP::SOM object. Returns a SOAP::Fault object on deserialization errors.

generate_fault

Dies with a SOAP::Fault object.

USAGE

Top

SOAP::WSDL::Deserializer will not autoregister itself - to use it for a particular SOAP version just use the following lines:

 my $soap_version = '1.1'; # or '1.2', further versions may appear.

 use SOAP::WSDL::Deserializer::SOM;
 use SOAP::WSDL::Factory::Deserializer;
 SOAP::WSDL::Factory::Deserializer->register( $soap_version, __PACKAGE__ );

DIFFERENCES FROM OTHER CLASSES

Top

Differences from SOAP::Lite

* No on_fault handler

You cannot specify what to do when an error occurs - SOAP::WSDL will return a SOAP::Fault object on transport errors.

Differences from other SOAP::WSDL::Deserializer classes

* generate_fault

SOAP::WSDL::Deserializer::SOM will die with a SOAP::Fault object on calls to generate_fault.

This also means that a SOAP::Fault may be thrown as exception when using

LICENSE AND COPYRIGHT

Top

AUTHOR

Top

Martin Kutter <martin.kutter fen-net.de>

REPOSITORY INFORMATION

Top

 $Rev: 851 $
 $LastChangedBy: kutterma $
 $Id: SOM.pm 851 2009-05-15 22:45:18Z kutterma $
 $HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/SOM.pm $


SOAP-WSDL documentation Contained in the SOAP-WSDL distribution.

package SOAP::WSDL::Deserializer::SOM;
use strict;
use warnings;

use version; our $VERSION = qv('2.00.10');
our @ISA;

eval {
    require SOAP::Lite;
    push @ISA, 'SOAP::Deserializer';
}
or die "Cannot load SOAP::Lite.
Cannot deserialize to SOM object without SOAP::Lite.
Please install SOAP::Lite.";

sub deserialize {
    my $self = shift;
    my $result = eval { $self->SUPER::deserialize(@_) };
    if ($@) {
        return SOAP::Fault->new(
            faultactor => 'SOAP-ENV:Server',
            faultstring => $@,
        );
    }
    return $result;
}

sub generate_fault {
    my ($self, $args_from_ref) = @_;
    # code, message, detail, actor
    die SOAP::Fault->new(
        faultcode => $args_from_ref->{ code },
        faultstring => $args_from_ref->{ message },
        faultactor => $args_from_ref->{ role },
    );
}

1;

__END__