use Hash::Merge to correctly handle update, This might actually move to
authorDobrica Pavlinusic <dpavlin@rot13.org>
Fri, 26 Oct 2007 21:41:42 +0000 (21:41 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Fri, 26 Oct 2007 21:41:42 +0000 (21:41 +0000)
Store, but this way plugins get only new state...

git-svn-id: https://perl-cwmp.googlecode.com/svn/branches/store-pluggable@138 836a5e1a-633d-0410-964b-294494ad4392

Makefile.PL
lib/CWMP/Store/YAML.pm

index 2901ef7..80aaafd 100644 (file)
@@ -19,6 +19,8 @@ requires      'DBM::Deep';
 requires       'Getopt::Long';
 requires       'Term::Shelly'  =>      '0.03';
 requires       'Module::Pluggable';
 requires       'Getopt::Long';
 requires       'Term::Shelly'  =>      '0.03';
 requires       'Module::Pluggable';
+requires       'YAML';
+requires       'Hash::Merge';
 
 build_requires 'Test::More';
 
 
 build_requires 'Test::More';
 
index 9805a50..160cbe8 100644 (file)
@@ -6,6 +6,7 @@ use warnings;
 
 use Data::Dump qw/dump/;
 use YAML qw/LoadFile DumpFile/;
 
 use Data::Dump qw/dump/;
 use YAML qw/LoadFile DumpFile/;
+use Hash::Merge qw/merge/;
 
 =head1 NAME
 
 
 =head1 NAME
 
@@ -44,7 +45,13 @@ sub update_uid_state {
 
        my $file = "$dir/$uid.yml";
 
 
        my $file = "$dir/$uid.yml";
 
-       DumpFile( $file, $state ) || die "can't write $file: $!";
+       my $old_state = $self->get_state( $uid );
+
+       my $combined = merge( $state, $old_state );
+
+#      warn "## ",dump( $old_state, $state, $combined );
+
+       DumpFile( $file, $combined ) || die "can't write $file: $!";
 
 }
 
 
 }