Make sure roles are applied to right metaclass
[gitmo/MooseX-ClassAttribute.git] / lib / MooseX / ClassAttribute / Trait / Application / ToRole.pm
index 2d2e23e..babdbff 100644 (file)
@@ -5,19 +5,19 @@ use warnings;
 
 use Moose::Util::MetaRole;
 use MooseX::ClassAttribute::Trait::Application::ToClass;
-use MooseX::ClassAttribute::Trait::Application::ToInstance;
 
 use namespace::autoclean;
 use Moose::Role;
 
 with 'MooseX::ClassAttribute::Trait::Application';
 
-sub apply_class_attributes {
+around apply => sub {
+    my $orig  = shift;
     my $self  = shift;
     my $role1 = shift;
     my $role2 = shift;
 
-    $role2 = Moose::Util::MetaRole::apply_metaclass_roles(
+    $role2 = Moose::Util::MetaRole::apply_metaroles(
         for            => $role2,
         role_metaroles => {
             role => ['MooseX::ClassAttribute::Trait::Role'],
@@ -25,12 +25,17 @@ sub apply_class_attributes {
                 ['MooseX::ClassAttribute::Trait::Application::ToClass'],
             application_to_role =>
                 ['MooseX::ClassAttribute::Trait::Application::ToRole'],
-            application_to_instance => [
-                'MooseX::ClassAttribute::Trait::Application::ToInstance'
-            ],
         },
     );
 
+    $self->$orig( $role1, $role2 );
+};
+
+sub _apply_class_attributes {
+    my $self  = shift;
+    my $role1 = shift;
+    my $role2 = shift;
+
     foreach my $attribute_name ( $role1->get_class_attribute_list() ) {
         if (   $role2->has_class_attribute($attribute_name)
             && $role2->get_class_attribute($attribute_name)
@@ -52,32 +57,19 @@ sub apply_class_attributes {
 
 1;
 
+# ABSTRACT: A trait that supports applying class attributes to roles
+
 __END__
 
 =pod
 
-=head1 NAME
-
-MooseX::ClassAttribute::Trait::Application::ToRole - A trait that supports applying class attributes to roles
-
 =head1 DESCRIPTION
 
 This trait is used to allow the application of roles containing class
 attributes to roles.
 
-=head1 AUTHOR
-
-Dave Rolsky, C<< <autarch@urth.org> >>
-
 =head1 BUGS
 
 See L<MooseX::ClassAttribute> for details.
 
-=head1 COPYRIGHT & LICENSE
-
-Copyright 2007-2008 Dave Rolsky, All Rights Reserved.
-
-This program is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
 =cut