Basset
view release on metacpan or search on metacpan
lib/Basset/NotificationCenter.pm view on Meta::CPAN
You will B<need> to put a types entry into your conf file for
notificationcenter=Basset::NotificationCenter
(or whatever center you're using)
=cut
$VERSION = '1.02';
use Scalar::Util qw(weaken isweak);
use Basset::Object;
our @ISA = Basset::Object->pkg_for_type('object');
use strict;
use warnings;
=pod
=head1 ATTRIBUTES
lib/Basset/NotificationCenter.pm view on Meta::CPAN
$init{'object'} ||= 'all';
my $observers = $self->observers();
$observers->{$init{'notification'}}->{$init{'object'}}->{$init{'observer'}} = \%init;
#this is off for now, 'til I think of how to deal with the case of objects that exist
#only in the notification center, such as loggers
#
#we don't want the notification center to keep observer objects around by mistake.
#weaken($init{'observer'}) if ref $init{'observer'};
return 1;
};
=pod
=item removeObserver
Basset::NotificationCenter->removeObserver(
'observer' => $logger
lib/Basset/Object/Persistent.pm view on Meta::CPAN
Some::Package->add_attr('foo');
my $obj = Some::Package->new();
$obj->foo('bar');
$obj->commit();
in the database, the 'foo' column will be set to 'bar'.
=cut
use Scalar::Util qw(weaken isweak);
use Basset::Object;
our @ISA = Basset::Object->pkg_for_type('object');
use strict;
use warnings;
=pod
=head1 ATTRIBUTES
lib/Basset/Object/Persistent.pm view on Meta::CPAN
#we have committed this object
$self->committed(1);
#and it's in the database
$self->in_db(1);
my $primary_identifier = $self->primary_identifier('string');
my $load_cache = $self->central_load_cache;
unless (defined $load_cache->{$primary_identifier}) {
$load_cache->{$primary_identifier} = $self;
weaken($load_cache->{$primary_identifier});
}
$self->end() or return $self->fatalerror($self->errvals);
$self->committing(0);
return $self;
}
lib/Basset/Object/Persistent.pm view on Meta::CPAN
$obj->loading(0);
my $primary_identifier = $obj->primary_identifier('string');
if (defined $load_cache->{$primary_identifier}) {
$obj = $load_cache->{$primary_identifier};
}
else {
$load_cache->{$primary_identifier} = $obj;
weaken($load_cache->{$primary_identifier});
$obj->setup() or return $class->error("Setup failed in object : " . $obj->error, $obj->errcode || "BOP-47");
}
#no matter what, we nuke our instantiated relationships, they can no longer be trusted.
$obj->instantiated_relationships({});
if (my $transform = $clauses->{'transform'}) {
my $transformed = $obj->$transform();
return $class->error("Cannot transform object into non-object", "BOP-91")
( run in 0.368 second using v1.01-cache-2.11-cpan-65fba6d93b7 )