diff options
Diffstat (limited to 'sli/common')
3 files changed, 44 insertions, 27 deletions
diff --git a/sli/common/src/main/java/org/openecomp/sdnc/sli/SvcLogicAtom.java b/sli/common/src/main/java/org/openecomp/sdnc/sli/SvcLogicAtom.java index e7a8715..9ac6489 100644 --- a/sli/common/src/main/java/org/openecomp/sdnc/sli/SvcLogicAtom.java +++ b/sli/common/src/main/java/org/openecomp/sdnc/sli/SvcLogicAtom.java @@ -137,6 +137,11 @@ public class SvcLogicAtom extends SvcLogicExpression { public String asParsedExpr() { + // simplify debugging output for NUMBER type + if (atomType == AtomType.NUMBER) { + return atom; + } + StringBuffer sbuff = new StringBuffer(); sbuff.append("(atom"); diff --git a/sli/common/src/main/java/org/openecomp/sdnc/sli/SvcLogicBinaryExpression.java b/sli/common/src/main/java/org/openecomp/sdnc/sli/SvcLogicBinaryExpression.java index 9b35006..1d780d7 100644 --- a/sli/common/src/main/java/org/openecomp/sdnc/sli/SvcLogicBinaryExpression.java +++ b/sli/common/src/main/java/org/openecomp/sdnc/sli/SvcLogicBinaryExpression.java @@ -102,40 +102,48 @@ public class SvcLogicBinaryExpression extends SvcLogicExpression { sbuff.append(" "); sbuff.append(operators.get(i)); sbuff.append(" "); - sbuff.append(operands.get(i+1).toString()); + if (i + 1 < operands.size()) { + sbuff.append(operands.get(i + 1).toString()); + } else { + // expression incomplete; operand not bound yet + sbuff.append("?"); + } } return(sbuff.toString()); } - public String asParsedExpr() - { - - List<SvcLogicExpression>operands = getOperands(); - StringBuffer sbuff = new StringBuffer(); - StringBuffer closeParens = new StringBuffer(); - int i = 0; - for (OperatorType operator : operators) - { - sbuff.append("("); - sbuff.append(operator.getText()); - sbuff.append(" "); - sbuff.append(operands.get(i++).asParsedExpr()); - closeParens.append(")"); - } - sbuff.append(" "); - if (i < operands.size()) - { - sbuff.append(operands.get(i).asParsedExpr()); - } - else - { - sbuff.append("__MISSING_OPERAND__"); + public String asParsedExpr() { + + List<SvcLogicExpression> operands = getOperands(); + + if (operators.isEmpty()) { + return operands.get(0).asParsedExpr(); + } else { + StringBuffer sbuff = new StringBuffer(); + // operators in reverse order for left associativity + for (int i = operators.size() - 1; i >= 0; --i) { + sbuff.append("("); + sbuff.append(operators.get(i).getText()); + sbuff.append(" "); + } + for (int i = 0; i < operators.size() + 1; ++i) { + if (i < operands.size()) { + sbuff.append(operands.get(i).asParsedExpr()); + } else { + // expression incomplete; operand not bound yet + sbuff.append("?"); + } + if (i != 0) { + sbuff.append(")"); + } + if (i < operators.size()) { + sbuff.append(" "); + } + } + return sbuff.toString(); } - sbuff.append(closeParens.toString()); - return(sbuff.toString()); - } } diff --git a/sli/common/src/test/resources/expression.tests b/sli/common/src/test/resources/expression.tests index bc92495..c352e9b 100755 --- a/sli/common/src/test/resources/expression.tests +++ b/sli/common/src/test/resources/expression.tests @@ -13,3 +13,7 @@ length($network_segment[0].provider-physical-network) >= 5 substr($network_segment[0].provider-physical-network,0,5) == 'dvspg' length($network_segment[0].provider-physical-network) >= 5 and substr($network_segment[0].provider-physical-network,0,5) == 'dvspg' (length($network_segment[0].provider-physical-network) >= 5) and (substr($network_segment[0].provider-physical-network,0,5) == 'dvspg') +4-2-2 +1+1 +1 +1+2*3-4 |