| Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
| ExpressionEvaluatorService | 
  | 
  | 1.0;1 | 
| 1 |  /* | |
| 2 |   * Copyright 2011 The Kuali Foundation Licensed under the Educational Community | |
| 3 |   * License, Version 1.0 (the "License"); you may not use this file except in | |
| 4 |   * compliance with the License. You may obtain a copy of the License at | |
| 5 |   * http://www.opensource.org/licenses/ecl1.php Unless required by applicable law | |
| 6 |   * or agreed to in writing, software distributed under the License is | |
| 7 |   * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| 8 |   * KIND, either express or implied. See the License for the specific language | |
| 9 |   * governing permissions and limitations under the License. | |
| 10 |   */ | |
| 11 |  package org.kuali.rice.kns.uif.service; | |
| 12 | ||
| 13 |  import java.util.Map; | |
| 14 | ||
| 15 |  /** | |
| 16 |   * Provides evaluation of expression language statements against a given context | |
| 17 |   *  | |
| 18 |   * @author Kuali Rice Team (rice.collab@kuali.org) | |
| 19 |   */ | |
| 20 | public interface ExpressionEvaluatorService {  | |
| 21 | ||
| 22 |      /** | |
| 23 |       * Evaluates any el expressions that are found as a string property value | |
| 24 |       * for the object | |
| 25 |       *  | |
| 26 |       * <p> | |
| 27 |       * Using reflection the properties for the object are retrieved and if of | |
| 28 |       * <code>String</code> type the corresponding value is retrieved. If the | |
| 29 |       * value is not empty and contains the el placeholder see | |
| 30 |       * {@link #containsElPlaceholder(String)} then the expression is evaluated | |
| 31 |       * using the given context object and parameters. The evaluated string is | |
| 32 |       * then set as the new property value, or in the case of a template | |
| 33 |       * (expression contained within a literal string), the expression part is | |
| 34 |       * replaced in the property value. | |
| 35 |       * </p> | |
| 36 |       *  | |
| 37 |       * <p> | |
| 38 |       * In addition to evaluating any property expressions, any configured | |
| 39 |       * <code>PropertyReplacer</code> for the object are also evaluated and if a | |
| 40 |       * match occurs those property replacements are made | |
| 41 |       * </p> | |
| 42 |       *  | |
| 43 |       * @param object | |
| 44 |       *            - object whose properties should be checked for expressions | |
| 45 |       *            and evaluated | |
| 46 |       * @param contextObject | |
| 47 |       *            - context object for the expression evaluations | |
| 48 |       * @param evaluationParameters | |
| 49 |       *            - map of parameters that may appear in expressions, the map | |
| 50 |       *            key gives the parameter name that may appear in the | |
| 51 |       *            expression, and the map value is the object that expression | |
| 52 |       *            should evaluate against when that name is found | |
| 53 |       */ | |
| 54 | public void evaluateObjectProperties(Object object, Object contextObject, Map<String, Object> evaluationParameters);  | |
| 55 | ||
| 56 |      /** | |
| 57 |       * Evaluates the given expression template string against the context object | |
| 58 |       * and map of parameters | |
| 59 |       *  | |
| 60 |       * <p> | |
| 61 |       * If the template string contains one or more el placeholders (see | |
| 62 |       * {@link #containsElPlaceholder(String)}), the expression contained within | |
| 63 |       * the placeholder will be evaluated and the corresponding value will be | |
| 64 |       * substituted back into the property value where the placeholder occurred. | |
| 65 |       * If no placeholders are found, the string will be returned unchanged | |
| 66 |       * </p> | |
| 67 |       *  | |
| 68 |       * @param contextObject | |
| 69 |       *            - context object for the expression evaluations | |
| 70 |       * @param evaluationParameters | |
| 71 |       *            - map of parameters that may appear in expressions, the map | |
| 72 |       *            key gives the parameter name that may appear in the | |
| 73 |       *            expression, and the map value is the object that expression | |
| 74 |       *            should evaluate against when that name is found | |
| 75 |       * @param expressionTemplate | |
| 76 |       *            - string that should be evaluated for el expressions | |
| 77 |       * @return String formed by replacing any el expressions in the original | |
| 78 |       *         expression template with their corresponding evaluation results | |
| 79 |       */ | |
| 80 |      public String evaluateExpressionTemplate(Object contextObject, Map<String, Object> evaluationParameters, | |
| 81 | String expressionTemplate);  | |
| 82 | ||
| 83 |      /** | |
| 84 |       * Evaluates the given el expression against the content object and | |
| 85 |       * parameters, and returns the result of the evaluation | |
| 86 |       *  | |
| 87 |       * <p> | |
| 88 |       * The given expression string is assumed to be one el expression and should | |
| 89 |       * not contain the el placeholders. The returned result depends on the | |
| 90 |       * evaluation and what type is returns, for instance a boolean will be | |
| 91 |       * return for a boolean expression, or a string for string expression | |
| 92 |       * </p> | |
| 93 |       *  | |
| 94 |       * @param contextObject | |
| 95 |       *            - context object for the expression evaluations | |
| 96 |       * @param evaluationParameters | |
| 97 |       *            - map of parameters that may appear in expressions, the map | |
| 98 |       *            key gives the parameter name that may appear in the | |
| 99 |       *            expression, and the map value is the object that expression | |
| 100 |       *            should evaluate against when that name is found | |
| 101 |       * @param expression | |
| 102 |       *            - el expression to evaluate | |
| 103 |       * @return Object result of the expression evaluation | |
| 104 |       */ | |
| 105 |      public Object evaluateExpression(Object contextObject, Map<String, Object> evaluationParameters, String expression); | |
| 106 | ||
| 107 |      /** | |
| 108 |       * Indicates whether or not the given string contains the el placholder | |
| 109 |       * (begin and end delimiters) | |
| 110 |       *  | |
| 111 |       * @param value | |
| 112 |       *            - String to check for contained placeholders | |
| 113 |       * @return boolean true if the string contains one or more placeholders, | |
| 114 |       *         false if it contains none | |
| 115 |       * @see org.kuali.rice.kns.uif.UifConstants.EL_PLACEHOLDER_PREFIX | |
| 116 |       * @see org.kuali.rice.kns.uif.UifConstants.EL_PLACEHOLDER_SUFFIX | |
| 117 |       */ | |
| 118 | public boolean containsElPlaceholder(String value);  | |
| 119 | }  |