--- 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 {