From c72c74b17405c2c8faa8c30bfb327500d2ea9aa4 Mon Sep 17 00:00:00 2001 From: Irina Peshinskaya Date: Fri, 29 Jun 2018 04:23:23 +0200 Subject: [PATCH] TT#37650 Force ngcp:collection entities to array Change-Id: I34955929871d7a8c0327ad2c252cddd68fcf16d7 --- lib/NGCP/Panel.pm | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) 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; + } + }; } }