The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

XML::Compile::SOAP::Server - server-side SOAP message processing

INHERITANCE

 XML::Compile::SOAP::Server is extended by
   XML::Compile::SOAP11::Server
   XML::Compile::SOAP12::Server

SYNOPSIS

  # THIS CANNOT BE USED YET: Preparations for new module
  # named XML::Compile::SOAP::Daemon

  my $soap   = XML::Compile::SOAP11::Server->new;
  my $input  = $soap->compileMessage('RECEIVER', ...);
  my $output = $soap->compileMessage('SENDER', ...);

  $soap->compileHandler
    ( name => $name, input => $input, output => $output
    , callback => \$my_handler
    );

  my $daemon = XML::Compile::SOAP::HTTPDaemon->new(...);
  $daemon->addHandler($type => $daemon);

DESCRIPTION

This class defines methods that each server for the SOAP message exchange protocols must implement.

METHODS

Instantiation

This object can not be instantiated, but is only used as secundary base class. The primary must contain the new.

XML::Compile::SOAP::Server->new(OPTIONS)

     Option--Default
     role    'NEXT'

    . role => URI

      In SOAP1.1, the term is 'actor', but SOAP1.2 has renamed this into 'role': the role [this daemon] plays in the transport protocol.

      Please use the role abbreviations as provided by the protocol implementations when possible: they will be translated into the right URI on time. See XML::Compile::SOAP::roleAbbreviation() and the constants defined in XML::Compile::SOAP::Util

Accessors

$obj->role

    Returns the URI of the role (actor) of this server.

Actions

$obj->compileFilter(OPTIONS)

    This routine returns a CODE reference which can be used for compileHandler(selector); so see whether a certain message has arrived. On the moment, only the first body element is used to determine that.

     Option--Default
     body    []
     fault   <undef>
     header  <undef>

    . body => ARRAY-of-TYPES

    . fault => ARRAY-of-TYPES

    . header => ARRAY-of-TYPES

$obj->compileHandler(OPTIONS)

     Option  --Default
     callback  <fault: not implemented>
     decode    <undef>
     encode    <undef>
     name      <required>
     selector  sub {0}

    . callback => CODE

      As input, the SERVER object and the translated input message (Perl version) are passed in. As output, a suitable output structure must be produced. If the callback is not set, then a fault message will be returned to the user.

    . decode => CODE

      The CODE reference is used to decode the (parsed) XML input message into the pure Perl request. The reference is a READER, created with XML::Compile::Schema::compile(). If no input decoder is specified, then the callbackhandler will be called with the un-decoded XML::LibXML::Document node.

    . encode => CODE

      The CODE reference is used to encode the Perl answer structure into the output message. The reference is a WRITER. created with XML::Compile::Schema::compile(). If no output encoder is specified, then the callback must return an XML::LibXML::Document, or only produce error messages.

    . name => STRING

      The identification for this action, for instance used for logging. When the action is created via a WSDL, the portname will be used here.

      It is a pitty that the portname is not passed in the SOAP message, because it is not so easy to detect which handler must be called.

    . selector => CODE

      One way or the other, you have to figure-out whether a message addresses a certain process. The callback will only be used if the CODE reference specified here returns a true value.

      The CODE reference will be called with the XML version of the message, and a HASH which contains the information about the XML collected with XML::Compile::SOAP::messageStructure() plus the soap_version entry.

XML::Compile::SOAP::Server->faultWriter

    Returns a CODE reference which can be used to produce faults.

SEE ALSO

This module is part of XML-Compile-SOAP distribution version 0.74, built on July 18, 2008. Website: http://perl.overmeer.net/xml-compile/

All modules in this suite: XML::Compile, XML::Compile::SOAP, XML::Compile::SOAP::Daemon, XML::Compile::Tester, XML::Compile::Cache, XML::Compile::Dumper.

Please post questions or ideas to the mailinglist at http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/xml-compile For life contact with other developers, visit the #xml-compile channel on irc.perl.org.

LICENSE

Copyrights 2007-2008 by Mark Overmeer. For other contributors see ChangeLog.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See http://www.perl.com/perl/misc/Artistic.html