testbot/lib: Improve the Collection methods argument handling.

Francois Gouget fgouget at codeweavers.com
Mon Jun 16 05:18:28 CDT 2014


This standardizes the way we handle the arguments.
Make it so one can readily see the list of arguments the method takes without having t
o hunt down the implementation of all its ancestors.
Because these are methods the added prototypes have no effect whatsoever as far as Per
l is concerned. However they do document which arguments are optional.
---
 testbot/lib/ObjectModel/Collection.pm | 131 ++++++++++++++++++----------------
 testbot/lib/ObjectModel/Item.pm       |  92 ++++++++++++------------
 2 files changed, 114 insertions(+), 109 deletions(-)

diff --git a/testbot/lib/ObjectModel/Collection.pm b/testbot/lib/ObjectModel/Collection.pm
index 53ad5fe..e9a987b 100644
--- a/testbot/lib/ObjectModel/Collection.pm
+++ b/testbot/lib/ObjectModel/Collection.pm
@@ -63,7 +63,7 @@ sub ComputeMasterKey($)
   return $MasterKey;
 }
 
-sub new
+sub new($$$$$;$$@)
 {
   my $class = shift;
   my $TableName = shift;
@@ -71,7 +71,7 @@ sub new
   my $ItemName = shift;
   my $PropertyDescriptors = shift;
   my $ScopeObject = shift;
-  my $MasterObject = $_[0];
+  my ($MasterObject) = @_;
 
   my $MasterKey = "";
   my ($AllScopeItems, $MasterColNames, $MasterColValues);
@@ -100,26 +100,25 @@ sub new
   return $self;
 }
 
-sub _initialize
+sub _initialize($;$)
 {
   # $MasterObject may be required for some Collections.
-  my ($self, $MasterObject) = @_;
+  my ($self, $_MasterObject) = @_;
 
   $self->{AllScopeItems}->{ref($self)} ||= {};
 }
 
-sub GetPropertyDescriptors
+sub GetPropertyDescriptors($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   return $self->{PropertyDescriptors};
 }
 
-sub GetPropertyDescriptorByName
+sub GetPropertyDescriptorByName($$)
 {
-  my $self = shift;
+  my ($self, $Name) = @_;
 
-  my $Name = shift;
   foreach my $PropertyDescriptor (@{$self->{PropertyDescriptors}})
   {
     if ($PropertyDescriptor->GetName() eq $Name)
@@ -131,39 +130,39 @@ sub GetPropertyDescriptorByName
   return undef;
 }
 
-sub GetTableName
+sub GetTableName($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   return $self->{TableName};
 }
 
-sub GetCollectionName
+sub GetCollectionName($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   return $self->{CollectionName};
 }
 
-sub GetItemName
+sub GetItemName($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   return $self->{ItemName};
 }
 
-sub Load
+sub Load($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   $self->GetBackEnd()->LoadCollection($self);
 
   $self->{Loaded} = 1;
 }
 
-sub Add
+sub Add($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   my $NewItem = $self->CreateItem();
   $NewItem->InitializeNew($self);
@@ -184,17 +183,17 @@ sub Add
   return $NewItem;
 }
 
-sub GetKeysNoLoad
+sub GetKeysNoLoad($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   my @Keys = keys %{$self->{Items}};
   return \@Keys;
 }
 
-sub GetKeys
+sub GetKeys($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   if (! $self->{Loaded})
   {
@@ -221,7 +220,7 @@ collections.
 =back
 =cut
 
-sub GetFullKey
+sub GetFullKey($$)
 {
   my ($self, $Key) = @_;
 
@@ -242,7 +241,7 @@ Item is returned.
 =back
 =cut
 
-sub GetScopeItem
+sub GetScopeItem($$$)
 {
   my ($self, $Key, $NewItem) = @_;
 
@@ -269,7 +268,7 @@ gets loaded and added even if it does not match the Collection's filters.
 =back
 =cut
 
-sub GetItem
+sub GetItem($$)
 {
   my ($self, $Key) = @_;
 
@@ -310,10 +309,9 @@ GetItem().
 =back
 =cut
 
-sub ItemExists
+sub ItemExists($$)
 {
-  my $self = shift;
-  my $Key = $_[0];
+  my ($self, $Key) = @_;
 
   if (! defined($Key))
   {
@@ -340,9 +338,9 @@ through GetItem().
 =back
 =cut
 
-sub GetItems
+sub GetItems($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   if (! $self->{Loaded})
   {
@@ -363,9 +361,9 @@ Returns true if the Collection contains no Item.
 =back
 =cut
 
-sub IsEmpty
+sub IsEmpty($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   if (! $self->{Loaded})
   {
@@ -375,7 +373,7 @@ sub IsEmpty
   return scalar(keys %{$self->{Items}}) == 0;
 }
 
-sub CombineKey
+sub CombineKey($@)
 {
   my $self = shift;
 
@@ -383,19 +381,34 @@ sub CombineKey
   return $CombinedKey;
 }
 
-sub SplitKey
+sub SplitKey($$)
 {
-  my $self = shift;
+  my ($self, $CombinedKey) = @_;
 
-  my $CombinedKey = $_[0];
   my @KeyComponents = split /#@#/, $CombinedKey;
 
   return @KeyComponents;
 }
 
-sub Validate
+=pod
+=over 12
+
+=item C<Validate()>
+
+Validates all the new and modified Item objects present in the Collection.
+
+In case of an error this returns a triplet containing the invalid Item's key,
+the invalid property name and the error message. The property name may be undef
+if no specific property is invalid.
+
+If no Item is invalid then (undef, undef, undef) is returned.
+
+=back
+=cut
+
+sub Validate($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   foreach my $Item (values %{$self->{Items}})
   {
@@ -437,9 +450,9 @@ sub Validate
   return (undef, undef, undef);
 }
 
-sub SaveNoValidate
+sub SaveNoValidate($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   $self->GetBackEnd()->SaveCollection($self);
 
@@ -459,9 +472,9 @@ sub SaveNoValidate
   }
 }
 
-sub Save
+sub Save($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   my ($ErrKey, $ErrProperty, $ErrMessage) = $self->Validate();
   if (! defined($ErrMessage))
@@ -473,10 +486,9 @@ sub Save
   return ($ErrKey, $ErrProperty, $ErrMessage);
 }
 
-sub KeyChanged
+sub KeyChanged($$$)
 {
-  my $self = shift;
-  my ($OldKey, $NewKey) = @_;
+  my ($self, $OldKey, $NewKey) = @_;
 
   my $Item = $self->{Items}{$OldKey};
   if (! defined($Item))
@@ -499,10 +511,9 @@ sub KeyChanged
   $Item->KeyChanged();
 }
 
-sub MasterKeyChanged
+sub MasterKeyChanged($$)
 {
-  my $self = shift;
-  my $MasterColValues = shift;
+  my ($self, $MasterColValues) = @_;
 
   $self->{MasterColValues} = $MasterColValues;
   $self->{MasterKey} = ComputeMasterKey($MasterColValues);
@@ -513,17 +524,16 @@ sub MasterKeyChanged
   }
 }
 
-sub GetMasterCols
+sub GetMasterCols($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   return ($self->{MasterColNames}, $self->{MasterColValues});
 }
 
-sub DeleteItem
+sub DeleteItem($$)
 {
-  my $self = shift;
-  my $Item = shift;
+  my ($self, $Item) = @_;
 
   my $ErrMessage = $Item->OnDelete();
   if (defined($ErrMessage))
@@ -548,9 +558,9 @@ sub DeleteItem
   return undef;
 }
 
-sub DeleteAll
+sub DeleteAll($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   if (! $self->{Loaded})
   {
@@ -582,17 +592,16 @@ sub DeleteAll
   return undef;
 }
 
-sub AddFilter
+sub AddFilter($$$)
 {
-  my $self = shift;
-  my ($PropertyName, $Value) = @_;
+  my ($self, $PropertyName, $Value) = @_;
 
   $self->{Filters}{$PropertyName} = $Value;
 }
 
-sub GetFilters
+sub GetFilters($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   return $self->{Filters};
 }
diff --git a/testbot/lib/ObjectModel/Item.pm b/testbot/lib/ObjectModel/Item.pm
index 2ec69f1..baaa39d 100644
--- a/testbot/lib/ObjectModel/Item.pm
+++ b/testbot/lib/ObjectModel/Item.pm
@@ -35,10 +35,10 @@ require Exporter;
 @ISA = qw(Exporter);
 @EXPORT_OK = qw(&new);
 
-sub new
+sub new($$@)
 {
   my $class = shift;
-  my $Collection = $_[0];
+  my ($Collection) = @_;
 
   my $self = {};
   $self->{TableName} = $Collection->{TableName};
@@ -70,30 +70,29 @@ sub new
   return $self;
 }
 
-sub _initialize
+sub _initialize($$)
 {
   #my ($self, $Collection) = @_;
 }
 
-sub InitializeNew
+sub InitializeNew($$)
 {
   my ($self, $_Collection) = @_;
 
   $self->{IsModified} = !1;
 }
 
-sub GetPropertyDescriptors
+sub GetPropertyDescriptors($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   return $self->{PropertyDescriptors};
 }
 
-sub GetPropertyDescriptorByName
+sub GetPropertyDescriptorByName($$)
 {
-  my $self = shift;
+  my ($self, $Name) = @_;
 
-  my $Name = $_[0];
   foreach my $PropertyDescriptor (@{$self->{PropertyDescriptors}})
   {
     if ($PropertyDescriptor->GetName() eq $Name)
@@ -105,31 +104,30 @@ sub GetPropertyDescriptorByName
   return undef;
 }
 
-sub GetTableName
+sub GetTableName($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   return $self->{TableName};
 }
 
-sub GetIsNew
+sub GetIsNew($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   return $self->{IsNew};
 }
 
-sub GetIsModified
+sub GetIsModified($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   return $self->{IsModified};
 }
 
-sub GetColValue
+sub GetColValue($$)
 {
-  my $self = shift;
-  my $ColName = shift;
+  my ($self, $ColName) = @_;
 
   if (! exists($self->{ColValues}{$ColName}))
   {
@@ -139,10 +137,9 @@ sub GetColValue
   return $self->{ColValues}{$ColName};
 }
 
-sub PutColValue
+sub PutColValue($$$)
 {
-  my $self = shift;
-  my ($ColName, $Value) = @_;
+  my ($self, $ColName, $Value) = @_;
 
   if (! exists($self->{ColValues}{$ColName}))
   {
@@ -156,10 +153,9 @@ sub PutColValue
   }
 }
 
-sub ValuesDiffer
+sub ValuesDiffer($$$)
 {
-  my $self = shift;
-  my ($Val1, $Val2) = @_;
+  my ($self, $Val1, $Val2) = @_;
 
   if (defined($Val1))
   {
@@ -258,9 +254,9 @@ sub AUTOLOAD
   die "Unknown property or method $PropertyName";
 }
 
-sub GetMasterKey
+sub GetMasterKey($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   my $ColNamePrefix = ref($self);
   $ColNamePrefix =~ s/.*://;
@@ -285,17 +281,17 @@ sub GetMasterKey
   return (\@MasterColNames, \@MasterColValues);
 }
 
-sub ResetModified
+sub ResetModified($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   $self->{IsNew} = !1;
   $self->{IsModified} = !1;
 }
 
-sub GetKey
+sub GetKey($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   my $Key = undef;
   foreach my $PropertyDescriptor (@{$self->{PropertyDescriptors}})
@@ -332,9 +328,9 @@ sub GetFullKey($)
   return $self->{MasterKey} . $self->GetKey();
 }
 
-sub GetKeyComponents
+sub GetKeyComponents($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   my @KeyComponents;
   foreach my $PropertyDescriptor (@{$self->{PropertyDescriptors}})
@@ -351,19 +347,18 @@ sub GetKeyComponents
   return @KeyComponents;
 }
 
-sub ValidateProperty
+sub ValidateProperty($$)
 {
-  my $self = shift;
+  my ($self, $PropertyDescriptor) = @_;
 
-  my $PropertyDescriptor = shift;
   my $PropertyName = $PropertyDescriptor->GetName();
   return $PropertyDescriptor->ValidateValue($self->$PropertyName,
                                             $self->GetIsNew());
 }
 
-sub Validate
+sub Validate($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   foreach my $PropertyDescriptor (@{$self->{PropertyDescriptors}})
   {
@@ -390,9 +385,10 @@ sub Validate
   return (undef, undef);
 }
 
-sub OnDelete
+sub OnDelete($)
 {
-  my $self = shift;
+  my ($self) = @_;
+
   foreach my $PropertyDescriptor (@{$self->{PropertyDescriptors}})
   {
     if ($PropertyDescriptor->GetClass() eq "Detailref")
@@ -410,16 +406,16 @@ sub OnDelete
   return undef;
 }
 
-sub OnSaved
+sub OnSaved($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   $self->ResetModified();
 }
 
-sub Save
+sub Save($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   my ($ErrProperty, $ErrMessage) = $self->Validate();
   if (defined($ErrMessage))
@@ -446,9 +442,9 @@ sub Save
   return (undef, undef);
 }
 
-sub KeyChanged
+sub KeyChanged($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   my ($MasterColNames, $MasterColValues);
   foreach my $PropertyDescriptor (@{$self->GetPropertyDescriptors()})
@@ -465,7 +461,7 @@ sub KeyChanged
   }
 }
 
-sub MasterKeyChanged
+sub MasterKeyChanged($$)
 {
   my ($self, $MasterColValues) = @_;
 
@@ -481,9 +477,9 @@ sub MasterKeyChanged
   $self->KeyChanged();
 }
 
-sub GetMasterCols
+sub GetMasterCols($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   return ($self->{MasterColNames}, $self->{MasterColValues});
 }
-- 
2.0.0



More information about the wine-patches mailing list