From fa414217e1f3fdd4313f7afa3e5db7b8d92da436 Mon Sep 17 00:00:00 2001 From: "dkl%redhat.com" <> Date: Thu, 5 Feb 2009 22:32:32 +0000 Subject: Bug 458853 - Add a "permissive" argument that allows Bug.get to return even if there are errors Patch by Noura Nelhawary - r=dkl/mkanat a=mkanat --- Bugzilla/WebService/Bug.pm | 69 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 63 insertions(+), 6 deletions(-) (limited to 'Bugzilla') diff --git a/Bugzilla/WebService/Bug.pm b/Bugzilla/WebService/Bug.pm index 5b1f6b6e0..09d88f8ae 100755 --- a/Bugzilla/WebService/Bug.pm +++ b/Bugzilla/WebService/Bug.pm @@ -151,13 +151,29 @@ sub get { my $ids = $params->{ids}; defined $ids || ThrowCodeError('param_required', { param => 'ids' }); - my @return; + my @bugs; + my @faults; foreach my $bug_id (@$ids) { - my $bug = Bugzilla::Bug->check($bug_id); - push(@return, $self->_bug_to_hash($bug)) + my $bug; + if ($params->{permissive}) { + eval { $bug = Bugzilla::Bug->check($bug_id); }; + if ($@) { + push(@faults, {id => $bug_id, + faultString => $@->faultstring, + faultCode => $@->faultcode, + } + ); + undef $@; + next; + } + } + else { + $bug = Bugzilla::Bug->check($bug_id); + } + push(@bugs, $self->_bug_to_hash($bug)); } - return { bugs => \@return }; + return { bugs => \@bugs, faults => \@faults }; } # this is a function that gets bug activity for list of bug ids @@ -687,12 +703,26 @@ Note that it's possible for aliases to be disabled in Bugzilla, in which case you will be told that you have specified an invalid bug_id if you try to specify an alias. (It will be error 100.) +=item C B + +C Normally, if you request any inaccessible or invalid bug ids, +Bug.get will throw an error. If this parameter is True, instead of throwing an +error we return an array of hashes with a C, C and C +for each bug that fails, and return normal information for the other bugs that +were accessible. + =back =item B -A hash containing a single element, C. This is an array of hashes. -Each hash contains the following items: +Two items are returned: + +=over + +=item C + +An array of hashes that contains information about the bugs with +the valid ids. Each hash contains the following items: =over @@ -762,6 +792,33 @@ C The summary of this bug. =back +=item C B + +An array of hashes that contains invalid bug ids with error messages +returned for them. Each hash contains the following items: + +=over + +=item id + +C The numeric bug_id of this bug. + +=item faultString + +c This will only be returned for invalid bugs if the C +argument was set when calling Bug.get, and it is an error indicating that +the bug id was invalid. + +=item faultCode + +c This will only be returned for invalid bugs if the C +argument was set when calling Bug.get, and it is the error code for the +invalid bug error. + +=back + +=back + =item B =over -- cgit v1.2.3-24-g4f1b