/// <summary> /// Apply a filter expression. /// </summary> /// <param name="filter">expression</param> /// <param name="streamZeroEvent">the event that represents stream zero</param> /// <param name="streamOneEvents">all events thate are stream one events</param> /// <param name="exprEvaluatorContext">context for expression evaluation</param> /// <returns>filtered stream one events</returns> public static EventBean[] ApplyFilterExpression( ExprEvaluator filter, EventBean streamZeroEvent, EventBean[] streamOneEvents, ExprEvaluatorContext exprEvaluatorContext) { EventBean[] eventsPerStream = new EventBean[2]; eventsPerStream[0] = streamZeroEvent; EventBean[] filtered = new EventBean[streamOneEvents.Length]; int countPass = 0; foreach (EventBean eventBean in streamOneEvents) { eventsPerStream[1] = eventBean; var result = filter.Evaluate(eventsPerStream, true, exprEvaluatorContext); if ((result != null) && true.Equals(result)) { filtered[countPass] = eventBean; countPass++; } } if (countPass == streamOneEvents.Length) { return streamOneEvents; } return EventBeanUtility.ResizeArray(filtered, countPass); }