I think that these should be implemented as a role on the engine. So if I arrange...
t0m [Wed, 24 Jun 2009 20:03:15 +0000 (21:03 +0100)]
lib/MooseX/Storage/Traits/DisableCycleDetection.pm
lib/MooseX/Storage/Traits/OnlyWhenBuilt.pm

index 9d62b00..a8fb9bd 100644 (file)
@@ -4,6 +4,23 @@ use Moose::Role;
 our $VERSION   = '0.18';
 our $AUTHORITY = 'cpan:STEVAN';
 
+requires 'pack';
+requires 'unpack';
+
+around 'pack' => sub {
+    my ($orig, $self, %args) = @_;
+    $args{engine_traits} ||= [];
+    push(@{$args{engine_traits}}, 'DisableCycleDetection');
+    $self->$orig(%args);
+};
+
+around 'unpack' => sub {
+    my ($orig, $self, $data, %args) = @_;
+    $args{engine_traits} ||= [];
+    push(@{$args{engine_traits}}, 'DisableCycleDetection');
+    $self->$orig($data, %args);
+};
+
 1;
 
 __END__
index a3b9752..7464364 100644 (file)
@@ -4,6 +4,23 @@ use Moose::Role;
 our $VERSION   = '0.18';
 our $AUTHORITY = 'cpan:STEVAN';
 
+requires 'pack';
+requires 'unpack';
+
+around 'pack' => sub {
+    my ($orig, $self, %args) = @_;
+    $args{engine_traits} ||= [];
+    push(@{$args{engine_traits}}, 'OnlyWhenBuilt');
+    $self->$orig(%args);
+};
+
+around 'unpack' => sub {
+    my ($orig, $self, $data, %args) = @_;
+    $args{engine_traits} ||= [];
+    push(@{$args{engine_traits}}, 'OnlyWhenBuilt');
+    $self->$orig($data, %args);
+};
+
 1;
 
 __END__