File Coverage

lib/XML/Compile/SOAP11/Server.pm
Criterion Covered Total %
statement 21 58 36.2
branch 0 4 0.0
condition 0 3 0.0
subroutine 7 15 46.6
pod 0 8 0.0
total 28 88 31.8


line stmt bran cond sub pod time code
1             # Copyrights 2007-2019 by [Mark Overmeer ].
2             # For other contributors see ChangeLog.
3             # See the manual pages for details on the licensing terms.
4             # Pod stripped from pm file by OODoc 2.02.
5             # This code is part of distribution XML-Compile-SOAP. Meta-POD processed
6             # with OODoc into POD and HTML manual-pages. See README.md
7             # Copyright Mark Overmeer. Licensed under the same terms as Perl itself.
8              
9             package XML::Compile::SOAP11::Server;
10 7     7   46 use vars '$VERSION';
  7         13  
  7         534  
11             $VERSION = '3.26';
12              
13 7     7   44 use base 'XML::Compile::SOAP11', 'XML::Compile::SOAP::Server';
  7         15  
  7         3220  
14              
15 7     7   49 use warnings;
  7         48  
  7         190  
16 7     7   37 use strict;
  7         13  
  7         148  
17              
18 7     7   30 use Log::Report 'xml-compile-soap';
  7         19  
  7         41  
19              
20 7     7   1766 use XML::Compile::SOAP::Util qw/SOAP11ENV SOAP11NEXT/;
  7         13  
  7         363  
21 7     7   38 use XML::Compile::Util qw/pack_type unpack_type SCHEMA2001/;
  7         13  
  7         4495  
22              
23              
24             sub init($)
25 0     0 0   { my ($self, $args) = @_;
26 0           $self->XML::Compile::SOAP11::init($args);
27 0           $self->XML::Compile::SOAP::Server::init($args);
28 0           $self;
29             }
30              
31             sub makeError(@)
32 0     0 0   { my ($self, %args) = @_;
33 0           info "Fault: $args{faultstring}";
34 0           $self->faultWriter->(Fault => \%args);
35             }
36              
37             sub faultValidationFailed($$)
38 0     0 0   { my ($self, $name, $exception) = @_;
39              
40 0           my $message =
41             __x"operation {name} for {version} called with invalid data"
42             , name => $name, version => 'SOAP11';
43              
44 0           my $errors = XML::LibXML::Element->new('error');
45 0           $errors->appendText($exception->message->toString);
46 0           my $detail = XML::LibXML::Element->new('detail');
47 0           $detail->addChild($errors);
48              
49 0           $self->makeError
50             ( faultcode => pack_type(SOAP11ENV, 'Server.validationFailed')
51             , faultstring => $message
52             , faultactor => $self->role
53             , detail => $detail
54             );
55             }
56              
57             sub faultResponseInvalid($$)
58 0     0 0   { my ($self, $name, $exception) = @_;
59              
60 0           my $message =
61             __x"procedure {name} for {version} produced an invalid response"
62             , name => $name, version => 'SOAP11';
63              
64 0           my $errors = XML::LibXML::Element->new('error');
65 0           $errors->appendText($exception->message->toString);
66 0           my $detail = XML::LibXML::Element->new('detail');
67 0           $detail->addChild($errors);
68              
69             # fault code does not really exist, but we need it.
70 0           $self->makeError
71             ( faultcode => pack_type(SOAP11ENV, 'Server.invalidResponse')
72             , faultstring => $message
73             , faultactor => $self->role
74             , detail => $detail
75             );
76             }
77              
78             sub faultNotImplemented($)
79 0     0 0   { my ($self, $name) = @_;
80              
81 0           my $message = __x"procedure {name} for {version} is not yet implemented"
82             , name => $name, version => 'SOAP11';
83              
84 0           +{ Fault =>
85             { faultcode => pack_type(SOAP11ENV, 'Server.notImplemented')
86             , faultstring => $message
87             , faultactor => SOAP11NEXT
88             }
89             };
90             }
91              
92             sub faultNoAnswerProduced($)
93 0     0 0   { my ($self, $name) = @_;
94            
95 0           my $message = __x"callback {name} did not return an answer", name => $name;
96 0           $self->makeError
97             ( faultcode => pack_type(SOAP11ENV, 'Server.noAnswerProduced')
98             , faultstring => $message
99             , faultactor => $self->role
100             );
101             }
102              
103             sub faultMessageNotRecognized($$$)
104 0     0 0   { my ($self, $name, $action, $handlers) = @_;
105              
106 0           my $message;
107 0 0 0       if($handlers && @$handlers)
108 0 0         { my $sa = $action ? " (soapAction $action)" : '';
109 0           $message = __x"{version} body element {name}{sa} not recognized, available ports are {def}"
110             , version => 'SOAP11', name => $name, sa => $sa, def => $handlers;
111             }
112             else
113 0           { $message =
114             __x"{version} there are no handlers available, so also not for {name}"
115             , version => 'SOAP11', name => $name;
116             }
117              
118 0           $self->makeError
119             ( faultcode => pack_type(SOAP11ENV, 'Server.notRecognized')
120             , faultstring => $message
121             , faultactor => SOAP11NEXT
122             );
123             }
124              
125             sub faultTryOtherProtocol($$)
126 0     0 0   { my ($self, $name, $other) = @_;
127              
128 0           my $message =
129             __x"body element {name} not available in {version}, try {other}"
130             , name => $name, version => 'SOAP11', other => $other;
131              
132 0           $self->makeError
133             ( faultcode => pack_type(SOAP11ENV, 'Server.tryUpgrade')
134             , faultstring => $message
135             , faultactor => SOAP11NEXT
136             );
137             }
138              
139             1;