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 2.194 seconds using v1.01-cache-2.11-cpan-56fb94df46f )