From: Peter Rabbitson Date: Wed, 23 Jul 2014 20:24:27 +0000 (+0200) Subject: Now that populate is rewritten: finalize the resolver fatal sanity checks X-Git-Tag: v0.082800~119 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=dbsrgits%2FDBIx-Class.git;a=commitdiff_plain;h=7cb7914bc08e12acaea711c94c8f547926b8f2b3 Now that populate is rewritten: finalize the resolver fatal sanity checks --- diff --git a/lib/DBIx/Class/ResultSource.pm b/lib/DBIx/Class/ResultSource.pm index c3a318f..72edcbd 100644 --- a/lib/DBIx/Class/ResultSource.pm +++ b/lib/DBIx/Class/ResultSource.pm @@ -1712,9 +1712,6 @@ sub _resolve_condition { } } - $self->throw_exception('No practical way to resolve a relationship between two structures') - if $is_objlike[0] and $is_objlike[1]; - my $args = { condition => $cond, @@ -1788,12 +1785,15 @@ sub _resolve_relationship_condition { if !defined $args->{$_} or length ref $args->{$_}; } + $self->throw_exception("Arguments 'self_alias' and 'foreign_alias' may not be identical") + if $args->{self_alias} eq $args->{foreign_alias}; + my $exception_rel_id = "relationship '$args->{rel_name}' on source '@{[ $self->source_name ]}'"; - my $rel_info = $self->relationship_info($args->{rel_name}); - # or $self->throw_exception( "No such $exception_rel_id" ); + my $rel_info = $self->relationship_info($args->{rel_name}) + or $self->throw_exception( "No such $exception_rel_id" ); - $self->throw_exception("No practical way to resolve $exception_rel_id between two objects") + $self->throw_exception("No practical way to resolve $exception_rel_id between two data structures") if defined $args->{self_resultobj} and defined $args->{foreign_resultobj}; $self->throw_exception( "Argument to infer_values_based_on must be a hash" ) @@ -1805,8 +1805,8 @@ sub _resolve_relationship_condition { if (exists $args->{self_resultobj}) { if (defined blessed $args->{self_resultobj}) { -# $self->throw_exception( "Object '$args->{self_resultobj}' must be of class '@{[ $self->result_class ]}'" ) -# unless $args->{self_resultobj}->isa($self->result_class); + $self->throw_exception( "Object '$args->{self_resultobj}' must be of class '@{[ $self->result_class ]}'" ) + unless $args->{self_resultobj}->isa($self->result_class); } else { $args->{self_resultobj} = DBIx::Class::Core->new({ @@ -1818,8 +1818,8 @@ sub _resolve_relationship_condition { if (exists $args->{foreign_resultobj}) { if (defined blessed $args->{foreign_resultobj}) { -# $self->throw_exception( "Object '$args->{foreign_resultobj}' must be of class '$rel_info->{class}'" ) -# unless $args->{foreign_resultobj}->isa($rel_info->{class}); + $self->throw_exception( "Object '$args->{foreign_resultobj}' must be of class '$rel_info->{class}'" ) + unless $args->{foreign_resultobj}->isa($rel_info->{class}); } else { $args->{foreign_resultobj} = DBIx::Class::Core->new({