Mercurial > pub > Impl
comparison Lib/IMPL/Serialization.pm @ 115:5edc2ac5231c
minor fix to the serialization mechanism
| author | wizard |
|---|---|
| date | Wed, 26 May 2010 02:32:22 +0400 |
| parents | b0c068da93ac |
| children | fb896377389f |
comparison
equal
deleted
inserted
replaced
| 114:7084af955c57 | 115:5edc2ac5231c |
|---|---|
| 176 private _direct property ObjectFactory => prop_all; | 176 private _direct property ObjectFactory => prop_all; |
| 177 | 177 |
| 178 # ������� �������������������� �������. | 178 # ������� �������������������� �������. |
| 179 # SurogateHelper($Type) | 179 # SurogateHelper($Type) |
| 180 # $Type ��� �����, ��� ������� ����� �������. | 180 # $Type ��� �����, ��� ������� ����� �������. |
| 181 private _direct property SurogateHelper => prop_all; | 181 private _direct property SurrogateHelper => prop_all; |
| 182 } | 182 } |
| 183 | 183 |
| 184 sub CTOR { | 184 sub CTOR { |
| 185 my ($this,%args) = @_; | 185 my ($this,%args) = @_; |
| 186 $this->{$CurrentObject} = undef; | 186 $this->{$CurrentObject} = undef; |
| 187 $this->{$Root} = undef; | 187 $this->{$Root} = undef; |
| 188 $this->{$ObjectFactory} = $args{ObjectFactory} if $args{ObjectFactory}; | |
| 189 $this->{$SurrogateHelper} = $args{SurrogateHelper} if $args{SurrogateHelper}; | |
| 188 } | 190 } |
| 189 | 191 |
| 190 sub OnObjectBegin { | 192 sub OnObjectBegin { |
| 191 my ($this,$name,$rhProps) = @_; | 193 my ($this,$name,$rhProps) = @_; |
| 192 | 194 |
| 221 refId => $rhProps->{'refid'} | 223 refId => $rhProps->{'refid'} |
| 222 }; | 224 }; |
| 223 | 225 |
| 224 if (defined $rhProps->{'id'}) { | 226 if (defined $rhProps->{'id'}) { |
| 225 die new IMPL::Exception("Trying to create a simple object instead of a reference, type is missing.",$name,$rhProps->{id}) unless $rhProps->{'type'} ; | 227 die new IMPL::Exception("Trying to create a simple object instead of a reference, type is missing.",$name,$rhProps->{id}) unless $rhProps->{'type'} ; |
| 226 $this->{$Context}->{$rhProps->{'id'}} = $this->{$SurogateHelper} ? $this->{$SurogateHelper}->($rhProps->{'type'}) : DefaultSurogateHelper($rhProps->{'type'}); | 228 $this->{$Context}->{$rhProps->{'id'}} = $this->{$SurrogateHelper} ? $this->{$SurrogateHelper}->($rhProps->{'type'}) : DefaultSurrogateHelper($rhProps->{'type'}); |
| 227 } | 229 } |
| 228 } | 230 } |
| 229 | 231 |
| 230 return 1; | 232 return 1; |
| 231 } | 233 } |
| 298 sub _is_class { | 300 sub _is_class { |
| 299 no strict 'refs'; | 301 no strict 'refs'; |
| 300 scalar keys %{"$_[0]::"} ? 1 : 0; | 302 scalar keys %{"$_[0]::"} ? 1 : 0; |
| 301 } | 303 } |
| 302 | 304 |
| 303 sub DefaultSurogateHelper { | 305 sub DefaultSurrogateHelper { |
| 304 my ($Type) = @_; | 306 my ($Type) = @_; |
| 305 | 307 |
| 306 if ($Type eq 'SCALAR' or $Type eq 'REF') { | 308 if ($Type eq 'SCALAR' or $Type eq 'REF') { |
| 307 my $var; | 309 my $var; |
| 308 return \$var; | 310 return \$var; |
