Author: spadkins
Date: Sat Mar  4 21:11:10 2006
New Revision: 3602

Modified:
   p5ee/trunk/App-Context/lib/App/Context.pm

Log:
minor fixes to so_get()/so_set()

Modified: p5ee/trunk/App-Context/lib/App/Context.pm
==============================================================================
--- p5ee/trunk/App-Context/lib/App/Context.pm   (original)
+++ p5ee/trunk/App-Context/lib/App/Context.pm   Sat Mar  4 21:11:10 2006
@@ -871,7 +871,10 @@
             $value = $default;
             if ($setdefault) {
                 $self->{session}{store}{SessionObject}{$name}{$var} = $value;
-                $self->session_object($name) if (!defined 
$self->{session}{cache}{SessionObject}{$name});
+                my $cached_service = 
$self->{session}{cache}{SessionObject}{$name};
+                if (!defined $cached_service || ref($cached_service) eq 
"HASH") {
+                    $self->session_object($name);
+                }
                 $self->{session}{cache}{SessionObject}{$name}{$var} = $value;
             }
         }
@@ -979,16 +982,16 @@
         elsif ($var =~ /^\{([^\}]+)\}$/) {  # a simple "{foo-bar}"
             $var = $1;
             $self->{session}{store}{SessionObject}{$name}{$var} = $value;
-            $self->{session}{cache}{SessionObject}{$name}{$var} = $value
-                if (defined $self->{session}{cache}{SessionObject}{$name});
+            $self->{session}{cache}{SessionObject}{$name}{$var} = $value;
+                # ... we used to only set the cache attribute when the
+                # object was already in the cache.
+                # if (defined $self->{session}{cache}{SessionObject}{$name});
             $retval = 1;
         }
         elsif ($var =~ /^\{/) {  # { i.e. "{columnSelected}{first_name}"
     
             $var =~ s/\{([^\}]+)\}/\{"$1"\}/g;  # put quotes around hash keys
     
-            #$self->session_object($name) if (!defined 
$self->{session}{cache}{SessionObject}{$name});
-    
             $perl  = "\$self->{session}{store}{SessionObject}{\$name}$var = 
\$value;";
             $perl .= "\$self->{session}{cache}{SessionObject}{\$name}$var = 
\$value;"
                 if (defined $self->{session}{cache}{SessionObject}{$name});

Reply via email to