Config-Model
view release on metacpan or search on metacpan
lib/Config/Model/BackendMgr.pm view on Meta::CPAN
#
# This file is part of Config-Model
#
# This software is Copyright (c) 2005-2022 by Dominique Dumont.
#
# This is free software, licensed under:
#
# The GNU Lesser General Public License, Version 2.1, February 1999
#
package Config::Model::BackendMgr 2.162;
use Mouse;
use strict;
use warnings;
use Carp;
use v5.20;
use Config::Model::Exception;
use Data::Dumper;
use Storable qw/dclone/;
use Scalar::Util qw/weaken reftype/;
use Log::Log4perl qw(get_logger :levels);
use Path::Tiny 0.070;
use feature qw/postderef signatures/;
no warnings qw/experimental::postderef experimental::signatures/;
my $logger = get_logger('BackendMgr');
my $user_logger = get_logger('User');
# one BackendMgr per file
has 'node' => (
is => 'ro',
isa => 'Config::Model::Node',
weak_ref => 1,
required => 1
);
has 'file_backup' => ( is => 'rw', isa => 'ArrayRef', default => sub { [] } );
has 'rw_config' => (
is => 'ro',
isa => 'HashRef',
required => 1
);
has 'backend_obj' => (
is => 'rw',
isa => 'Config::Model::Backend::Any',
lazy => 1 ,
builder => '_build_backend_obj',
);
sub _build_backend_obj {
my $self = shift;
my $backend = $self->rw_config->{backend};
$logger->warn("function parameter for a backend is deprecated. Please implement 'read' method in backend $backend")
if $self->rw_config->{function};
# try to load a specific Backend class
my $f = $self->rw_config->{function} || 'read';
my $c = $self->load_backend_class( $backend, $f );
no strict 'refs'; ## no critic (ProhibitNoStrict)
return $c->new(
node => $self->node,
name => $backend,
auto_create => $self->rw_config->{auto_create},
auto_delete => $self->rw_config->{auto_delete},
);
}
has support_annotation => (
is => 'ro',
isa => 'Bool',
default => 0,
);
with "Config::Model::Role::ComputeFunction";
with "Config::Model::Role::FileHandler";
( run in 0.495 second using v1.01-cache-2.11-cpan-39bf76dae61 )