annotate Lib/IMPL/Config/Link.pm @ 58:a35b60b16a99

Configuration, late activation
author wizard
date Fri, 05 Mar 2010 20:14:45 +0300
parents
children 0f3e369553bd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
58
a35b60b16a99 Configuration, late activation
wizard
parents:
diff changeset
1 package IMPL::Config::Link;
a35b60b16a99 Configuration, late activation
wizard
parents:
diff changeset
2
a35b60b16a99 Configuration, late activation
wizard
parents:
diff changeset
3 use strict;
a35b60b16a99 Configuration, late activation
wizard
parents:
diff changeset
4
a35b60b16a99 Configuration, late activation
wizard
parents:
diff changeset
5 require IMPL::Exception;
a35b60b16a99 Configuration, late activation
wizard
parents:
diff changeset
6
a35b60b16a99 Configuration, late activation
wizard
parents:
diff changeset
7 require Tie::Scalar;
a35b60b16a99 Configuration, late activation
wizard
parents:
diff changeset
8 our @ISA = qw(Tie::StdScalar);
a35b60b16a99 Configuration, late activation
wizard
parents:
diff changeset
9
a35b60b16a99 Configuration, late activation
wizard
parents:
diff changeset
10 sub FETCH {
a35b60b16a99 Configuration, late activation
wizard
parents:
diff changeset
11 return ${$_[0]} = ${$_[0]}->instance() if UNIVERSAL::isa(${$_[0]},'IMPL::Config::Activator');
a35b60b16a99 Configuration, late activation
wizard
parents:
diff changeset
12 }
a35b60b16a99 Configuration, late activation
wizard
parents:
diff changeset
13
a35b60b16a99 Configuration, late activation
wizard
parents:
diff changeset
14 sub restore {
a35b60b16a99 Configuration, late activation
wizard
parents:
diff changeset
15 my ($self,$data,$surrogate) = @_;
a35b60b16a99 Configuration, late activation
wizard
parents:
diff changeset
16
a35b60b16a99 Configuration, late activation
wizard
parents:
diff changeset
17 my %args = @$data;
a35b60b16a99 Configuration, late activation
wizard
parents:
diff changeset
18
a35b60b16a99 Configuration, late activation
wizard
parents:
diff changeset
19 die new IMPL::Exception('A target is required for the link') unless exists $args{target};
a35b60b16a99 Configuration, late activation
wizard
parents:
diff changeset
20
a35b60b16a99 Configuration, late activation
wizard
parents:
diff changeset
21 return $self->new($args{target});
a35b60b16a99 Configuration, late activation
wizard
parents:
diff changeset
22 }