diff Lib/IMPL/Web/Application/Resource.pm @ 248:814d755e5d12

Minor fixes
author sergey
date Tue, 06 Nov 2012 00:58:15 +0400
parents 7c517134c42f
children 827cf96faa1c
line wrap: on
line diff
--- a/Lib/IMPL/Web/Application/Resource.pm	Wed Oct 31 04:18:35 2012 +0400
+++ b/Lib/IMPL/Web/Application/Resource.pm	Tue Nov 06 00:58:15 2012 +0400
@@ -69,8 +69,15 @@
       die NotFoundException->new($this->location->url,$childId) unless $info;
       
       my $binding = $info->{binding};
-      my $contract = $info->{contract}
-        or die OperationException->new("Can't fetch a contract for the resource", $childId);
+      my $contract = $info->{contract};
+        
+      if (ref $contract eq 'CODE') {
+          $contract = $contract->();
+          $info->{contract} = $contract;
+      }
+      
+      die OperationException->new("Can't fetch a contract for the resource", $childId)
+        unless $contract;
         
       my %args = (
             parent => $this,
@@ -152,7 +159,7 @@
 
 =head2 C<[get]contract>
 
-Обязательное свойство для ресурса, ссылается, на контракт, соотсетствующий
+Обязательное свойство для ресурса, ссылается, на контракт, соответствующий
 данному ресурсу, используется для выполнения C<HTTP> методов и получения
 дочерних ресурсов.