composition and the role model are now decoupled
[gitmo/Moose.git] / lib / Moose / Meta / Role / Application.pm
1 package Moose::Meta::Role::Application;
2
3 use strict;
4 use warnings;
5 use metaclass;
6
7 our $VERSION   = '0.01';
8 our $AUTHORITY = 'cpan:STEVAN';
9
10 # no need to get fancy here ...
11 sub new { bless {} => (shift) }
12
13 sub apply {
14     my $self = shift;
15
16     $self->check_role_exclusions(@_);
17     $self->check_required_methods(@_);
18     
19     $self->apply_attributes(@_);
20     $self->apply_methods(@_);    
21     
22     $self->apply_override_method_modifiers(@_);
23     
24     $self->apply_before_method_modifiers(@_);
25     $self->apply_around_method_modifiers(@_);
26     $self->apply_after_method_modifiers(@_);
27 }
28
29 sub check_role_exclusions           { die "Abstract Method" }
30 sub check_required_methods          { die "Abstract Method" }
31 sub apply_attributes                { die "Abstract Method" }
32 sub apply_methods                   { die "Abstract Method" }
33 sub apply_override_method_modifiers { die "Abstract Method" }
34 sub apply_method_modifiers          { die "Abstract Method" }
35 sub apply_before_method_modifiers   { die "Abstract Method" }
36 sub apply_around_method_modifiers   { die "Abstract Method" }
37 sub apply_after_method_modifiers    { die "Abstract Method" }
38
39 1;
40
41 __END__
42
43 =pod
44
45 =head1 NAME
46
47 Moose::Meta::Role::Application
48
49 =head1 DESCRIPTION
50
51 This is the abstract base class for role applications.
52
53 =head2 METHODS
54
55 =over 4
56
57 =item B<new>
58
59 =item B<meta>
60
61 =item B<apply>
62
63 =item B<check_required_methods>
64
65 =item B<check_role_exclusions>
66
67 =item B<apply_attributes>
68
69 =item B<apply_methods>
70
71 =item B<apply_method_modifiers>
72
73 =item B<apply_before_method_modifiers>
74
75 =item B<apply_after_method_modifiers>
76
77 =item B<apply_around_method_modifiers>
78
79 =item B<apply_override_method_modifiers>
80
81 =back
82
83 =head1 BUGS
84
85 All complex software has bugs lurking in it, and this module is no
86 exception. If you find a bug please either email me, or add the bug
87 to cpan-RT.
88
89 =head1 AUTHOR
90
91 Stevan Little E<lt>stevan@iinteractive.comE<gt>
92
93 =head1 COPYRIGHT AND LICENSE
94
95 Copyright 2006, 2007 by Infinity Interactive, Inc.
96
97 L<http://www.iinteractive.com>
98
99 This library is free software; you can redistribute it and/or modify
100 it under the same terms as Perl itself.
101
102 =cut
103