- * ============LICENSE_END=========================================================\r
- */\r
-\r
-package org.openecomp.sdnc.sli.provider;\r
-\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-\r
-import org.openecomp.sdnc.sli.BreakNodeException;\r
-import org.openecomp.sdnc.sli.SvcLogicContext;\r
-import org.openecomp.sdnc.sli.SvcLogicException;\r
-import org.openecomp.sdnc.sli.SvcLogicExpression;\r
-import org.openecomp.sdnc.sli.SvcLogicNode;\r
-\r
-public class WhileNodeExecutor extends SvcLogicNodeExecutor {\r
-\r
- private static final Logger LOG = LoggerFactory.getLogger(WhileNodeExecutor.class);\r
-\r
- @Override\r
- public SvcLogicNode execute(SvcLogicServiceImpl svc, SvcLogicNode node, SvcLogicContext ctx) throws SvcLogicException {\r
-\r
- String testResult = evaluateNodeTest(node, ctx);\r
- SvcLogicExpression silentFailureExpr = node.getAttribute("do");\r
- String doWhile = SvcLogicExpressionResolver.evaluate(silentFailureExpr, node, ctx);\r
- if ("true".equals(doWhile)) {\r
- LOG.debug("While loop will execute once regardless of expression because do is set to true");\r
- }\r
-\r
- try {\r
- while ("true".equals(testResult) || "true".equals(doWhile)) {\r
- if (!"true".equals(doWhile)) {\r
- LOG.debug("Test expression (" + node.getAttribute("test") + ") evaluates to true, executing loop.");\r
- }\r
- int numOutcomes = node.getNumOutcomes() + 1;\r
- for (int i = 0; i < numOutcomes; i++) {\r
- SvcLogicNode nextNode = node.getOutcomeValue("" + (i + 1));\r
- if (nextNode != null) {\r
- while (nextNode != null) {\r
- nextNode = svc.executeNode(nextNode, ctx);\r
- }\r
- } else {\r
- if ("true".equals(doWhile)) {\r
- LOG.debug("Do executed, will only execute again if test expression is true.");\r
- doWhile = "false";\r
- }\r
- testResult = evaluateNodeTest(node, ctx);\r
- LOG.debug("test expression (" + node.getAttribute("test") + ") evaluates to " + testResult);\r
- }\r
- }\r
- }\r
- LOG.debug("testResult was " + testResult + " which is not equal to true, exiting while loop.");\r
- } catch (BreakNodeException e) {\r
- LOG.debug("WhileNodeExecutor caught break");\r
- }\r
- return (null);\r
- }\r
-\r
-}\r
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.sdnc.sli.provider;
+
+import org.openecomp.sdnc.sli.BreakNodeException;
+import org.openecomp.sdnc.sli.SvcLogicContext;
+import org.openecomp.sdnc.sli.SvcLogicException;
+import org.openecomp.sdnc.sli.SvcLogicExpression;
+import org.openecomp.sdnc.sli.SvcLogicNode;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class WhileNodeExecutor extends SvcLogicNodeExecutor {
+
+ private static final Logger LOG = LoggerFactory.getLogger(WhileNodeExecutor.class);
+
+ @Override
+ public SvcLogicNode execute(SvcLogicServiceImpl svc, SvcLogicNode node, SvcLogicContext ctx) throws SvcLogicException {
+
+ String testResult = evaluateNodeTest(node, ctx);
+ SvcLogicExpression silentFailureExpr = node.getAttribute("do");
+ String doWhile = SvcLogicExpressionResolver.evaluate(silentFailureExpr, node, ctx);
+ if ("true".equals(doWhile)) {
+ LOG.debug("While loop will execute once regardless of expression because do is set to true");
+ }
+
+ try {
+ while ("true".equals(testResult) || "true".equals(doWhile)) {
+ if (!"true".equals(doWhile)) {
+ LOG.debug("Test expression (" + node.getAttribute("test") + ") evaluates to true, executing loop.");
+ }
+ int numOutcomes = node.getNumOutcomes() + 1;
+ for (int i = 0; i < numOutcomes; i++) {
+ SvcLogicNode nextNode = node.getOutcomeValue("" + (i + 1));
+ if (nextNode != null) {
+ while (nextNode != null) {
+ nextNode = svc.executeNode(nextNode, ctx);
+ }
+ } else {
+ if ("true".equals(doWhile)) {
+ LOG.debug("Do executed, will only execute again if test expression is true.");
+ doWhile = "false";
+ }
+ testResult = evaluateNodeTest(node, ctx);
+ LOG.debug("test expression (" + node.getAttribute("test") + ") evaluates to " + testResult);
+ }
+ }
+ }
+ LOG.debug("testResult was " + testResult + " which is not equal to true, exiting while loop.");
+ } catch (BreakNodeException e) {
+ LOG.debug("WhileNodeExecutor caught break");
+ }
+ return (null);
+ }
+
+}