diff options
author | 2017-04-13 11:25:54 -0700 | |
---|---|---|
committer | 2017-04-13 12:13:52 -0700 | |
commit | 0ca979112add1fe6c2771676cfb36e90e6410174 (patch) | |
tree | f8cbb1fb248176990be131e2c0f30e5500cfadd3 /sli/common/src/main/java/org/openecomp/sdnc/sli/SvcLogicBinaryExpression.java | |
parent | b6ed3bfa8f64a4850392f47daf46846fec51e36d (diff) |
Fix operator associativity in SLI debug log
SvcLogicBinaryExpression.asParsedExpr() for debug
logging was rendering expressions as if the operators
were right associative, which is incorrect.
This change fixes the method to render the operators
as being left associative.
Change-Id: Ief22c4ee24d48ed333b1bff54b84ed7dd7940779
Signed-off-by: Gary Wu <gary.i.wu@huawei.com>
Diffstat (limited to 'sli/common/src/main/java/org/openecomp/sdnc/sli/SvcLogicBinaryExpression.java')
-rw-r--r-- | sli/common/src/main/java/org/openecomp/sdnc/sli/SvcLogicBinaryExpression.java | 62 |
1 files changed, 35 insertions, 27 deletions
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()); - } } |