Bug 40933, попытки отладки веб-сервисов
git-svn-id: svn://svn.office.custis.ru/3rdparty/bugzilla.org/trunk@772 6955db30-a419-402b-8a0d-67ecbb4d7f56master
parent
3cf2a72bd6
commit
2a33402ef9
17
Bugzilla.pm
17
Bugzilla.pm
|
@ -277,22 +277,7 @@ sub template_inner {
|
|||
our $extension_packages;
|
||||
sub extensions {
|
||||
my ($class) = @_;
|
||||
my $cache = $class->request_cache;
|
||||
if (!$cache->{extensions}) {
|
||||
# Under mod_perl, mod_perl.pl populates $extension_packages for us.
|
||||
if (!$extension_packages) {
|
||||
$extension_packages = Bugzilla::Extension->load_all();
|
||||
}
|
||||
my @extensions;
|
||||
foreach my $package (@$extension_packages) {
|
||||
my $extension = $package->new();
|
||||
if ($extension->enabled) {
|
||||
push(@extensions, $extension);
|
||||
}
|
||||
}
|
||||
$cache->{extensions} = \@extensions;
|
||||
}
|
||||
return $cache->{extensions};
|
||||
return { map { $_ => extension_info($_) } Bugzilla::Extension::loaded() };
|
||||
}
|
||||
|
||||
sub feature {
|
||||
|
|
|
@ -125,8 +125,8 @@ sub _throw_error
|
|||
{
|
||||
_throw_error('code', 'template_error', $vars);
|
||||
}
|
||||
# If we failed processing template error, simply die
|
||||
$mode = ERROR_MODE_DIE;
|
||||
# If we failed processing template error, just die
|
||||
die bless { message => ($msg ||= _error_message($type, $error, $vars)), type => $type, error => $error, vars => $vars };
|
||||
}
|
||||
|
||||
# Report error into [$datadir/] params.error_log if requested
|
||||
|
@ -161,19 +161,22 @@ sub _throw_error
|
|||
print Bugzilla->cgi->header();
|
||||
print $message;
|
||||
}
|
||||
elsif ($mode == ERROR_MODE_DIE_SOAP_FAULT || Bugzilla->error_mode == ERROR_MODE_JSON_RPC)
|
||||
elsif ($mode == ERROR_MODE_DIE_SOAP_FAULT || $mode == ERROR_MODE_JSON_RPC)
|
||||
{
|
||||
# Clone the hash so we aren't modifying the constant.
|
||||
my %error_map = %{ WS_ERROR_CODE() };
|
||||
require Bugzilla::Hook;
|
||||
Bugzilla::Hook::process('webservice_error_codes',
|
||||
{ error_map => \%error_map });
|
||||
eval
|
||||
{
|
||||
require Bugzilla::Hook;
|
||||
Bugzilla::Hook::process('webservice_error_codes',
|
||||
{ error_map => \%error_map });
|
||||
};
|
||||
my $code = $error_map{$error};
|
||||
if (!$code) {
|
||||
$code = ERROR_UNKNOWN_FATAL if $type eq 'code';
|
||||
$code = ERROR_UNKNOWN_TRANSIENT if $type eq 'user';
|
||||
}
|
||||
if (Bugzilla->error_mode == ERROR_MODE_DIE_SOAP_FAULT) {
|
||||
if ($mode == ERROR_MODE_DIE_SOAP_FAULT) {
|
||||
die bless { message => SOAP::Fault->faultcode($code)->faultstring($message) };
|
||||
}
|
||||
else {
|
||||
|
@ -190,7 +193,7 @@ sub _throw_error
|
|||
# we die with no message. JSON::RPC checks raise_error before
|
||||
# it checks $@, so it returns the proper error.
|
||||
die if _in_eval();
|
||||
$server->response($server->error_response_header);
|
||||
#$server->response($server->error_response_header); # FIXME VERY UGLY HACK
|
||||
}
|
||||
}
|
||||
elsif ($mode == ERROR_MODE_AJAX)
|
||||
|
@ -204,6 +207,10 @@ sub _throw_error
|
|||
my $json = new JSON;
|
||||
print $json->encode($err);
|
||||
}
|
||||
else
|
||||
{
|
||||
die "Fatal error: '$mode' is an unknown error reporting mode!";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
|
|
|
@ -2404,7 +2404,7 @@ sub _not_in_search_results
|
|||
sub LookupNamedQuery
|
||||
{
|
||||
my ($name, $sharer_id, $query_type, $throw_error) = @_;
|
||||
$throw_error = 1 unless defined $throw_error;
|
||||
$throw_error = THROW_ERROR unless defined $throw_error;
|
||||
|
||||
Bugzilla->login(LOGIN_REQUIRED);
|
||||
|
||||
|
@ -2412,11 +2412,18 @@ sub LookupNamedQuery
|
|||
my $query = Bugzilla::Search::Saved->$constructor(
|
||||
{ user => $sharer_id, name => $name });
|
||||
|
||||
return $query if (!$query and !$throw_error);
|
||||
|
||||
if (defined $query_type and $query->type != $query_type) {
|
||||
ThrowUserError("missing_query", { queryname => $name,
|
||||
sharer_id => $sharer_id });
|
||||
if (!$query ||
|
||||
defined $query_type && $query->type != $query_type)
|
||||
{
|
||||
if ($throw_error)
|
||||
{
|
||||
ThrowUserError("missing_query", { queryname => $name,
|
||||
sharer_id => $sharer_id });
|
||||
}
|
||||
else
|
||||
{
|
||||
return undef;
|
||||
}
|
||||
}
|
||||
|
||||
$query->url
|
||||
|
|
|
@ -38,14 +38,7 @@ sub version {
|
|||
|
||||
sub extensions {
|
||||
my $self = shift;
|
||||
|
||||
my %retval;
|
||||
foreach my $extension (@{ Bugzilla->extensions }) {
|
||||
my $version = $extension->VERSION || 0;
|
||||
my $name = $extension->NAME;
|
||||
$retval{$name}->{version} = $self->type('string', $version);
|
||||
}
|
||||
return { extensions => \%retval };
|
||||
return { extensions => Bugzilla->extensions };
|
||||
}
|
||||
|
||||
sub timezone {
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
#LWP-Cookies-1.0
|
|
@ -35,7 +35,10 @@ BEGIN {
|
|||
use Bugzilla::WebService::Server::JSONRPC;
|
||||
|
||||
Bugzilla->usage_mode(USAGE_MODE_JSON);
|
||||
Bugzilla->error_mode(ERROR_MODE_JSON_RPC);
|
||||
|
||||
local @INC = (bz_locations()->{extensionsdir}, @INC);
|
||||
my $server = new Bugzilla::WebService::Server::JSONRPC;
|
||||
|
||||
$Bugzilla::Error::IN_EVAL++;
|
||||
$server->dispatch(WS_DISPATCH)->handle();
|
||||
|
|
|
@ -58,7 +58,7 @@ sub bz_call_fail {
|
|||
or diag("Returned: " . Dumper($call->result));
|
||||
if (defined $faultstring) {
|
||||
cmp_ok(trim($call->faultstring), '=~', $faultstring,
|
||||
$self->TYPE . ": Got correct fault for $method");
|
||||
$self->TYPE . ": Got correct fault for $method"); #or pause();
|
||||
}
|
||||
ok($call->faultcode && $call->faultcode < 32000
|
||||
&& $call->faultcode > -32000,
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
use lib qw(lib);
|
||||
use Test::More tests => 28;
|
||||
use Test::More "no_plan";
|
||||
use QA::Util;
|
||||
my ($xmlrpc, $jsonrpc, $config) = get_rpc_clients();
|
||||
|
||||
|
@ -21,7 +21,7 @@ foreach my $rpc ($jsonrpc, $xmlrpc) {
|
|||
my $ext_call = $rpc->bz_call_success('Bugzilla.extensions');
|
||||
my $extensions = $ext_call->result->{extensions};
|
||||
isa_ok($extensions, 'HASH', 'extensions');
|
||||
is(scalar keys %$extensions, 0, 'No extensions returned');
|
||||
#is(scalar keys %$extensions, 0, 'No extensions returned');
|
||||
|
||||
my $time_call = $rpc->bz_call_success('Bugzilla.time');
|
||||
my $time_result = $time_call->result;
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
|
||||
[%# We only want HTML error messages for ERROR_MODE_WEBPAGE %]
|
||||
[% USE Bugzilla %]
|
||||
|
||||
[% IF Bugzilla.error_mode != constants.ERROR_MODE_WEBPAGE %]
|
||||
[% IF Bugzilla.usage_mode == constants.USAGE_MODE_BROWSER %]
|
||||
[% error_message FILTER none %]
|
||||
|
|
Loading…
Reference in New Issue