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.630 second using v1.01-cache-2.11-cpan-65fba6d93b7 )