X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FSingleton%2FObject.pm;h=8e384723a766483d8f05442733c57b8dc22d47ab;hb=f65df6a0f27f65528091206b099ddb402fcfa63a;hp=942e1490fe343c33a5018c566799164b8e1b9780;hpb=1de95613f2dfae86af1a8f548d66d1de842e7201;p=gitmo%2FMooseX-Singleton.git diff --git a/lib/MooseX/Singleton/Object.pm b/lib/MooseX/Singleton/Object.pm index 942e149..8e38472 100644 --- a/lib/MooseX/Singleton/Object.pm +++ b/lib/MooseX/Singleton/Object.pm @@ -7,15 +7,30 @@ extends 'Moose::Object'; sub instance { shift->new } +sub initialize { + my ($class, @args) = @_; + + my $existing = $class->meta->existing_singleton; + confess "Singleton is already initialized" if $existing; + + return $class->SUPER::new(@args); +} + sub new { my ($class, @args) = @_; my $existing = $class->meta->existing_singleton; confess "Singleton is already initialized" if $existing and @args; + # Otherwise BUILD will be called repeatedly on the existing instance. + # -- rjbs, 2008-02-03 + return $existing if $existing and ! @args; + return $class->SUPER::new(@args); } +no Moose; + 1; __END__