From 7615088320ac1987ee7eaeeef6c81e68f3c549c0 Mon Sep 17 00:00:00 2001
From: Daniel Friesel <derf@finalrewind.org>
Date: Tue, 28 Jun 2011 19:45:13 +0200
Subject: [PATCH] VRR.pm: Add Travel::Routing::DE::VRR::Exception base class

---
 bin/efa                      |  5 +++--
 lib/Travel/Routing/DE/VRR.pm | 19 +++++++++++++++----
 2 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/bin/efa b/bin/efa
index b11018b..c916ca0 100755
--- a/bin/efa
+++ b/bin/efa
@@ -72,8 +72,9 @@ sub check_for_error {
 	my ($eval_error) = @_;
 
 	if ( not defined $efa ) {
-		if ( $eval_error
-			and ref($eval_error) =~ m{^Travel::Routing::DE::VRR::Exception}x )
+		if (    $eval_error
+			and ref($eval_error)
+			and $eval_error->isa('Travel::Routing::DE::VRR::Exception') )
 		{
 			handle_efa_exception($eval_error);
 		}
diff --git a/lib/Travel/Routing/DE/VRR.pm b/lib/Travel/Routing/DE/VRR.pm
index 62d6a3e..d486a6e 100644
--- a/lib/Travel/Routing/DE/VRR.pm
+++ b/lib/Travel/Routing/DE/VRR.pm
@@ -9,22 +9,30 @@ use LWP::UserAgent;
 use XML::LibXML;
 
 use Exception::Class (
+	'Travel::Routing::DE::VRR::Exception',
 	'Travel::Routing::DE::VRR::Exception::Setup' => {
+		isa         => 'Travel::Routing::DE::VRR::Exception',
 		description => 'invalid argument on setup',
 		fields      => [ 'option', 'have', 'want' ],
 	},
 	'Travel::Routing::DE::VRR::Exception::Net' => {
+		isa         => 'Travel::Routing::DE::VRR::Exception',
 		description => 'could not submit POST request',
 		fields      => 'http_response',
 	},
-	'Travel::Routing::DE::VRR::Exception::NoData' =>
-	  { description => 'got no data to parse', },
+	'Travel::Routing::DE::VRR::Exception::NoData' => {
+		isa         => 'Travel::Routing::DE::VRR::Exception',
+		description => 'got no data to parse',
+	},
 	'Travel::Routing::DE::VRR::Exception::Ambiguous' => {
+		isa         => 'Travel::Routing::DE::VRR::Exception',
 		description => 'ambiguous input',
 		fields      => [ 'post_key', 'possibilities' ],
 	},
-	'Travel::Routing::DE::VRR::Exception::NoConnections' =>
-	  { description => 'got no connections', },
+	'Travel::Routing::DE::VRR::Exception::NoConnections' => {
+		isa         => 'Travel::Routing::DE::VRR::Exception',
+		description => 'got no connections',
+	},
 );
 
 our $VERSION = '1.3';
@@ -759,6 +767,9 @@ The following methods act like the arguments to B<new>. See there.
 
 =head1 DIAGNOSTICS
 
+When encountering an error, Travel::Routing::DE::VRR returns a
+Travel::Routing::DE::VRR::Exception object.
+
 Dies with a backtrace when anything goes wrong.
 
 =head1 DEPENDENCIES
-- 
GitLab