Subject: | sloppy_integers option not being honored |
I'm passing the sloppy_integers option when creating the READER and WRITER coderefs, but
I'm still seeing Math::BigInt when dumping the parsed WRITER output in my client.
Specifically, this is occurring in Catalyst::Controller::SOAP. The code looks like:
my $reader_opts = {sloppy_integers => 1};
my $writer_opts = {sloppy_integers => 1};
...
my $input_parts = $self->wsdlobj->find(message => $portop->{input}{message})->{part};
for (@{$input_parts}) {
my $type = $_->{type} ? $_->{type} : $_->{element};
$c->log->debug("SOAP: @{[$operation->name]} input part $_->{name}, type $type");
$_->{compiled_reader} = $self->wsdlobj->schemas->compile
(READER => $type, %$reader_opts);
};
...
my $output_parts = $self->wsdlobj->find(message => $portop->{output}{message})-
Show quoted text
>{part};
for (@{$output_parts}) {
my $type = $_->{type} ? $_->{type} : $_->{element};
$c->log->debug("SOAP: @{[$operation->name]} out part $_->{name}, type $type");
$_->{compiled_writer} = $self->wsdlobj->schemas->compile
(WRITER => $_->{type} ? $_->{type} : $_->{element},
elements_qualified => 'ALL', %$writer_opts);
}
I don't have a good test case yet, because my schema is very large and complicated. I'll try to
winnow down a test case. But somewhere along the line I'm losing the flag. I did enough
digging to find that Schema::compile() us called several times, but I can't track down where
the sloppy flag is being lost/ignored yet.