diff --git a/src/main/perl/CCfg.pm b/src/main/perl/CCfg.pm index de634ad6..ca5763f9 100755 --- a/src/main/perl/CCfg.pm +++ b/src/main/perl/CCfg.pm @@ -60,6 +60,7 @@ Readonly::Hash my %DEFAULT_CFG => { "debug" => undef, "force" => undef, "get_timeout" => 30, + "json_typed" => 0, "keep_old" => 2, "key_file" => undef, "lock_retries" => 3, diff --git a/src/main/perl/Fetch.pm b/src/main/perl/Fetch.pm index 80ef3198..964805dd 100644 --- a/src/main/perl/Fetch.pm +++ b/src/main/perl/Fetch.pm @@ -478,7 +478,13 @@ sub choose_interpreter my $tree; if ($self->{PROFILE_URL} =~ m{json(?:\.gz)?$}) { $tree = decode_json($profile); - return ('EDG::WP4::CCM::JSONProfileSimple', ['profile', $tree]); + my $module; + if ($self->{JSON_TYPED}) { + $module = 'EDG::WP4::CCM::JSONProfileTyped'; + } else { + $module = 'EDG::WP4::CCM::JSONProfileSimple'; + } + return ($module, ['profile', $tree]); } my $xmlParser = new XML::Parser(Style => 'Tree'); diff --git a/src/test/perl/test-ccfg.t b/src/test/perl/test-ccfg.t index 1bfb75d7..4b224107 100755 --- a/src/test/perl/test-ccfg.t +++ b/src/test/perl/test-ccfg.t @@ -102,7 +102,7 @@ while (my ($k, $v) = each %expected) { # Hard test for possible values (sorted) is_deeply(\@CFG_KEYS, [qw(base_url ca_dir ca_file cache_root cert_file - context dbformat debug force get_timeout keep_old + context dbformat debug force get_timeout json_typed keep_old key_file lock_retries lock_wait preprocessor profile profile_failover purge_time retrieve_retries retrieve_wait trust world_readable )], "CFG_KEYS exports all possible configuration keys");