X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/660c7e5312f7fae7766b731f7001e5e8197c6887..44ed4e99507c6de660029eabad6b3ccdc7ab5fd6:/SL/DB.pm diff --git a/SL/DB.pm b/SL/DB.pm index 40c8a9596..c678ed14f 100644 --- a/SL/DB.pm +++ b/SL/DB.pm @@ -6,11 +6,12 @@ use Carp; use Data::Dumper; use English qw(-no_match_vars); use Rose::DB; -use Rose::DBx::Cache::Anywhere; +use SL::DB::Helper::Cache; +use Scalar::Util qw(blessed); use base qw(Rose::DB); -__PACKAGE__->db_cache_class('Rose::DBx::Cache::Anywhere'); +__PACKAGE__->db_cache_class('SL::DB::Helper::Cache'); __PACKAGE__->use_private_registry; my (%_db_registered); @@ -131,14 +132,14 @@ sub with_transaction { my $rv = 1; local $@; - + my $return_array = wantarray; eval { - wantarray + $return_array ? $self->do_transaction(sub { @result = $code->(@args) }) : $self->do_transaction(sub { $result = $code->(@args) }); } or do { my $error = $self->error; - if (ref $error) { + if (blessed $error) { if ($error->isa('SL::X::DBError')) { # gobble the exception } else { @@ -149,7 +150,7 @@ sub with_transaction { } }; - return wantarray ? @result : $result; + return $return_array ? @result : $result; } 1;