File Coverage

blib/lib/SOAP/WSDL/Part.pm
Criterion Covered Total %
statement 29 33 87.8
branch 6 8 75.0
condition 2 2 100.0
subroutine 6 6 100.0
pod 0 1 0.0
total 43 50 86.0


line stmt bran cond sub pod time code
1             package SOAP::WSDL::Part;
2 1     1   1042 use strict;
  1         2  
  1         44  
3 1     1   7 use warnings;
  1         2  
  1         43  
4 1     1   6 use Carp qw(croak);
  1         3  
  1         75  
5 1     1   1134 use Class::Std::Fast::Storable;
  1         30699  
  1         9  
6              
7 1     1   206 use base qw(SOAP::WSDL::Base);
  1         9  
  1         813  
8              
9             our $VERSION = $SOAP::WSDL::VERSION;
10              
11             my %element_of :ATTR(:name :default<()>);
12             my %type_of :ATTR(:name :default<()>);
13              
14             sub serialize
15             {
16 4     4 0 1994 my $self = shift;
17 4         6 my $name = shift;
18 4         26 my $data = shift;
19 4         6 my $opt = shift;
20 4   100     24 my $typelib = $opt->{ typelib } || die "No typelib";
21 3         4 my %ns_map = %{ $opt->{ namespace } };
  3         11  
22              
23 3         4 my $item_name;
24 3 100       9 if ($item_name = $self->get_type() ) {
    100          
25             # resolve type
26 1         9 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         14 my ($prefix, $localname) = split /:/ , $item_name, 2;
35 1 50       6 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         22 die "Neither type nor element - don't know what to do";
44             }
45              
46             1;