diff options
3 files changed, 56 insertions, 58 deletions
diff --git a/sli/provider-base/src/main/java/org/onap/ccsdk/sli/core/sli/provider/base/AbstractSvcLogicNodeExecutor.java b/sli/provider-base/src/main/java/org/onap/ccsdk/sli/core/sli/provider/base/AbstractSvcLogicNodeExecutor.java index 9bab745b..031beba2 100644 --- a/sli/provider-base/src/main/java/org/onap/ccsdk/sli/core/sli/provider/base/AbstractSvcLogicNodeExecutor.java +++ b/sli/provider-base/src/main/java/org/onap/ccsdk/sli/core/sli/provider/base/AbstractSvcLogicNodeExecutor.java @@ -42,8 +42,8 @@ public abstract class AbstractSvcLogicNodeExecutor { public abstract SvcLogicNode execute(SvcLogicServiceBase svc, SvcLogicNode node, SvcLogicContext ctx) throws SvcLogicException; private static final Logger LOG = LoggerFactory.getLogger(AbstractSvcLogicNodeExecutor.class); - protected static final String PARAMETER_DEBUG_PATTERN = "Parameter: {} resolves to: {} which came from the expression: {}"; - protected static final String SETTING_DEBUG_PATTERN = "Setting context attribute: {} to: {} which came from the expression: {}"; + protected static final String PARAMETER_DEBUG_PATTERN = "Parameter: ({}) resolves to: ({}) which came from the expression: ({})"; + protected static final String SETTING_DEBUG_PATTERN = "Setting context attribute: ({}) to: ({}) which came from the expression: ({})"; protected String evaluateNodeTest(SvcLogicNode node, SvcLogicContext ctx) throws SvcLogicException { @@ -97,7 +97,7 @@ public abstract class AbstractSvcLogicNodeExecutor { } return (nextNode); } - + protected Map<String, String> getResolvedParameters(SvcLogicNode node, SvcLogicContext ctx) throws SvcLogicException{ Map<String, String> parmMap = new HashMap<>(); @@ -108,13 +108,14 @@ public abstract class AbstractSvcLogicNodeExecutor { .iterator(); iter.hasNext();) { Map.Entry<String, SvcLogicExpression> curEnt = iter.next(); String curName = curEnt.getKey(); + SvcLogicExpression curExpr = curEnt.getValue(); String curExprValue = SvcLogicExpressionResolver.evaluate(curExpr, node, ctx); - LOG.trace(PARAMETER_DEBUG_PATTERN, curName, curExprValue, curExpr.toString()); - parmMap.put(curName,curExprValue); + LOG.trace(PARAMETER_DEBUG_PATTERN, curName, curExprValue, curExpr); + parmMap.put(curName, curExprValue); } - + return parmMap; } - + } diff --git a/sli/provider-base/src/main/java/org/onap/ccsdk/sli/core/sli/provider/base/SetNodeExecutor.java b/sli/provider-base/src/main/java/org/onap/ccsdk/sli/core/sli/provider/base/SetNodeExecutor.java index 89074362..7e07d29b 100644 --- a/sli/provider-base/src/main/java/org/onap/ccsdk/sli/core/sli/provider/base/SetNodeExecutor.java +++ b/sli/provider-base/src/main/java/org/onap/ccsdk/sli/core/sli/provider/base/SetNodeExecutor.java @@ -167,9 +167,8 @@ public class SetNodeExecutor extends AbstractSvcLogicNodeExecutor { } if (setValue) { String curValue = SvcLogicExpressionResolver.evaluate(curEnt.getValue(), node, ctx); - if (LOG.isDebugEnabled()) { - LOG.debug(SETTING_DEBUG_PATTERN, lhsVarName, curValue, curEnt.getValue().toString()); + LOG.debug(SETTING_DEBUG_PATTERN, lhsVarName, curValue, curEnt.getValue()); } ctx.setAttribute(lhsVarName, curValue); } diff --git a/sli/provider-base/src/main/java/org/onap/ccsdk/sli/core/sli/provider/base/SvcLogicExpressionResolver.java b/sli/provider-base/src/main/java/org/onap/ccsdk/sli/core/sli/provider/base/SvcLogicExpressionResolver.java index e3c0ef20..a3507947 100644 --- a/sli/provider-base/src/main/java/org/onap/ccsdk/sli/core/sli/provider/base/SvcLogicExpressionResolver.java +++ b/sli/provider-base/src/main/java/org/onap/ccsdk/sli/core/sli/provider/base/SvcLogicExpressionResolver.java @@ -10,9 +10,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -44,7 +44,7 @@ public class SvcLogicExpressionResolver { private static final Logger LOG = LoggerFactory .getLogger(SvcLogicExpressionResolver.class); private static final String INVALID_EXPRESSION_MSG= "Invalid expression ("; - private static final String EXPRESSION_DEBUG_PATTERN = "Expression: {} resolves to {}: which has the value {}"; + private static final String EXPRESSION_DEBUG_PATTERN = "Expression: ({}) resolves to: (${}) which has the value: ({})"; public static String evaluate(SvcLogicExpression expr, SvcLogicNode node, SvcLogicContext ctx) throws SvcLogicException { @@ -62,30 +62,28 @@ public class SvcLogicExpressionResolver { return (atom.toString()); case CONTEXT_VAR: case IDENTIFIER: - + String varName = resolveVariableName(atom, node, ctx); - + if (atomType == AtomType.CONTEXT_VAR) { - String varValue = ctx.getAttribute(varName); - if (varValue == null) { - LOG.trace("Context variable $"+varName+" unset - treating as empty string"); + LOG.trace("Context variable: ($"+varName+") unset - treating as empty string"); varValue = ""; } - LOG.trace(EXPRESSION_DEBUG_PATTERN,expr.toString(),varName,varValue); + LOG.trace(EXPRESSION_DEBUG_PATTERN, expr, varName, varValue); return (varValue); } + SvcLogicExpression parm = node.getParameter(varName); - if (parm != null) { + if (parm != null) { String value = evaluate(parm, node, ctx); - LOG.trace(EXPRESSION_DEBUG_PATTERN,expr.toString(),varName,value); + LOG.trace(EXPRESSION_DEBUG_PATTERN, expr, varName, value); return value; } - else - { - LOG.trace(EXPRESSION_DEBUG_PATTERN,expr.toString(),varName,varName); + else { + LOG.trace(EXPRESSION_DEBUG_PATTERN, expr, varName, varName); return(varName); } default: @@ -152,7 +150,7 @@ public class SvcLogicExpressionResolver { if (operands.size() != (operators.size()+1)) { throw new SvcLogicException(INVALID_EXPRESSION_MSG+binExpr+")"); - } + } String retval = evaluate(operands.get(0), node, ctx); String retsval = retval; long retlval = 0; @@ -161,7 +159,7 @@ public class SvcLogicExpressionResolver { int i = 1; try { - + if ((retval.length() > 0) && StringUtils.isNumeric(retval)) { retlval = Long.parseLong(retval); @@ -202,7 +200,7 @@ public class SvcLogicExpressionResolver { { throw new SvcLogicException("Illegal value in arithmetic expression", e1); } - + if (valueIsLong) { return("" + retlval); @@ -211,33 +209,33 @@ public class SvcLogicExpressionResolver { { return(retsval); } - + } - + private static String evalCompareExpression(SvcLogicBinaryExpression expr, SvcLogicNode node, SvcLogicContext ctx) throws SvcLogicException { List<OperatorType> operators = expr.getOperators(); List<SvcLogicExpression> operands = expr.getOperands(); - + if ((operators.size() != 1) || (operands.size() != 2)) { throw new SvcLogicException ("Invalid comparison expression : "+expr); } - + OperatorType operator = operators.get(0); String op1Value = evaluate(operands.get(0), node, ctx); String op2Value = evaluate(operands.get(1), node, ctx); - + if ((StringUtils.isNotEmpty(op1Value) && StringUtils.isNumeric(op1Value) && StringUtils.isNotEmpty(op2Value) && StringUtils.isNumeric(op2Value))) { try { double op1dbl = Double.parseDouble(op1Value); double op2dbl = Double.parseDouble(op2Value); - + switch(operator) { case equalOp: @@ -263,9 +261,9 @@ public class SvcLogicExpressionResolver { } else { - + int compResult = 0; - + if (op1Value == null) { compResult = -1; } else if (op2Value == null ) { @@ -273,7 +271,7 @@ public class SvcLogicExpressionResolver { } else { compResult = op1Value.compareToIgnoreCase(op2Value); } - + switch(operator) { case equalOp: @@ -292,21 +290,21 @@ public class SvcLogicExpressionResolver { return(null); } } - + } - + private static String evalLogicExpression(SvcLogicBinaryExpression expr, SvcLogicNode node, SvcLogicContext ctx) throws SvcLogicException { boolean retval; - + List<SvcLogicExpression> operands = expr.getOperands(); List<OperatorType> operators = expr.getOperators(); - + if (operands.size() != (operators.size()+1)) { throw new SvcLogicException(INVALID_EXPRESSION_MSG+expr+")"); } - + try { retval = Boolean.parseBoolean(evaluate(operands.get(0), node, ctx)); @@ -322,26 +320,26 @@ public class SvcLogicExpressionResolver { retval = retval || Boolean.parseBoolean(evaluate(operands.get(i++), node, ctx)); } - + } } catch (Exception e) { throw new SvcLogicException(INVALID_EXPRESSION_MSG+expr+")"); } - - + + return(Boolean.toString(retval)); } - + private static String evalFunctionCall(SvcLogicFunctionCall func, SvcLogicNode node, SvcLogicContext ctx) throws SvcLogicException { String funcName = func.getFunctionName(); List<SvcLogicExpression> operands = func.getOperands(); - + if ("length".equalsIgnoreCase(funcName)) { - + if (operands.size() == 1) { String opValue = evaluate(operands.get(0), node, ctx); @@ -359,12 +357,12 @@ public class SvcLogicExpressionResolver { String op1Value = evaluate(operands.get(0), node, ctx); String op2Value = evaluate(operands.get(1), node, ctx); String op3Value = evaluate(operands.get(2), node, ctx); - + if (!StringUtils.isNumeric(op2Value) || !StringUtils.isNumeric(op3Value)) { throw new SvcLogicException("Invalid arguments to substr() function"); } - + try { return(op1Value.substring(Integer.parseInt(op2Value), Integer.parseInt(op3Value))); @@ -379,7 +377,7 @@ public class SvcLogicExpressionResolver { throw new SvcLogicException("Invalid call to substr() function"); } - + } else if ("toUpperCase".equalsIgnoreCase(funcName)) { @@ -417,7 +415,7 @@ public class SvcLogicExpressionResolver { int fromBase = 10; int toBase = 10; String srcString = ""; - + if (operands.size() == 2) { fromBase = 10; @@ -431,7 +429,7 @@ public class SvcLogicExpressionResolver { } else { throw new SvcLogicException("Invalid call to convertBase() function"); } - + long srcValue = Long.parseLong(srcString, fromBase); return(Long.toString(srcValue, toBase)); } @@ -439,16 +437,16 @@ public class SvcLogicExpressionResolver { { throw new SvcLogicException("Unrecognized function ("+funcName+")"); } - + } - + public static String evaluateAsKey(SvcLogicExpression expr, SvcLogicNode node, SvcLogicContext ctx) throws SvcLogicException { if (expr == null) { return (null); } - + if (expr instanceof SvcLogicAtom) { SvcLogicAtom atom = (SvcLogicAtom) expr; @@ -478,7 +476,7 @@ public class SvcLogicExpressionResolver { varNameBuff.append("["); varNameBuff.append(evaluate(vterm.getSubscript(), node, ctx)); varNameBuff.append("]"); - + } } else @@ -502,7 +500,7 @@ public class SvcLogicExpressionResolver { { return("'"+ctxValue+"'"); } - + default: return(null); } @@ -570,11 +568,11 @@ public class SvcLogicExpressionResolver { throw new SvcLogicException("Unrecognized expression type ["+expr+"]"); } } - + public static String resolveVariableName(SvcLogicExpression atom, SvcLogicNode node, SvcLogicContext ctx) throws SvcLogicException { StringBuffer varNameBuff = new StringBuffer(); - + boolean needDot = false; for (SvcLogicExpression term : atom.getOperands()) { |