diff --git a/lib/NGCP/Panel.pm b/lib/NGCP/Panel.pm index 3ecc2c9015..2f82371449 100644 --- a/lib/NGCP/Panel.pm +++ b/lib/NGCP/Panel.pm @@ -260,9 +260,25 @@ __PACKAGE__->log(Log::Log4perl::Catalyst->new($logger_config)); # configure Data::HAL depending on our config { my $panel_config = get_panel_config; - if ($panel_config->{appearance}{api_embedded_forcearray}) { + if ($panel_config->{appearance}{api_embedded_forcearray} || $panel_config->{appearance}{api_links_forcearray}) { require Data::HAL; - $Data::HAL::__forcearray_underneath = {embedded => 1}; + *{Data::HAL::forcearray_policy} = sub { + my ($self, $root, $property_type, $relation, $property) = @_; + my $embedded = $root->embedded ? $root->embedded->[0] : undef; + if ($embedded + && ( ( $property_type eq 'links' && $panel_config->{appearance}{api_links_forcearray} ) + || ( $property_type eq 'embedded' && $panel_config->{appearance}{api_embedded_forcearray}) ) + && $relation =~/^ngcp:[a-z0-9]+$/ + ) { + return 1; + } + if (!$embedded + && ( ( $property_type eq 'links' && $panel_config->{appearance}{api_links_forcearray} ) ) + && $relation =~/^ngcp:[a-z0-9]+$/ + ) { + return 1; + } + }; } }