[Jifty-commit] r5878 - in Jifty-DBI/trunk: lib/Jifty/DBI
Jifty commits
jifty-commit at lists.jifty.org
Fri Sep 19 19:21:54 EDT 2008
Author: ruz
Date: Fri Sep 19 19:21:53 2008
New Revision: 5878
Modified:
Jifty-DBI/trunk/ (props changed)
Jifty-DBI/trunk/lib/Jifty/DBI/Record.pm
Log:
r5898 at cubic-pc: cubic | 2008-09-20 02:48:16 +0400
* cache load attempts in local static cache
* move all code related inside a block
Modified: Jifty-DBI/trunk/lib/Jifty/DBI/Record.pm
==============================================================================
--- Jifty-DBI/trunk/lib/Jifty/DBI/Record.pm (original)
+++ Jifty-DBI/trunk/lib/Jifty/DBI/Record.pm Fri Sep 19 19:21:53 2008
@@ -1555,6 +1555,7 @@
return (shift)->_apply_filters( direction => 'output', @_ );
}
+{ my %cache = ();
sub _apply_filters {
my $self = shift;
my %args = (
@@ -1567,14 +1568,20 @@
my @filters = $self->_filters(%args);
my $action = $args{'direction'} eq 'output' ? 'decode' : 'encode';
foreach my $filter_class (@filters) {
- local $UNIVERSAL::require::ERROR;
- $filter_class->require()
- unless $INC{ join( '/', split( /::/, $filter_class ) ) . ".pm" };
-
- if ($UNIVERSAL::require::ERROR) {
- warn $UNIVERSAL::require::ERROR;
+ unless ( exists $cache{ $filter_class } ) {
+ local $UNIVERSAL::require::ERROR;
+ $filter_class->require;
+ if ($UNIVERSAL::require::ERROR) {
+ warn $UNIVERSAL::require::ERROR;
+ $cache{ $filter_class } = 0;
+ next;
+ }
+ $cache{ $filter_class } = 1;
+ }
+ elsif ( !$cache{ $filter_class } ) {
next;
}
+
my $filter = $filter_class->new(
record => $self,
column => $args{'column'},
@@ -1585,7 +1592,7 @@
# XXX TODO error proof this
$filter->$action();
}
-}
+} }
=head2 is_distinct COLUMN_NAME, VALUE
More information about the Jifty-commit
mailing list