pervasive type constraints
[scpubgit/DX.git] / lib / DX / ActionBuilder / Null.pm
index 0ac25b7..41109f6 100644 (file)
@@ -4,16 +4,26 @@ use DX::Class;
 
 with 'DX::Role::ActionBuilder';
 
-has target_path => (is => 'ro');
+has target_path => (is => 'ro', isa => ValuePath);
 
 sub can_set_value { 0 }
 
+sub aperture_for_set_value { [] }
+
 sub action_for_set_value { undef }
 
+sub can_add_member { 0 }
+
+sub aperture_for_add_member { [] }
+
 sub action_for_add_member { undef }
 
+sub aperure_for_set_member { [] }
+
 sub action_for_set_member { undef }
 
+sub aperture_for_remove_member { [] }
+
 sub action_for_remove_member { undef }
 
 sub specialize_for_member {
@@ -27,8 +37,7 @@ sub specialize_for_member {
 
 sub apply_to_value {
   my ($self, $value) = @_;
-  my $new_value = $value->but_set_action_builder($self)
-                        ->but_set_identity_path($self->target_path);
+  my $new_value = $value->but_set_action_builder($self);
   return $new_value unless $new_value->isa('DX::Value::Dict');
   my %m = %{$new_value->members};
   return $new_value->but(