/** * Scans for entries of type STRING containing expression formatted strings. This is to trap where parsers * call ModelNode.set("${A}") when ModelNode.setExpression("${A}) should have been used * * @param model the model to check */ public static void scanForExpressionFormattedStrings(ModelNode model) { if (model.getType().equals(ModelType.STRING)) { if (EXPRESSION_PATTERN.matcher(model.asString()).matches()) { Assert.fail("ModelNode with type==STRING contains an expression formatted string: " + model.asString()); } } else if (model.getType() == ModelType.OBJECT) { for (String key : model.keys()) { final ModelNode child = model.get(key); scanForExpressionFormattedStrings(child); } } else if (model.getType() == ModelType.LIST) { List<ModelNode> list = model.asList(); for (ModelNode entry : list) { scanForExpressionFormattedStrings(entry); } } else if (model.getType() == ModelType.PROPERTY) { Property prop = model.asProperty(); scanForExpressionFormattedStrings(prop.getValue()); } }
ModelNode model = kernelServices.readWholeModel(); model = removeForIntellij(model); ModelTestUtils.scanForExpressionFormattedStrings(model);
ModelNode model = kernelServices.readWholeModel(); model = removeForIntellij(model); ModelTestUtils.scanForExpressionFormattedStrings(model);
ModelTestUtils.scanForExpressionFormattedStrings(modelA);
ModelTestUtils.scanForExpressionFormattedStrings(modelA);
ModelTestUtils.scanForExpressionFormattedStrings(modelA);