--- nfo/perl/libs/Data/Storage/Container.pm 2002/12/01 22:18:28 1.3 +++ nfo/perl/libs/Data/Storage/Container.pm 2003/01/19 02:39:57 1.5 @@ -1,8 +1,15 @@ ################################################ # -# $Id: Container.pm,v 1.3 2002/12/01 22:18:28 joko Exp $ +# $Id: Container.pm,v 1.5 2003/01/19 02:39:57 joko Exp $ # # $Log: Container.pm,v $ +# Revision 1.5 2003/01/19 02:39:57 joko +# + moved 'deep_copy' from module 'libp' to module 'Data::Transform::Deep' +# + preserved order for hashes '$self->{config}' and '$self->{locator}' by using Tie::IxHash +# +# Revision 1.4 2002/12/04 07:38:07 jonen +# + deep copy +# # Revision 1.3 2002/12/01 22:18:28 joko # - no interactive implicit deploy # + only test integrity if storage available @@ -28,8 +35,12 @@ # get logger instance my $logger = Log::Dispatch::Config->instance; -use libp qw( deep_copy ); + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - main +use Tie::IxHash; use Data::Dumper; + +use Data::Transform::Deep qw( deep_copy ); use Data::Storage; #use Data::Storage::Locator; @@ -43,7 +54,14 @@ $logger->debug( __PACKAGE__ . "->new( @args )" ); my $self = { @_ }; - return bless $self, $class; + bless $self, $class; + + # preserve order of configuration variables + #$self->{config} = {}; + tie %{$self->{config}}, 'Tie::IxHash'; + tie %{$self->{locator}}, 'Tie::IxHash'; + + return $self; } sub addConfig { @@ -91,8 +109,9 @@ $cfg_locator->{name} = $name; # merge in specific settings - foreach (keys %$db_config) { - $cfg_locator->{$_} = $db_config->{$_}; + my $specific = deep_copy($db_config); + foreach (keys %$specific) { + $cfg_locator->{$_} = $specific->{$_}; } # HACK: transfer dsn from main to dbi settings @@ -112,6 +131,7 @@ sub initLocators { my $self = shift; foreach (keys %{$self->{config}}) { + #print $_, "\n"; $self->initLocator($_, $self->{config}->{$_}) if !/^_/; } #print "locs: ", Dumper($self->{locator}); @@ -198,6 +218,7 @@ sub initStorages { my $self = shift; foreach (keys %{$self->{locator}}) { + #print $_, "\n"; $self->initStorage($_); } }