And get the other strategy from master implemented
t0m [Sun, 7 Jun 2009 22:31:54 +0000 (23:31 +0100)]
lib/CatalystX/DynamicComponent/ModelToControllerReflector.pm
t/lib/CatalystX/DynamicComponent/ModelToControllerReflector/Strategy/DispatchableMethod.pm [new file with mode: 0644]

index c9f3877..8856e97 100644 (file)
@@ -59,7 +59,7 @@ sub _reflect_model_to_controller {
     $strategy->new;
 
     my $model_methods = $model->meta->get_method_map;
-    foreach my $method_name ( $strategy->get_reflected_method_list($app, $model_name) ) {
+    foreach my $method_name ( $strategy->get_reflected_method_list($app, $model_name, $model) ) {
         # Note need to pass model name, as the method actually comes from
         # the underlying model class, not the Catalyst shim class we autogenerated.
         $controller_methods{$method_name} = 
diff --git a/t/lib/CatalystX/DynamicComponent/ModelToControllerReflector/Strategy/DispatchableMethod.pm b/t/lib/CatalystX/DynamicComponent/ModelToControllerReflector/Strategy/DispatchableMethod.pm
new file mode 100644 (file)
index 0000000..f6e9ec0
--- /dev/null
@@ -0,0 +1,17 @@
+package CatalystX::DynamicComponent::ModelToControllerReflector::Strategy::DispatchableMethod;
+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_name, $model) = @_;
+    my $model_methods = $model->meta->get_method_map;
+    grep { does_role($model_methods->{$_}, 'CatalystX::ControllerGeneratingModel::DispatchableMethod') } keys %$model_methods;
+}
+
+__PACKAGE__->meta->make_immutable;
+