aboutsummaryrefslogtreecommitdiffstats
path: root/sli/common/src/main/java/org/openecomp/sdnc/sli/SvcLogicBinaryExpression.java
diff options
context:
space:
mode:
authorGary Wu <gary.i.wu@huawei.com>2017-04-13 11:25:54 -0700
committerGary Wu <gary.i.wu@huawei.com>2017-04-13 12:13:52 -0700
commit0ca979112add1fe6c2771676cfb36e90e6410174 (patch)
treef8cbb1fb248176990be131e2c0f30e5500cfadd3 /sli/common/src/main/java/org/openecomp/sdnc/sli/SvcLogicBinaryExpression.java
parentb6ed3bfa8f64a4850392f47daf46846fec51e36d (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.java62
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());
-
}
}