public HistoricalEventViewableBase(
     HistoricalEventViewableFactoryBase factory,
     PollExecStrategy pollExecStrategy,
     AgentInstanceContext agentInstanceContext)
 {
     _factory = factory;
     _pollExecStrategy = pollExecStrategy;
     _agentInstanceContext = agentInstanceContext;
 }
Exemple #2
0
        /// <summary>
        /// Ctor.
        /// </summary>
        /// <param name="myStreamNumber">is the stream number of the view</param>
        /// <param name="inputParameters">are the event property names providing input parameter keys</param>
        /// <param name="pollExecStrategy">is the strategy to use for retrieving results</param>
        /// <param name="dataCache">is looked up before using the strategy</param>
        /// <param name="eventType">is the type of events generated by the view</param>

        public DatabasePollingViewable(
            int myStreamNumber,
            IList <String> inputParameters,
            PollExecStrategy pollExecStrategy,
            DataCache dataCache,
            EventType eventType)
        {
            _myStreamNumber   = myStreamNumber;
            _inputParameters  = inputParameters;
            _pollExecStrategy = pollExecStrategy;
            _dataCache        = dataCache;
            _eventType        = eventType;
        }
        /// <summary>
        /// Ctor.
        /// </summary>
        /// <param name="myStreamNumber">is the stream number of the view</param>
        /// <param name="inputParameters">are the event property names providing input parameter keys</param>
        /// <param name="pollExecStrategy">is the strategy to use for retrieving results</param>
        /// <param name="dataCache">is looked up before using the strategy</param>
        /// <param name="eventType">is the type of events generated by the view</param>
        /// <param name="threadLocalManager">The thread local manager.</param>

        public DatabasePollingViewable(
            int myStreamNumber,
            IList <String> inputParameters,
            PollExecStrategy pollExecStrategy,
            DataCache dataCache,
            EventType eventType,
            IThreadLocalManager threadLocalManager)
        {
            _dataCacheThreadLocal = threadLocalManager.Create <DataCache>(() => null);
            _myStreamNumber       = myStreamNumber;
            _inputParameters      = inputParameters;
            _pollExecStrategy     = pollExecStrategy;
            _dataCache            = dataCache;
            _eventType            = eventType;
        }
 public HistoricalEventViewableDatabase(
     HistoricalEventViewableDatabaseFactory factory,
     PollExecStrategy pollExecStrategy,
     AgentInstanceContext agentInstanceContext)
     : base(factory, pollExecStrategy, agentInstanceContext)
 {
     try {
         DataCache = agentInstanceContext.DatabaseConfigService.GetDataCache(
             factory.DatabaseName,
             agentInstanceContext,
             factory.StreamNumber,
             factory.ScheduleCallbackId);
     }
     catch (DatabaseConfigException e) {
         throw new EPException("Failed to obtain cache: " + e.Message, e);
     }
 }
Exemple #5
0
 /// <summary>
 /// Ctor.
 /// </summary>
 /// <param name="methodStreamSpec">defines class and method names</param>
 /// <param name="myStreamNumber">is the stream number</param>
 /// <param name="inputParameters">the input parameter expressions</param>
 /// <param name="pollExecStrategy">the execution strategy</param>
 /// <param name="dataCache">the cache to use</param>
 /// <param name="eventType">the type of event returned</param>
 /// <param name="exprEvaluatorContext">expression evaluation context</param>
 public MethodPollingViewable(
     bool isStaticMethod,
     Type methodProviderClass,
     MethodStreamSpec methodStreamSpec,
     int myStreamNumber,
     IList <ExprNode> inputParameters,
     PollExecStrategy pollExecStrategy,
     DataCache dataCache,
     EventType eventType,
     ExprEvaluatorContext exprEvaluatorContext)
 {
     this._isStaticMethod       = isStaticMethod;
     this._methodProviderClass  = methodProviderClass;
     this._methodStreamSpec     = methodStreamSpec;
     this._inputParameters      = inputParameters;
     this._pollExecStrategy     = pollExecStrategy;
     this._dataCache            = dataCache;
     this._eventType            = eventType;
     this._exprEvaluatorContext = exprEvaluatorContext;
 }
        public HistoricalEventViewableMethod(
            HistoricalEventViewableMethodFactory factory,
            PollExecStrategy pollExecStrategy,
            AgentInstanceContext agentInstanceContext)
            : base(factory, pollExecStrategy, agentInstanceContext)

        {
            try {
                ConfigurationCommonMethodRef configCache =
                    agentInstanceContext.ImportServiceRuntime.GetConfigurationMethodRef(factory.ConfigurationName);
                ConfigurationCommonCache dataCacheDesc = configCache != null ? configCache.DataCacheDesc : null;
                this.DataCache = agentInstanceContext.HistoricalDataCacheFactory.GetDataCache(
                    dataCacheDesc,
                    agentInstanceContext,
                    factory.StreamNumber,
                    factory.ScheduleCallbackId);
            }
            catch (EPException) {
                throw;
            }
            catch (Exception e) {
                throw new EPException("Failed to obtain cache: " + e.Message, e);
            }
        }
        public void Validate(
            EngineImportService engineImportService,
            StreamTypeService streamTypeService,
            TimeProvider timeProvider,
            VariableService variableService,
            TableService tableService,
            ScriptingService scriptingService,
            ExprEvaluatorContext exprEvaluatorContext,
            ConfigurationInformation configSnapshot,
            SchedulingService schedulingService,
            string engineURI,
            IDictionary <int, IList <ExprNode> > sqlParameters,
            EventAdapterService eventAdapterService,
            StatementContext statementContext)
        {
            _statementContext = statementContext;

            // validate and visit
            var validationContext        = new ExprValidationContext(streamTypeService, engineImportService, statementContext.StatementExtensionServicesContext, null, timeProvider, variableService, tableService, exprEvaluatorContext, eventAdapterService, statementContext.StatementName, statementContext.StatementId, statementContext.Annotations, null, statementContext.ScriptingService, false, false, true, false, null, false);
            var visitor                  = new ExprNodeIdentifierVisitor(true);
            var validatedInputParameters = new List <ExprNode>();

            foreach (var exprNode in _methodStreamSpec.Expressions)
            {
                var validated = ExprNodeUtility.GetValidatedSubtree(ExprNodeOrigin.METHODINVJOIN, exprNode, validationContext);
                validatedInputParameters.Add(validated);
                validated.Accept(visitor);
            }

            // determine required streams
            _requiredStreams = new SortedSet <int>();
            foreach (var identifier in visitor.ExprProperties)
            {
                _requiredStreams.Add(identifier.First);
            }

            // class-based evaluation
            if (_metadata.MethodProviderClass != null)
            {
                // resolve actual method to use
                var handler = new ProxyExprNodeUtilResolveExceptionHandler {
                    ProcHandle = e => {
                        if (_methodStreamSpec.Expressions.Count == 0)
                        {
                            return(new ExprValidationException("Method footprint does not match the number or type of expression parameters, expecting no parameters in method: " + e.Message, e));
                        }
                        var resultTypes = ExprNodeUtility.GetExprResultTypes(validatedInputParameters);
                        return(new ExprValidationException(
                                   string.Format("Method footprint does not match the number or type of expression parameters, expecting a method where parameters are typed '{0}': {1}", TypeHelper.GetParameterAsString(resultTypes), e.Message), e));
                    }
                };
                var desc = ExprNodeUtility.ResolveMethodAllowWildcardAndStream(
                    _metadata.MethodProviderClass.FullName, _metadata.IsStaticMethod ? null : _metadata.MethodProviderClass,
                    _methodStreamSpec.MethodName, validatedInputParameters, engineImportService, eventAdapterService, statementContext.StatementId,
                    false, null, handler, _methodStreamSpec.MethodName, tableService, statementContext.EngineURI);
                _validatedExprNodes = desc.ChildEvals;

                // Construct polling strategy as a method invocation
                var invocationTarget = _metadata.InvocationTarget;
                var strategy         = _metadata.Strategy;
                var variableReader   = _metadata.VariableReader;
                var variableName     = _metadata.VariableName;
                var methodFastClass  = desc.FastMethod;
                if (_metadata.EventTypeEventBeanArray != null)
                {
                    _pollExecStrategy = new MethodPollingExecStrategyEventBeans(eventAdapterService, methodFastClass, _eventType, invocationTarget, strategy, variableReader, variableName, variableService);
                }
                else if (_metadata.OptionalMapType != null)
                {
                    if (desc.FastMethod.ReturnType.IsArray)
                    {
                        _pollExecStrategy = new MethodPollingExecStrategyMapArray(eventAdapterService, methodFastClass, _eventType, invocationTarget, strategy, variableReader, variableName, variableService);
                    }
                    else if (_metadata.IsCollection)
                    {
                        _pollExecStrategy = new MethodPollingExecStrategyMapCollection(eventAdapterService, methodFastClass, _eventType, invocationTarget, strategy, variableReader, variableName, variableService);
                    }
                    else if (_metadata.IsEnumerator)
                    {
                        _pollExecStrategy = new MethodPollingExecStrategyMapIterator(eventAdapterService, methodFastClass, _eventType, invocationTarget, strategy, variableReader, variableName, variableService);
                    }
                    else
                    {
                        _pollExecStrategy = new MethodPollingExecStrategyMapPlain(eventAdapterService, methodFastClass, _eventType, invocationTarget, strategy, variableReader, variableName, variableService);
                    }
                }
                else if (_metadata.OptionalOaType != null)
                {
                    if (desc.FastMethod.ReturnType == typeof(Object[][]))
                    {
                        _pollExecStrategy = new MethodPollingExecStrategyOAArray(eventAdapterService, methodFastClass, _eventType, invocationTarget, strategy, variableReader, variableName, variableService);
                    }
                    else if (_metadata.IsCollection)
                    {
                        _pollExecStrategy = new MethodPollingExecStrategyOACollection(eventAdapterService, methodFastClass, _eventType, invocationTarget, strategy, variableReader, variableName, variableService);
                    }
                    else if (_metadata.IsEnumerator)
                    {
                        _pollExecStrategy = new MethodPollingExecStrategyOAIterator(eventAdapterService, methodFastClass, _eventType, invocationTarget, strategy, variableReader, variableName, variableService);
                    }
                    else
                    {
                        _pollExecStrategy = new MethodPollingExecStrategyOAPlain(eventAdapterService, methodFastClass, _eventType, invocationTarget, strategy, variableReader, variableName, variableService);
                    }
                }
                else
                {
                    if (desc.FastMethod.ReturnType.IsArray)
                    {
                        _pollExecStrategy = new MethodPollingExecStrategyPONOArray(eventAdapterService, methodFastClass, _eventType, invocationTarget, strategy, variableReader, variableName, variableService);
                    }
                    else if (_metadata.IsCollection)
                    {
                        _pollExecStrategy = new MethodPollingExecStrategyPONOCollection(eventAdapterService, methodFastClass, _eventType, invocationTarget, strategy, variableReader, variableName, variableService);
                    }
                    else if (_metadata.IsEnumerator)
                    {
                        _pollExecStrategy = new MethodPollingExecStrategyPONOIterator(eventAdapterService, methodFastClass, _eventType, invocationTarget, strategy, variableReader, variableName, variableService);
                    }
                    else
                    {
                        _pollExecStrategy = new MethodPollingExecStrategyPONOPlain(eventAdapterService, methodFastClass, _eventType, invocationTarget, strategy, variableReader, variableName, variableService);
                    }
                }
            }
            else
            {
                // script-based evaluation
                _pollExecStrategy   = new MethodPollingExecStrategyScript(_metadata.ScriptExpression, _metadata.EventTypeEventBeanArray);
                _validatedExprNodes = ExprNodeUtility.GetEvaluators(validatedInputParameters);
            }
        }