ad2b553361458870a87fb4d043afa308290156c1
[gitmo/Class-MOP.git] / lib / Class / MOP / Deprecated.pm
1 package Class::MOP::Deprecated;
2
3 use strict;
4 use warnings;
5
6 our $VERSION = '1.11';
7 $VERSION = eval $VERSION;
8 our $AUTHORITY = 'cpan:STEVAN';
9
10 use Package::DeprecationManager -deprecations => {
11     'Class::MOP::HAVE_ISAREV'           => '0.93',
12     'Class::MOP::subname'               => '0.93',
13     'Class::MOP::in_global_destruction' => '0.93',
14
15     'Class::MOP::Package::get_method_map' => '0.93',
16
17     'Class::MOP::Class::construct_class_instance'          => '0.93',
18     'Class::MOP::Class::check_metaclass_compatibility'     => '0.93',
19     'Class::MOP::Class::create_meta_instance'              => '0.93',
20     'Class::MOP::Class::clone_instance'                    => '0.93',
21     'Class::MOP::Class::alias_method'                      => '0.93',
22     'Class::MOP::Class::compute_all_applicable_methods'    => '0.93',
23     'Class::MOP::Class::compute_all_applicable_attributes' => '0.93',
24     'Class::MOP::Class::get_attribute_map'                 => '0.95',
25
26     'Class::MOP::Instance::bless_instance_structure' => '0.93',
27
28     'Class::MOP::Attribute::process_accessors' => '0.93',
29
30     'Class::MOP::Method::Accessor::initialize_body'                 => '0.93',
31     'Class::MOP::Method::Accessor::generate_accessor_method'        => '0.93',
32     'Class::MOP::Method::Accessor::generate_reader_method'          => '0.93',
33     'Class::MOP::Method::Accessor::generate_writer_method'          => '0.93',
34     'Class::MOP::Method::Accessor::generate_predicate_method'       => '0.93',
35     'Class::MOP::Method::Accessor::generate_clearer_method'         => '0.93',
36     'Class::MOP::Method::Accessor::generate_accessor_method_inline' => '0.93',
37     'Class::MOP::Method::Accessor::generate_reader_method_inline'   => '0.93',
38     'Class::MOP::Method::Accessor::generate_writer_method_inline'   => '0.93',
39     'Class::MOP::Method::Accessor::generate_clearer_method_inline'  => '0.93',
40     'Class::MOP::Method::Accessor::generate_predicate_method_inline' =>
41         '0.93',
42
43     'Class::MOP::Method::Constructor::meta_instance'               => '0.93',
44     'Class::MOP::Method::Constructor::attributes'                  => '0.93',
45     'Class::MOP::Method::Constructor::initialize_body'             => '0.93',
46     'Class::MOP::Method::Constructor::generate_constructor_method' => '0.93',
47     'Class::MOP::Method::Constructor::generate_constructor_method_inline' =>
48         '0.93',
49 };
50
51
52 package
53     Class::MOP;
54
55 sub HAVE_ISAREV () {
56     Class::MOP::Deprecated::deprecated(
57         "Class::MOP::HAVE_ISAREV is deprecated and will be removed in a future release. It has always returned 1 anyway."
58     );
59     return 1;
60 }
61
62 sub subname {
63     Class::MOP::Deprecated::deprecated(
64         "Class::MOP::subname is deprecated. Please use Sub::Name directly.");
65     require Sub::Name;
66     goto \&Sub::Name::subname;
67 }
68
69 sub in_global_destruction {
70     Class::MOP::Deprecated::deprecated(
71         "Class::MOP::in_global_destruction is deprecated. Please use Devel::GlobalDestruction directly."
72     );
73     require Devel::GlobalDestruction;
74     goto \&Devel::GlobalDestruction::in_global_destruction;
75 }
76
77 package
78     Class::MOP::Package;
79
80 use Scalar::Util qw( blessed );
81
82 sub get_method_map {
83     Class::MOP::Deprecated::deprecated(
84               'The get_method_map method has been made private.'
85             . " The public version is deprecated and will be removed in a future release.\n"
86     );
87     my $self = shift;
88
89     my $map = $self->_full_method_map;
90
91     $map->{$_} = $self->get_method($_)
92         for grep { !blessed( $map->{$_} ) } keys %{$map};
93
94     return $map;
95 }
96
97 package
98     Class::MOP::Module;
99
100 package
101     Class::MOP::Class;
102
103 sub construct_class_instance {
104     Class::MOP::Deprecated::deprecated(
105               'The construct_class_instance method has been made private.'
106             . " The public version is deprecated and will be removed in a future release.\n"
107     );
108     shift->_construct_class_instance(@_);
109 }
110
111 sub check_metaclass_compatibility {
112     Class::MOP::Deprecated::deprecated(
113         'The check_metaclass_compatibility method has been made private.'
114             . " The public version is deprecated and will be removed in a future release.\n"
115     );
116     shift->_check_metaclass_compatibility(@_);
117 }
118
119 sub construct_instance {
120     Class::MOP::Deprecated::deprecated(
121               'The construct_instance method has been made private.'
122             . " The public version is deprecated and will be removed in a future release.\n"
123     );
124     shift->_construct_instance(@_);
125 }
126
127 sub create_meta_instance {
128     Class::MOP::Deprecated::deprecated(
129               'The create_meta_instance method has been made private.'
130             . " The public version is deprecated and will be removed in a future release.\n"
131     );
132     shift->_create_meta_instance(@_);
133 }
134
135 sub clone_instance {
136     Class::MOP::Deprecated::deprecated(
137               'The clone_instance method has been made private.'
138             . " The public version is deprecated and will be removed in a future release.\n"
139     );
140     shift->_clone_instance(@_);
141 }
142
143 sub alias_method {
144     Class::MOP::Deprecated::deprecated(
145         "The alias_method method is deprecated. Use add_method instead.\n");
146
147     shift->add_method(@_);
148 }
149
150 sub compute_all_applicable_methods {
151     Class::MOP::Deprecated::deprecated(
152               'The compute_all_applicable_methods method is deprecated.'
153             . " Use get_all_methods instead.\n" );
154
155     return map {
156         {
157             name  => $_->name,
158             class => $_->package_name,
159             code  => $_,                 # sigh, overloading
160         },
161     } shift->get_all_methods(@_);
162 }
163
164 sub compute_all_applicable_attributes {
165     Class::MOP::Deprecated::deprecated(
166         'The compute_all_applicable_attributes method has been deprecated.'
167             . " Use get_all_attributes instead.\n" );
168
169     shift->get_all_attributes(@_);
170 }
171
172 sub get_attribute_map {
173     Class::MOP::Deprecated::deprecated(
174         "The get_attribute_map method has been deprecated.\n");
175
176     shift->_attribute_map(@_);
177 }
178
179 package
180     Class::MOP::Instance;
181
182 sub bless_instance_structure {
183     Class::MOP::Deprecated::deprecated(
184               'The bless_instance_structure method is deprecated.'
185             . " It will be removed in a future release.\n" );
186
187     my ( $self, $instance_structure ) = @_;
188     bless $instance_structure, $self->_class_name;
189 }
190
191 package
192     Class::MOP::Attribute;
193
194 sub process_accessors {
195     Class::MOP::Deprecated::deprecated(
196               'The process_accessors method has been made private.'
197             . " The public version is deprecated and will be removed in a future release.\n"
198     );
199     shift->_process_accessors(@_);
200 }
201
202 package
203     Class::MOP::Method::Accessor;
204
205 sub initialize_body {
206     Class::MOP::Deprecated::deprecated(
207               'The initialize_body method has been made private.'
208             . " The public version is deprecated and will be removed in a future release.\n"
209     );
210     shift->_initialize_body;
211 }
212
213 sub generate_accessor_method {
214     Class::MOP::Deprecated::deprecated(
215               'The generate_accessor_method method has been made private.'
216             . " The public version is deprecated and will be removed in a future release.\n"
217     );
218     shift->_generate_accessor_method;
219 }
220
221 sub generate_reader_method {
222     Class::MOP::Deprecated::deprecated(
223               'The generate_reader_method method has been made private.'
224             . " The public version is deprecated and will be removed in a future release.\n"
225     );
226     shift->_generate_reader_method;
227 }
228
229 sub generate_writer_method {
230     Class::MOP::Deprecated::deprecated(
231               'The generate_writer_method method has been made private.'
232             . " The public version is deprecated and will be removed in a future release.\n"
233     );
234     shift->_generate_writer_method;
235 }
236
237 sub generate_predicate_method {
238     Class::MOP::Deprecated::deprecated(
239               'The generate_predicate_method method has been made private.'
240             . " The public version is deprecated and will be removed in a future release.\n"
241     );
242     shift->_generate_predicate_method;
243 }
244
245 sub generate_clearer_method {
246     Class::MOP::Deprecated::deprecated(
247               'The generate_clearer_method method has been made private.'
248             . " The public version is deprecated and will be removed in a future release.\n"
249     );
250     shift->_generate_clearer_method;
251 }
252
253 sub generate_accessor_method_inline {
254     Class::MOP::Deprecated::deprecated(
255         'The generate_accessor_method_inline method has been made private.'
256             . " The public version is deprecated and will be removed in a future release.\n"
257     );
258     shift->_generate_accessor_method_inline;
259 }
260
261 sub generate_reader_method_inline {
262     Class::MOP::Deprecated::deprecated(
263         'The generate_reader_method_inline method has been made private.'
264             . " The public version is deprecated and will be removed in a future release.\n"
265     );
266     shift->_generate_reader_method_inline;
267 }
268
269 sub generate_writer_method_inline {
270     Class::MOP::Deprecated::deprecated(
271         'The generate_writer_method_inline method has been made private.'
272             . " The public version is deprecated and will be removed in a future release.\n"
273     );
274     shift->_generate_writer_method_inline;
275 }
276
277 sub generate_predicate_method_inline {
278     Class::MOP::Deprecated::deprecated(
279         'The generate_predicate_method_inline method has been made private.'
280             . " The public version is deprecated and will be removed in a future release.\n"
281     );
282     shift->_generate_predicate_method_inline;
283 }
284
285 sub generate_clearer_method_inline {
286     Class::MOP::Deprecated::deprecated(
287         'The generate_clearer_method_inline method has been made private.'
288             . " The public version is deprecated and will be removed in a future release.\n"
289     );
290     shift->_generate_clearer_method_inline;
291 }
292
293 package
294     Class::MOP::Method::Constructor;
295
296 sub meta_instance {
297     Class::MOP::Deprecated::deprecated(
298               'The meta_instance method has been made private.'
299             . " The public version is deprecated and will be removed in a future release.\n"
300     );
301     shift->_meta_instance;
302 }
303
304 sub attributes {
305     Class::MOP::Deprecated::deprecated(
306               'The attributes method has been made private.'
307             . " The public version is deprecated and will be removed in a future release.\n"
308     );
309
310     return shift->_attributes;
311 }
312
313 sub initialize_body {
314     Class::MOP::Deprecated::deprecated(
315               'The initialize_body method has been made private.'
316             . " The public version is deprecated and will be removed in a future release.\n"
317     );
318     shift->_initialize_body;
319 }
320
321 sub generate_constructor_method {
322     Class::MOP::Deprecated::deprecated(
323               'The generate_constructor_method method has been made private.'
324             . " The public version is deprecated and will be removed in a future release.\n"
325     );
326     shift->_generate_constructor_method;
327 }
328
329 sub generate_constructor_method_inline {
330     Class::MOP::Deprecated::deprecated(
331         'The generate_constructor_method_inline method has been made private.'
332             . " The public version is deprecated and will be removed in a future release.\n"
333     );
334     shift->_generate_constructor_method_inline;
335 }
336
337 1;
338
339 __END__
340
341 =pod
342
343 =head1 NAME 
344
345 Class::MOP::Deprecated - Manages deprecation warnings for Class::MOP
346
347 =head1 DESCRIPTION
348
349     use Class::MOP::Deprecated -api_version => $version;
350
351 =head1 FUNCTIONS
352
353 This module manages deprecation warnings for features that have been
354 deprecated in Class::MOP.
355
356 If you specify C<< -api_version => $version >>, you can use deprecated features
357 without warnings. Note that this special treatment is limited to the package
358 that loads C<Class::MOP::Deprecated>.
359
360 =head1 AUTHORS
361
362 Goro Fuji E<lt>gfuji@cpan.orgE<gt>
363
364 =head1 COPYRIGHT AND LICENSE
365
366 Copyright 2006-2010 by Infinity Interactive, Inc.
367
368 L<http://www.iinteractive.com>
369
370 This library is free software; you can redistribute it and/or modify
371 it under the same terms as Perl itself.
372
373 =cut