From d31f97e05e309b1f44628ce2ef39ba28bce8ecc3 Mon Sep 17 00:00:00 2001 From: Pedro Melo Date: Mon, 13 Aug 2012 12:25:27 +0100 Subject: [PATCH] Storage role splitted into storage and storage_class Signed-off-by: Pedro Melo --- lib/Config/Connie/Storage.pm | 13 +++++++++++-- t/tlib/T/Storage/Config.pm | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/Config/Connie/Storage.pm b/lib/Config/Connie/Storage.pm index 93a59d1..2b0494c 100644 --- a/lib/Config/Connie/Storage.pm +++ b/lib/Config/Connie/Storage.pm @@ -1,10 +1,19 @@ package Config::Connie::Storage; use Moo::Role; +use Carp (); use namespace::autoclean; -requires 'build_storage'; +has 'storage' => (is => 'lazy', builder => 'build_storage', handles => ['check_for_updates']); +has 'storage_class' => (is => 'lazy', builder => 'build_storage_class'); + +sub build_storage { + my ($self) = @_; + + return $self->storage_class->new(instance => $self); +} + +sub build_storage_class { Carp::confess "Class '" . ref(shift) . "' requires a build_storage_class method" } -has 'storage' => (is => 'ro', builder => 'build_storage', handles => ['check_for_updates']); 1; diff --git a/t/tlib/T/Storage/Config.pm b/t/tlib/T/Storage/Config.pm index 43d9ea1..09aa442 100644 --- a/t/tlib/T/Storage/Config.pm +++ b/t/tlib/T/Storage/Config.pm @@ -14,6 +14,6 @@ with sub default_config_id {'defaults_id'} -sub build_storage { Config::Connie::Storage::Local->new(instance => shift) } +sub build_storage_class {'Config::Connie::Storage::Local'} 1;