add component_class accessors and use them for *_class
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / ResultSource.pm
index 8ea0b1f..eff072b 100644 (file)
@@ -12,7 +12,8 @@ use base qw/DBIx::Class/;
 __PACKAGE__->load_components(qw/AccessorGroup/);
 
 __PACKAGE__->mk_group_accessors('simple' =>
-  qw/_ordered_columns _columns _primaries _unique_constraints name resultset_class resultset_attributes result_class schema from _relationships/);
+  qw/_ordered_columns _columns _primaries _unique_constraints name resultset_attributes schema from _relationships/);
+__PACKAGE__->mk_group_accessors('component_class' => qw/resultset_class result_class/);
 
 =head1 NAME 
 
@@ -358,9 +359,11 @@ sub resolve_join {
     return map { $self->resolve_join($_, $alias, $seen) } @$join;
   } elsif (ref $join eq 'HASH') {
     return
-      map { $self->resolve_join($_, $alias, $seen),
-            $self->related_source($_)->resolve_join($join->{$_}, $_, $seen) }
-           keys %$join;
+      map {
+        my $as = ($seen->{$_} ? $_.'_'.($seen->{$_}+1) : $_);
+        ($self->resolve_join($_, $alias, $seen),
+          $self->related_source($_)->resolve_join($join->{$_}, $as, $seen));
+      } keys %$join;
   } elsif (ref $join) {
     $self->throw_exception("No idea how to resolve join reftype ".ref $join);
   } else {
@@ -522,8 +525,6 @@ sub resultset {
   return $self->resultset_class->new($self, $self->{resultset_attributes});
 }
 
-=cut
-
 =head2 throw_exception
 
 See schema's throw_exception