--- SOAP-Lite/lib/SOAP/Lite.pm 2006-02-13 14:49:39.000000000 -0800 +++ /tmp/Lite.pm 2006-02-15 12:21:04.000000000 -0800 @@ -1687,6 +1687,7 @@ sub parts { my $self = shift; + die "SOAP::SOM->parts was broken by a CBL-local change to break a circular reference"; if (@_) { $self->context->packager->parts(@_); return $self; @@ -1926,7 +1927,7 @@ } $self->decode_object($parsed); my $som = SOAP::SOM->new($parsed); - $som->context($self->context); # TODO - try removing this and see if it works! +# $som->context($self->context); # TODO - try removing this and see if it works! return $som; } @@ -2133,25 +2134,9 @@ my $res = {}; $self->hrefs->{$id} = $res if defined $id; # Patch code introduced in 0.65 - deserializes array properly - # %$res = map {$self->decode_object($_)} @{$children || []}; # removed in patch - # Decode each element of the struct. - foreach my $child (@{$children || []}) { - my ($child_name, $child_value) = $self->decode_object($child); - # Store the decoded element in the struct. If the element name is - # repeated, replace the previous scalar value with a new array - # containing both values. - my $prev = $res->{$child_name}; - if (not defined $prev) { - # first time to see this value: use scalar - $res->{$child_name} = $child_value; - } elsif (ref $prev ne "ARRAY") { - # second time to see this value: convert scalar to array - $res->{$child_name} = [ $prev, $child_value ]; - } else { - # already have an array: append to it - push @{$res->{$child_name}}, $child_value; - } - } + # ARK - this patch does not work as advertised. WebObjects WS calls + # are not serialized correctly. It has been backed out + %$res = map {$self->decode_object($_)} @{$children || []}; # removed in patch # End patch code return defined $class && $class ne 'SOAPStruct' ? bless($res => $class) : $res; } else {