Skip to content
Snippets Groups Projects
Commit 1470a71a authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

Improve error messages, especially for ambiguous input values

parent 4d0a56bd
No related branches found
No related tags found
No related merge requests found
......@@ -49,13 +49,13 @@ sub handle_efa_exception {
if ( $e->isa('Travel::Routing::DE::EFA::Exception::Setup') ) {
if ( $e->message ) {
printf STDERR (
"Error: %s (option '%s'): %s\n",
"User error: %s (option '%s'): %s\n",
$e->description, $e->option, $e->message
);
}
else {
printf STDERR (
"Error: %s (option '%s', got '%s', want '%s')\n",
"User error: %s (option '%s', got '%s', want '%s')\n",
$e->description, $e->option, $e->have, $e->want
);
}
......@@ -63,27 +63,30 @@ sub handle_efa_exception {
exit 1;
}
if ( $e->isa('Travel::Routing::DE::EFA::Exception::Net') ) {
printf STDERR ( "Error: %s: %s\n", $e->description,
$e->http_response->as_string );
printf STDERR (
"Network error: %s: %s\n",
$e->description, $e->http_response->as_string
);
exit 2;
}
if ( $e->isa('Travel::Routing::DE::EFA::Exception::NoData') ) {
printf STDERR ( "Error: %s\n", $e->description );
printf STDERR ( "Backend rror: %s\n", $e->description );
exit 3;
}
if ( $e->isa('Travel::Routing::DE::EFA::Exception::Ambiguous') ) {
printf STDERR (
"Error: %s for key %s. Specify one of %s\n",
$e->description, $e->post_key, $e->possibilities
"Backend error: The %s '%s' is ambiguous. Try one of %s\n",
$e->post_key, $e->post_value,, $e->possibilities
);
exit 4;
}
if ( $e->isa('Travel::Routing::DE::EFA::Exception::Other') ) {
printf STDERR ( "Error: %s: %s\n", $e->description, $e->message );
printf STDERR ( "Backend error: %s: %s\n", $e->description,
$e->message );
exit 5;
}
printf STDERR ( "Uncaught exception: %s\n%s", ref($e), $e->trace );
printf STDERR ( "Unknown error: %s\n%s", ref($e), $e->trace );
exit 10;
}
......@@ -235,7 +238,7 @@ if ( $opt->{exclude} ) {
}
if ( $opt->{service} ) {
my $service = first { lc($_->{shortname}) eq lc($opt->{service}) }
my $service = first { lc( $_->{shortname} ) eq lc( $opt->{service} ) }
Travel::Routing::DE::EFA::get_efa_urls();
if ( not $service ) {
printf STDERR (
......
......@@ -31,7 +31,7 @@ use Exception::Class (
'Travel::Routing::DE::EFA::Exception::Ambiguous' => {
isa => 'Travel::Routing::DE::EFA::Exception',
description => 'ambiguous input',
fields => [ 'post_key', 'possibilities' ],
fields => [ 'post_key', 'post_value', 'possibilities' ],
},
'Travel::Routing::DE::EFA::Exception::Other' => {
isa => 'Travel::Routing::DE::EFA::Exception',
......@@ -687,8 +687,10 @@ sub check_ambiguous_xml {
my $xp_place = XML::LibXML::XPathExpression->new('./itdOdvPlace');
my $xp_name = XML::LibXML::XPathExpression->new('./itdOdvName');
my $xp_place_elem = XML::LibXML::XPathExpression->new('./odvPlaceElem');
my $xp_name_elem = XML::LibXML::XPathExpression->new('./odvNameElem');
my $xp_place_elem = XML::LibXML::XPathExpression->new('./odvPlaceElem');
my $xp_place_input = XML::LibXML::XPathExpression->new('./odvPlaceInput');
my $xp_name_elem = XML::LibXML::XPathExpression->new('./odvNameElem');
my $xp_name_input = XML::LibXML::XPathExpression->new('./odvNameInput');
my $e_place = ( $tree->findnodes($xp_place) )[0];
my $e_name = ( $tree->findnodes($xp_name) )[0];
......@@ -703,7 +705,11 @@ sub check_ambiguous_xml {
if ( $s_place eq 'list' ) {
Travel::Routing::DE::EFA::Exception::Ambiguous->throw(
post_key => 'place',
post_key => 'place',
post_value => decode(
'UTF-8',
( $e_place->findnodes($xp_place_input) )[0]->textContent
),
possibilities => join( q{ | },
map { decode( 'UTF-8', $_->textContent ) }
@{ $e_place->findnodes($xp_place_elem) } )
......@@ -711,7 +717,10 @@ sub check_ambiguous_xml {
}
if ( $s_name eq 'list' ) {
Travel::Routing::DE::EFA::Exception::Ambiguous->throw(
post_key => 'name',
post_key => 'name',
post_value => decode(
'UTF-8', ( $e_name->findnodes($xp_name_input) )[0]->textContent
),
possibilities => join( q{ | },
map { decode( 'UTF-8', $_->textContent ) }
@{ $e_name->findnodes($xp_name_elem) } )
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment