1 package DBIx::Class::AccessorGroup;
6 use base qw( DBIx::Class::MethodAttributes Class::Accessor::Grouped );
8 use Scalar::Util 'blessed';
9 use DBIx::Class::_Util 'fail_on_internal_call';
12 sub mk_classdata :DBIC_method_is_indirect_sugar {
13 DBIx::Class::_ENV_::ASSERT_NO_INTERNAL_INDIRECT_CALLS and fail_on_internal_call;
14 shift->mk_classaccessor(@_);
17 sub mk_classaccessor :DBIC_method_is_indirect_sugar {
19 $self->mk_group_accessors('inherited', $_[0]);
21 ? $self->set_inherited(@_)
22 : ( DBIx::Class::_ENV_::ASSERT_NO_INTERNAL_INDIRECT_CALLS and fail_on_internal_call )
26 sub mk_group_accessors {
30 $class->next::method($type, @_);
33 if( $type =~ /^ ( inflated_ | filtered_ )? column $/x ) {
40 { [ $_, "_${_}_accessor" ] }
42 { ref $_ ? $_->[0] : $_ }
48 my $acc_name = $acc_pair->[$i];
53 $class->can($acc_name)
55 Carp::confess("Accessor '$acc_name' we just created on $class can't be found...?")
57 'DBIC_method_is_generated_from_resultsource_metadata',
59 ? "DBIC_method_is_${type}_extra_accessor"
60 : "DBIC_method_is_${type}_accessor"
68 sub get_component_class {
69 my $class = $_[0]->get_inherited($_[1]);
75 # inherited CAG can't be set to undef effectively, so people may use ''
78 # It's already an object, just go for it.
79 ! defined blessed $class
81 ! ${"${class}::__LOADED__BY__DBIC__CAG__COMPONENT_CLASS__"}
83 $_[0]->ensure_class_loaded($class);
85 ${"${class}::__LOADED__BY__DBIC__CAG__COMPONENT_CLASS__"}
86 = do { \(my $anon = 'loaded') };
92 sub set_component_class {
93 $_[0]->set_inherited($_[1], $_[2]);
95 # trigger a load for the case of $foo->component_accessor("bar")->new
96 $_[0]->get_component_class($_[1])
104 DBIx::Class::AccessorGroup - See Class::Accessor::Grouped
110 This class now exists in its own right on CPAN as Class::Accessor::Grouped
112 =head1 FURTHER QUESTIONS?
114 Check the list of L<additional DBIC resources|DBIx::Class/GETTING HELP/SUPPORT>.
116 =head1 COPYRIGHT AND LICENSE
118 This module is free software L<copyright|DBIx::Class/COPYRIGHT AND LICENSE>
119 by the L<DBIx::Class (DBIC) authors|DBIx::Class/AUTHORS>. You can
120 redistribute it and/or modify it under the same terms as the
121 L<DBIx::Class library|DBIx::Class/COPYRIGHT AND LICENSE>.