Merge branch 'stable'
[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.12';
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     return { map { $_->name => $_ } $self->_get_local_methods };
90 }
91
92 package
93     Class::MOP::Module;
94
95 package
96     Class::MOP::Class;
97
98 sub construct_class_instance {
99     Class::MOP::Deprecated::deprecated(
100               'The construct_class_instance method has been made private.'
101             . " The public version is deprecated and will be removed in a future release.\n"
102     );
103     shift->_construct_class_instance(@_);
104 }
105
106 sub check_metaclass_compatibility {
107     Class::MOP::Deprecated::deprecated(
108         'The check_metaclass_compatibility method has been made private.'
109             . " The public version is deprecated and will be removed in a future release.\n"
110     );
111     shift->_check_metaclass_compatibility(@_);
112 }
113
114 sub construct_instance {
115     Class::MOP::Deprecated::deprecated(
116               'The construct_instance method has been made private.'
117             . " The public version is deprecated and will be removed in a future release.\n"
118     );
119     shift->_construct_instance(@_);
120 }
121
122 sub create_meta_instance {
123     Class::MOP::Deprecated::deprecated(
124               'The create_meta_instance method has been made private.'
125             . " The public version is deprecated and will be removed in a future release.\n"
126     );
127     shift->_create_meta_instance(@_);
128 }
129
130 sub clone_instance {
131     Class::MOP::Deprecated::deprecated(
132               'The clone_instance method has been made private.'
133             . " The public version is deprecated and will be removed in a future release.\n"
134     );
135     shift->_clone_instance(@_);
136 }
137
138 sub alias_method {
139     Class::MOP::Deprecated::deprecated(
140         "The alias_method method is deprecated. Use add_method instead.\n");
141
142     shift->add_method(@_);
143 }
144
145 sub compute_all_applicable_methods {
146     Class::MOP::Deprecated::deprecated(
147               'The compute_all_applicable_methods method is deprecated.'
148             . " Use get_all_methods instead.\n" );
149
150     return map {
151         {
152             name  => $_->name,
153             class => $_->package_name,
154             code  => $_,                 # sigh, overloading
155         },
156     } shift->get_all_methods(@_);
157 }
158
159 sub compute_all_applicable_attributes {
160     Class::MOP::Deprecated::deprecated(
161         'The compute_all_applicable_attributes method has been deprecated.'
162             . " Use get_all_attributes instead.\n" );
163
164     shift->get_all_attributes(@_);
165 }
166
167 sub get_attribute_map {
168     Class::MOP::Deprecated::deprecated(
169         "The get_attribute_map method has been deprecated.\n");
170
171     shift->_attribute_map(@_);
172 }
173
174 package
175     Class::MOP::Instance;
176
177 sub bless_instance_structure {
178     Class::MOP::Deprecated::deprecated(
179               'The bless_instance_structure method is deprecated.'
180             . " It will be removed in a future release.\n" );
181
182     my ( $self, $instance_structure ) = @_;
183     bless $instance_structure, $self->_class_name;
184 }
185
186 package
187     Class::MOP::Attribute;
188
189 sub process_accessors {
190     Class::MOP::Deprecated::deprecated(
191               'The process_accessors method has been made private.'
192             . " The public version is deprecated and will be removed in a future release.\n"
193     );
194     shift->_process_accessors(@_);
195 }
196
197 package
198     Class::MOP::Method::Accessor;
199
200 sub initialize_body {
201     Class::MOP::Deprecated::deprecated(
202               'The initialize_body method has been made private.'
203             . " The public version is deprecated and will be removed in a future release.\n"
204     );
205     shift->_initialize_body;
206 }
207
208 sub generate_accessor_method {
209     Class::MOP::Deprecated::deprecated(
210               'The generate_accessor_method method has been made private.'
211             . " The public version is deprecated and will be removed in a future release.\n"
212     );
213     shift->_generate_accessor_method;
214 }
215
216 sub generate_reader_method {
217     Class::MOP::Deprecated::deprecated(
218               'The generate_reader_method method has been made private.'
219             . " The public version is deprecated and will be removed in a future release.\n"
220     );
221     shift->_generate_reader_method;
222 }
223
224 sub generate_writer_method {
225     Class::MOP::Deprecated::deprecated(
226               'The generate_writer_method method has been made private.'
227             . " The public version is deprecated and will be removed in a future release.\n"
228     );
229     shift->_generate_writer_method;
230 }
231
232 sub generate_predicate_method {
233     Class::MOP::Deprecated::deprecated(
234               'The generate_predicate_method method has been made private.'
235             . " The public version is deprecated and will be removed in a future release.\n"
236     );
237     shift->_generate_predicate_method;
238 }
239
240 sub generate_clearer_method {
241     Class::MOP::Deprecated::deprecated(
242               'The generate_clearer_method method has been made private.'
243             . " The public version is deprecated and will be removed in a future release.\n"
244     );
245     shift->_generate_clearer_method;
246 }
247
248 sub generate_accessor_method_inline {
249     Class::MOP::Deprecated::deprecated(
250         'The generate_accessor_method_inline method has been made private.'
251             . " The public version is deprecated and will be removed in a future release.\n"
252     );
253     shift->_generate_accessor_method_inline;
254 }
255
256 sub generate_reader_method_inline {
257     Class::MOP::Deprecated::deprecated(
258         'The generate_reader_method_inline method has been made private.'
259             . " The public version is deprecated and will be removed in a future release.\n"
260     );
261     shift->_generate_reader_method_inline;
262 }
263
264 sub generate_writer_method_inline {
265     Class::MOP::Deprecated::deprecated(
266         'The generate_writer_method_inline method has been made private.'
267             . " The public version is deprecated and will be removed in a future release.\n"
268     );
269     shift->_generate_writer_method_inline;
270 }
271
272 sub generate_predicate_method_inline {
273     Class::MOP::Deprecated::deprecated(
274         'The generate_predicate_method_inline method has been made private.'
275             . " The public version is deprecated and will be removed in a future release.\n"
276     );
277     shift->_generate_predicate_method_inline;
278 }
279
280 sub generate_clearer_method_inline {
281     Class::MOP::Deprecated::deprecated(
282         'The generate_clearer_method_inline method has been made private.'
283             . " The public version is deprecated and will be removed in a future release.\n"
284     );
285     shift->_generate_clearer_method_inline;
286 }
287
288 package
289     Class::MOP::Method::Constructor;
290
291 sub meta_instance {
292     Class::MOP::Deprecated::deprecated(
293               'The meta_instance method has been made private.'
294             . " The public version is deprecated and will be removed in a future release.\n"
295     );
296     shift->_meta_instance;
297 }
298
299 sub attributes {
300     Class::MOP::Deprecated::deprecated(
301               'The attributes method has been made private.'
302             . " The public version is deprecated and will be removed in a future release.\n"
303     );
304
305     return shift->_attributes;
306 }
307
308 sub initialize_body {
309     Class::MOP::Deprecated::deprecated(
310               'The initialize_body method has been made private.'
311             . " The public version is deprecated and will be removed in a future release.\n"
312     );
313     shift->_initialize_body;
314 }
315
316 sub generate_constructor_method {
317     Class::MOP::Deprecated::deprecated(
318               'The generate_constructor_method method has been made private.'
319             . " The public version is deprecated and will be removed in a future release.\n"
320     );
321     shift->_generate_constructor_method;
322 }
323
324 sub generate_constructor_method_inline {
325     Class::MOP::Deprecated::deprecated(
326         'The generate_constructor_method_inline method has been made private.'
327             . " The public version is deprecated and will be removed in a future release.\n"
328     );
329     shift->_generate_constructor_method_inline;
330 }
331
332 1;
333
334 __END__
335
336 =pod
337
338 =head1 NAME 
339
340 Class::MOP::Deprecated - Manages deprecation warnings for Class::MOP
341
342 =head1 DESCRIPTION
343
344     use Class::MOP::Deprecated -api_version => $version;
345
346 =head1 FUNCTIONS
347
348 This module manages deprecation warnings for features that have been
349 deprecated in Class::MOP.
350
351 If you specify C<< -api_version => $version >>, you can use deprecated features
352 without warnings. Note that this special treatment is limited to the package
353 that loads C<Class::MOP::Deprecated>.
354
355 =head1 AUTHORS
356
357 Goro Fuji E<lt>gfuji@cpan.orgE<gt>
358
359 =head1 COPYRIGHT AND LICENSE
360
361 Copyright 2006-2010 by Infinity Interactive, Inc.
362
363 L<http://www.iinteractive.com>
364
365 This library is free software; you can redistribute it and/or modify
366 it under the same terms as Perl itself.
367
368 =cut