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