File Coverage

blib/lib/SOAP/WSDL/Part.pm
Criterion Covered Total %
statement 32 36 88.8
branch 6 8 75.0
condition 2 2 100.0
subroutine 7 7 100.0
pod 0 1 0.0
total 47 54 87.0


line stmt bran cond sub pod time code
1             package SOAP::WSDL::Part;
2 1     1   5291 use strict;
  1         3  
  1         48  
3 1     1   7 use warnings;
  1         2  
  1         39  
4 1     1   6 use Carp qw(croak);
  1         2  
  1         75  
5 1     1   1292 use Class::Std::Fast::Storable;
  1         53280  
  1         8  
6              
7 1     1   154 use base qw(SOAP::WSDL::Base);
  1         4  
  1         1170  
8              
9 1     1   8 use version; our $VERSION = qv('3.001');
  1         2  
  1         6  
10              
11             my %element_of :ATTR(:name :default<()>);
12             my %type_of :ATTR(:name :default<()>);
13              
14             sub serialize
15             {
16 4     4 0 2059 my $self = shift;
17 4         7 my $name = shift;
18 4         6 my $data = shift;
19 4         6 my $opt = shift;
20 4   100     26 my $typelib = $opt->{ typelib } || die "No typelib";
21 3         4 my %ns_map = %{ $opt->{ namespace } };
  3         12  
22              
23 3         4 my $item_name;
24 3 100       10 if ($item_name = $self->get_type() ) {
    100          
25             # resolve type
26 1         8 my ($prefix, $localname) = split /:/ , $item_name, 2;
27 1 50       10 my $type = $typelib->find_type( $ns_map{ $prefix }, $localname)
28             or die "type $item_name , $ns_map{ $prefix } not found";
29              
30 0         0 my $name = $self->get_name();
31 0         0 return $type->serialize( $name, $data->{ $name }, $opt );
32             }
33             elsif ( $item_name = $self->get_element() ) {
34 1         12 my ($prefix, $localname) = split /:/ , $item_name, 2;
35 1 50       5 my $element = $typelib->find_element(
36             $ns_map{ $prefix },
37             $localname
38             )
39             or die "element $item_name , $ns_map{ $prefix } not found";
40 0         0 $opt->{ qualify } = 1;
41 0         0 return $element->serialize( undef, $data->{ $element->get_name() }, $opt );
42             }
43 1         24 die "Neither type nor element - don't know what to do";
44             }
45              
46             1;