public void SetObserverParameters( IList<ExprNode> parameters, MatchedEventConvertorForge convertor, ExprValidationContext validationContext) { ObserverParameterUtil.ValidateNoNamedParameters(NAME, parameters); var errorMessage = NAME + " requires a single numeric or time period parameter"; if (parameters.Count != 1) { throw new ObserverParameterException(errorMessage); } if (!(parameters[0] is ExprTimePeriod)) { var returnType = parameters[0].Forge.EvaluationType; if (!returnType.IsNumeric()) { throw new ObserverParameterException(errorMessage); } } parameter = parameters[0]; this.convertor = convertor; timeAbacus = validationContext.ImportService.TimeAbacus; }
public void SetObserverParameters( IList<ExprNode> parameters, MatchedEventConvertorForge convertor, ExprValidationContext validationContext) { ObserverParameterUtil.ValidateNoNamedParameters("timer:at", parameters); if (Log.IsDebugEnabled) { Log.Debug(".setObserverParameters " + parameters); } if (parameters.Count < 5 || parameters.Count > 9) { throw new ObserverParameterException("Invalid number of parameters for timer:at"); } this.parameters = parameters; this.convertor = convertor; // if all parameters are constants, lets try to evaluate and build a schedule for early validation var allConstantResult = true; foreach (var param in parameters) { if (!(param is ExprWildcard) && !param.Forge.ForgeConstantType.IsCompileTimeConstant) { allConstantResult = false; } } if (allConstantResult) { try { var observerParameters = EvaluateCompileTime(parameters); spec = ScheduleSpecUtil.ComputeValues(observerParameters.ToArray()); } catch (ScheduleParameterException e) { throw new ObserverParameterException( "Error computing crontab schedule specification: " + e.Message, e); } } }