summaryrefslogtreecommitdiffstats
path: root/library/Director/IcingaConfig/AssignRenderer.php
diff options
context:
space:
mode:
Diffstat (limited to 'library/Director/IcingaConfig/AssignRenderer.php')
-rw-r--r--library/Director/IcingaConfig/AssignRenderer.php11
1 files changed, 9 insertions, 2 deletions
diff --git a/library/Director/IcingaConfig/AssignRenderer.php b/library/Director/IcingaConfig/AssignRenderer.php
index 6acbfee..495ad1e 100644
--- a/library/Director/IcingaConfig/AssignRenderer.php
+++ b/library/Director/IcingaConfig/AssignRenderer.php
@@ -2,6 +2,7 @@
namespace Icinga\Module\Director\IcingaConfig;
+use gipfl\Json\JsonDecodeException;
use gipfl\Json\JsonString;
use Icinga\Data\Filter\Filter;
use Icinga\Data\Filter\FilterAnd;
@@ -128,8 +129,14 @@ class AssignRenderer
}
$column = $filter->getColumn();
- $rawExpression = Json::decode($filter->getExpression());
- $expression = $this->renderExpressionValue($rawExpression);
+ try {
+ $rawExpression = JsonString::decode($filter->getExpression());
+ $expression = $this->renderExpressionValue($rawExpression);
+ } catch (JsonDecodeException $e) {
+ throw new InvalidArgumentException(
+ "Got invalid JSON in filter string: $column" . $filter->getSign() . $filter->getExpression()
+ );
+ }
if (is_array($rawExpression) && $filter instanceof FilterMatch) {
return $this->renderInArray($column, $expression);