Shoved Class::Data::Inheritable into DBIx::Class, more stuff works now
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Relationship / ProxyMethods.pm
index ede62a7..0524288 100644 (file)
@@ -3,28 +3,34 @@ package DBIx::Class::Relationship::ProxyMethods;
 use strict;
 use warnings;
 
-use base qw/Class::Data::Inheritable/;
+use base qw/DBIx::Class/;
 
 sub add_relationship {
   my ($class, $rel, @rest) = @_;
-  my $ret = $class->NEXT::ACTUAL::add_relationship($rel => @rest);
+  my $ret = $class->next::method($rel => @rest);
   if (my $proxy_list = $class->_relationships->{$rel}->{attrs}{proxy}) {
-    no strict 'refs';
-    no warnings 'redefine';
-    foreach my $proxy (ref $proxy_list ? @$proxy_list : $proxy_list) {
-      *{"${class}::${proxy}"} =
-        sub {
-          my $self = shift;
-          my $val = $self->$rel;
-          if (@_ && !defined $val) {
-            $val = $self->create_related($rel, { $proxy => $_[0] });
-            @_ = ();
-          }
-          return ($val ? $val->$proxy(@_) : undef);
-       }
-    }
+    $class->proxy_to_related($rel,
+              (ref $proxy_list ? @$proxy_list : $proxy_list));
   }
   return $ret;
 }
 
+sub proxy_to_related {
+  my ($class, $rel, @proxy) = @_;
+  no strict 'refs';
+  no warnings 'redefine';
+  foreach my $proxy (@proxy) {
+    *{"${class}::${proxy}"} =
+      sub {
+        my $self = shift;
+        my $val = $self->$rel;
+        if (@_ && !defined $val) {
+          $val = $self->create_related($rel, { $proxy => $_[0] });
+          @_ = ();
+        }
+        return ($val ? $val->$proxy(@_) : undef);
+     }
+  }
+}
+
 1;