Author: spadkins
Date: Mon Nov 20 12:42:48 2006
New Revision: 8092
Modified:
p5ee/trunk/App-Repository/lib/App/SessionObject/RepositoryObjectDomain.pm
p5ee/trunk/App-Repository/lib/App/SessionObject/RepositoryObjectSet.pm
Log:
fix usage of set_params()/update_params()
Modified: p5ee/trunk/App-Repository/lib/App/SessionObject/RepositoryObjectDomain.pm
==============================================================================
--- p5ee/trunk/App-Repository/lib/App/SessionObject/RepositoryObjectDomain.pm (original)
+++ p5ee/trunk/App-Repository/lib/App/SessionObject/RepositoryObjectDomain.pm Mon Nov 20 12:42:48 2006
@@ -48,11 +48,11 @@
@tables = ($table);
}
else {
- my $object_set = $self->{table};
- if (ref($object_set) eq "HASH") {
- foreach my $table (keys %$object_set) {
- if ($object_set->{$table}{gotten}) {
- delete $object_set->{$table}{gotten};
+ my $object_set_def = $self->{table};
+ if (ref($object_set_def) eq "HASH") {
+ foreach my $table (keys %$object_set_def) {
+ if ($object_set_def->{$table}{gotten}) {
+ delete $object_set_def->{$table}{gotten};
push(@tables, $table);
}
}
@@ -82,20 +82,27 @@
my $context = $self->{context};
my $domain_params = $self->{params} || {};
+ # The $tabledef allows for non-default behavior when getting an object-set from
+ # an object-domain. It can be set up in the "app.pl" configuration file.
my $tabledef = $self->{table}{$table};
if (!$tabledef) {
$tabledef = {};
$self->{table}{$table} = $tabledef;
}
+ # object-sets can be named something other than the default name.
my $object_set_name = $tabledef->{name} || "$self->{name}-$table";
+
+ # object-sets can have special arguments passed to them on initial construction
my $new_args = $tabledef->{new_args} || {};
if (!$new_args->{class}) {
$new_args->{class} = "App::SessionObject::RepositoryObjectSet";
}
+ # object-sets can refer to physical tables which are different from the object-set name.
if (!$new_args->{table}) {
$new_args->{table} = $tabledef->{table} || $table;
}
+ # object-sets can have a select set of parameters (i.e. a subset of all known to the object-domain)
if (!$new_args->{params}) {
my $new_params = $tabledef->{params} || $domain_params || {};
$new_args->{params} = { %$new_params };
@@ -114,7 +121,7 @@
$object_set->update_params(\%object_set_param_values);
}
else {
- $object_set->update_params($domain_params);
+ $object_set->set_params($domain_params);
}
&App::sub_exit($object_set) if ($App::trace);
return($object_set);
Modified: p5ee/trunk/App-Repository/lib/App/SessionObject/RepositoryObjectSet.pm
==============================================================================
--- p5ee/trunk/App-Repository/lib/App/SessionObject/RepositoryObjectSet.pm (original)
+++ p5ee/trunk/App-Repository/lib/App/SessionObject/RepositoryObjectSet.pm Mon Nov 20 12:42:48 2006
@@ -150,8 +150,34 @@
&App::sub_entry if ($App::trace);
my ($self, $params) = @_;
$params ||= {};
- $self->{params} = { %$params };
- $self->_clear_cache();
+ my $redefined = 0;
+ my $self_params = $self->{params};
+ if (!$self_params) {
+ $redefined = 1;
+ }
+ else {
+ my (%param_already_defined, $key);
+ foreach $key (keys %$self_params) {
+ $param_already_defined{$key} = 1;
+ if ((! exists $params->{$key}) ||
+ (! defined $params->{$key} && defined $self_params->{$key}) ||
+ (defined $params->{$key} && ! defined $self_params->{$key}) ||
+ (defined $params->{$key} && defined $self_params->{$key} && $params->{$key} ne $self_params->{$key})) {
+ $redefined = 1;
+ }
+ }
+ if (!$redefined) {
+ foreach $key (keys %$params) {
+ if (! exists $self_params->{$key}) {
+ $redefined = 1;
+ }
+ }
+ }
+ }
+ if ($redefined) {
+ $self->{params} = { %$params };
+ $self->_clear_cache();
+ }
&App::sub_exit() if ($App::trace);
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.