X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage.pm;h=dfff9a1a499e4776c328aa318da4bd9471794b01;hb=7474ed3b192693baa28d2f52de502f0ec3e8ac4e;hp=d949b01e428c06969605405909e242d3ac0d0686;hpb=e50536940adf2ebaef907a0c29ae37fbd5ce95b1;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage.pm b/lib/DBIx/Class/Storage.pm index d949b01..dfff9a1 100644 --- a/lib/DBIx/Class/Storage.pm +++ b/lib/DBIx/Class/Storage.pm @@ -6,18 +6,17 @@ use warnings; use base qw/DBIx::Class/; use mro 'c3'; -{ - package # Hide from PAUSE - DBIx::Class::Storage::NESTED_ROLLBACK_EXCEPTION; - use base 'DBIx::Class::Exception'; +BEGIN { + no warnings 'once'; + @DBIx::Class::Storage::NESTED_ROLLBACK_EXCEPTION::ISA + = 'DBIx::Class::Exception'; } use DBIx::Class::Carp; use DBIx::Class::Storage::BlockRunner; use Scalar::Util qw/blessed weaken/; use DBIx::Class::Storage::TxnScopeGuard; -use DBIx::Class::_Util qw( dbic_internal_try fail_on_internal_call ); -use Try::Tiny; +use DBIx::Class::_Util qw( dbic_internal_try dbic_internal_catch fail_on_internal_call ); use namespace::clean; __PACKAGE__->mk_group_accessors(simple => qw/debug schema transaction_depth auto_savepoint savepoints/); @@ -25,7 +24,7 @@ __PACKAGE__->mk_group_accessors(component_class => 'cursor_class'); __PACKAGE__->cursor_class('DBIx::Class::Cursor'); -sub cursor { +sub cursor :DBIC_method_is_indirect_sugar { DBIx::Class::_ENV_::ASSERT_NO_INTERNAL_INDIRECT_CALLS and fail_on_internal_call; shift->cursor_class(@_); } @@ -152,7 +151,7 @@ For example, my $rs; try { $rs = $schema->txn_do($coderef); - } catch { + } dbic_internal_catch { my $error = shift; # Transaction failed die "something terrible has happened!" @@ -320,7 +319,7 @@ sub __delicate_rollback { dbic_internal_try { $self->txn_rollback; 1 } - catch { + dbic_internal_catch { $rbe = $_; @@ -590,7 +589,7 @@ sub debugobj { my $cfg = dbic_internal_try { Config::Any->load_files({ files => [$profile], use_ext => 1 }); - } catch { + } dbic_internal_catch { # sanitize the error message a bit $_ =~ s/at \s+ .+ Storage\.pm \s line \s \d+ $//x; $self->throw_exception("Failure processing \$ENV{DBIC_TRACE_PROFILE}: $_"); @@ -616,7 +615,7 @@ sub debugobj { # a better fix. This is another yak to shave... :( dbic_internal_try { DBIx::Class::Storage::Debug::PrettyPrint->new(@pp_args); - } catch { + } dbic_internal_catch { $self->throw_exception($_); } }