App-Oozie
view release on metacpan or search on metacpan
lib/App/Oozie/Role/Validate/XML.pm view on Meta::CPAN
package App::Oozie::Role::Validate::XML;
use 5.014;
use strict;
use warnings;
our $VERSION = '0.020'; # VERSION
use namespace::autoclean -except => [qw/_options_data _options_config/];
use App::Oozie::Constants qw( EMPTY_STRING );
use Moo::Role;
sub validate_xml_property {
my $self = shift;
my $validation_errors_ref = shift;
my $total_errors_ref = shift;
my $prop = shift || return;
my $type = shift || EMPTY_STRING;
my $logger = $self->logger;
my $verbose = $self->verbose;
$type = "$type " if $type;
for my $param ( @{ $prop } ) {
my($name, $value) = @{ $param }{ qw/
name value
/ };
if ( $verbose ) {
$logger->debug(
sprintf 'Validating property `%s`: `%s`',
$name,
$value // '[undef]',
);
}
# A special case in global template injection
if ( $name eq 'do.not.remove' ) {
$logger->debug(
sprintf 'Skipping special property `%s`',
$name,
) if $verbose;
next;
}
my $msg;
if ( $value ) {
# Check the possible free form XML problem.
$value =~ s{ \A \s+ }{}xmsg;
$value =~ s{ \s+ \z }{}xmsg;
if ( $value ) {
if ( $verbose ) {
$logger->debug(
sprintf 'The property `%s` has a value',
$name,
);
}
next;
}
else {
if ( $verbose ) {
$logger->debug(
sprintf 'The property `%s` was set to empty data',
$name,
);
( run in 0.456 second using v1.01-cache-2.11-cpan-56fb94df46f )