cvsuser 05/03/28 13:23:43
Modified: App-Repository/lib/App/SessionObject RepositoryObjectSet.pm
Log:
fix max_age to be per call
Revision Changes Path
1.3 +36 -13
p5ee/App-Repository/lib/App/SessionObject/RepositoryObjectSet.pm
Index: RepositoryObjectSet.pm
===================================================================
RCS file:
/cvs/public/p5ee/App-Repository/lib/App/SessionObject/RepositoryObjectSet.pm,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- RepositoryObjectSet.pm 28 Mar 2005 20:32:22 -0000 1.2
+++ RepositoryObjectSet.pm 28 Mar 2005 21:23:43 -0000 1.3
@@ -1,6 +1,6 @@
#############################################################################
-## $Id: RepositoryObjectSet.pm,v 1.2 2005/03/28 20:32:22 spadkins Exp $
+## $Id: RepositoryObjectSet.pm,v 1.3 2005/03/28 21:23:43 spadkins Exp $
#############################################################################
package App::SessionObject::RepositoryObjectSet;
@@ -53,13 +53,21 @@
delete $self->{index};
delete $self->{unique_index};
delete $self->{column_values};
+ delete $self->{max_age_time};
&App::sub_exit() if ($App::trace);
}
-sub set_max_age {
+sub _check_age {
&App::sub_entry if ($App::trace);
- my ($self, $max_age) = @_;
- $self->{max_age} = $max_age;
+ my ($self, $options) = @_;
+ if (defined $options->{max_age} && $self->{objects}) {
+ my $max_age = $options->{max_age};
+ my $max_age_time = $self->{max_age_time};
+ my $time = time();
+ if (defined $max_age_time && $max_age_time <= $time - $max_age) {
+ $self->_clear_cache();
+ }
+ }
&App::sub_exit() if ($App::trace);
}
@@ -103,14 +111,6 @@
sub _get_all_objects {
&App::sub_entry if ($App::trace);
my ($self) = @_;
- if (defined $self->{max_age}) {
- my $max_age = $self->{max_age};
- my $max_age_time = $self->{max_age_time};
- my $time = time();
- if (defined $max_age_time && $max_age_time <= $time - $max_age) {
- $self->_clear_cache();
- }
- }
my $objects = $self->{objects};
if (!$objects) {
my $context = $self->{context};
@@ -133,9 +133,13 @@
sub get_index {
&App::sub_entry if ($App::trace);
my $self = shift;
+ my $options = (ref($_[0]) eq "HASH") ? shift : {};
my $key_name = ref($_[0]) ? "ie1" : shift;
$key_name ||= "ie1";
my $key_columns = shift;
+
+ $self->_check_age($options) if (defined $options->{max_age} &&
$self->{objects});
+
my $index = $self->{index}{$key_name};
if (!$index) {
if ($self->{key}{$key_name}) {
@@ -166,10 +170,13 @@
sub get_unique_index {
&App::sub_entry if ($App::trace);
my $self = shift;
+ my $options = (ref($_[0]) eq "HASH") ? shift : {};
my $key_name = ref($_[0]) ? "ak1" : shift;
$key_name ||= "ak1";
my $key_columns = shift;
+ $self->_check_age($options) if (defined $options->{max_age} &&
$self->{objects});
+
my $unique_index = $self->{unique_index}{$key_name};
if (!$unique_index) {
if ($self->{key}{$key_name}) {
@@ -191,7 +198,10 @@
sub get_column_values {
&App::sub_entry if ($App::trace);
- my ($self, $column) = @_;
+ my ($self, $column, $options) = @_;
+
+ $self->_check_age($options) if (defined $options->{max_age} &&
$self->{objects});
+
my $values = $self->{column_values}{$column};
if (!$values) {
$values = [];
@@ -213,28 +223,41 @@
return($values);
}
+# $self->get_object($options, $key, $key_columns);
# $self->get_object($key, $key_columns);
# $self->get_object($key, $key_name, $key_columns);
# $self->get_object($key, $key_name);
sub get_object {
&App::sub_entry if ($App::trace);
my $self = shift;
+ my $options = (ref($_[0]) eq "HASH") ? shift : {};
my $key = shift;
my $key_name = ref($_[0]) ? "ak1" : shift;
my $key_columns = shift;
+
+ $self->_check_age($options) if (defined $options->{max_age} &&
$self->{objects});
+
my $unique_index = $self->get_unique_index($key_name, $key_columns);
my $object = $unique_index->{$key};
&App::sub_exit($object) if ($App::trace);
return($object);
}
+# $self->get_objects($key, $options, $key_name);
+# $self->get_objects($key, $key_columns);
+# $self->get_objects($key, $key_name, $key_columns);
+# $self->get_objects($key, $key_name);
sub get_objects {
&App::sub_entry if ($App::trace);
my $self = shift;
+ my $options = (ref($_[0]) eq "HASH") ? shift : {};
my $key = shift;
die "key not scalar" if (ref($key));
my $key_name = ref($_[0]) ? "ie1" : shift;
my $key_columns = shift;
+
+ $self->_check_age($options) if (defined $options->{max_age} &&
$self->{objects});
+
my ($objects);
if ($key) {
$key_name ||= "ie1";