annotate Lib/IMPL/Object/PublicSerializable.pm @ 134:44977efed303

Significant performance optimizations Fixed recursion problems due converting objects to JSON Added cache support for the templates Added discovery feature for the web methods
author wizard
date Mon, 21 Jun 2010 02:39:53 +0400
parents 8d0ae27d15c1
children d1676be8afcc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
60
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
1 package IMPL::Object::PublicSerializable;
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
2 use strict;
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
3
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
4 use IMPL::Class::Member;
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
5
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
6 sub restore {
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
7 my ($class,$data,$refSurrogate) = @_;
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
8
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
9 if ($refSurrogate) {
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
10 $refSurrogate->callCTOR(@$data);
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
11 return $refSurrogate;
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
12 } else {
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
13 return $class->new(@$data);
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
14 }
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
15 }
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
16
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
17 sub save {
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
18 my ($this,$ctx) = @_;
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
19
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
20 my %seen;
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
21
61
8d0ae27d15c1 minor changes
wizard
parents: 60
diff changeset
22 my $val;
8d0ae27d15c1 minor changes
wizard
parents: 60
diff changeset
23
8d0ae27d15c1 minor changes
wizard
parents: 60
diff changeset
24 defined($val = $this->$_()) and $ctx->AddVar($_,$val) foreach
60
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
25 map $_->Name,$this->get_meta(
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
26 'IMPL::Class::PropertyInfo',
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
27 sub {
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
28 $_->Access == IMPL::Class::Member::MOD_PUBLIC and
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
29 $_->canGet and
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
30 not $_->ownerSet and
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
31 not $seen{$_->Name} ++
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
32 },
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
33 1
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
34 );
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
35 }
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
36
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents:
diff changeset
37 1;