X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalystX%2FDynamicComponent%2FModelToControllerReflector%2FStrategy%2FInterfaceRoles.pm;fp=lib%2FCatalystX%2FDynamicComponent%2FModelToControllerReflector%2FStrategy%2FInterfaceRoles.pm;h=5beb1aec06021bd73c9e32c11d61f5763e197778;hb=f38d3061acf7d7abf266fecf958b9a138b7e7224;hp=0000000000000000000000000000000000000000;hpb=e1e02f8068778841a750028586469c8134614153;p=catagits%2FCatalystX-DynamicComponent.git diff --git a/lib/CatalystX/DynamicComponent/ModelToControllerReflector/Strategy/InterfaceRoles.pm b/lib/CatalystX/DynamicComponent/ModelToControllerReflector/Strategy/InterfaceRoles.pm new file mode 100644 index 0000000..5beb1ae --- /dev/null +++ b/lib/CatalystX/DynamicComponent/ModelToControllerReflector/Strategy/InterfaceRoles.pm @@ -0,0 +1,19 @@ +package CatalystX::DynamicComponent::ModelToControllerReflector::Strategy::InterfaceRoles; +use Moose; +use MooseX::Types::Moose qw/HashRef/; +use Moose::Autobox; +use List::MoreUtils qw/uniq/; +use namespace::autoclean; + +with 'CatalystX::DynamicComponent::ModelToControllerReflector::Strategy'; + +sub get_reflected_method_list {; + my ($self, $app, $model_meta) = @_; + my $model_name = $model_meta->name; + my $interface_roles = [ uniq( map { exists $_->{interface_roles} ? $_->{interface_roles}->flatten : () } $app->config->{$model_name}, $app->config->{'CatalystX::DynamicComponent::ModelToControllerReflector'} ) ]; + + map { $_->meta->get_required_method_list } @$interface_roles; +} + +__PACKAGE__->meta->make_immutable; +