Beispiel #1
0
        private static T TryParameterProvider<T>(
            string name,
            DataFlowOpInitializeContext context)
        {
            if (context.AdditionalParameters != null && context.AdditionalParameters.ContainsKey(name)) {
                return (T) context.AdditionalParameters.Get(name);
            }

            if (context.ParameterProvider == null) {
                return default(T);
            }

            EPDataFlowOperatorParameterProviderContext ctx =
                new EPDataFlowOperatorParameterProviderContext(context, name);
            object value = context.ParameterProvider.Provide(ctx);
            if (value == null) {
                return default(T);
            }

            var clazz = typeof(T);
            if (TypeHelper.IsAssignmentCompatible(value.GetType(), clazz)) {
                return (T) value;
            }

            throw new EPException(
                "Parameter provider provided an unexpected object for parameter '" +
                name +
                "' of type '" +
                value.GetType().Name +
                "', expected type '" +
                clazz.Name +
                "'");
        }
Beispiel #2
0
        private void RunAssertionParameterInjectionCallback(EPServiceProvider epService)
        {
            epService.EPAdministrator.CreateEPL("create schema SomeType ()");
            epService.EPAdministrator.CreateEPL("create dataflow MyDataFlowOne MyOp -> outstream<SomeType> {propOne:'abc', propThree:'xyz'}");

            var myOp    = new MyOp("myid");
            var options = new EPDataFlowInstantiationOptions();

            options.OperatorProvider(new DefaultSupportGraphOpProvider(myOp));
            var myParameterProvider = new MyParameterProvider(Collections.SingletonDataMap("propTwo", "def"));

            options.ParameterProvider(myParameterProvider);
            Assert.AreEqual("myid", myOp.Id);
            Assert.IsNull(myOp.PropOne);
            Assert.IsNull(myOp.PropTwo);

            epService.EPRuntime.DataFlowRuntime.Instantiate("MyDataFlowOne", options);
            Assert.AreEqual("abc", myOp.PropOne);
            Assert.AreEqual("def", myOp.PropTwo);

            Assert.AreEqual(3, myParameterProvider.ContextMap.Count);
            Assert.IsNotNull(myParameterProvider.ContextMap.Get("propOne"));

            EPDataFlowOperatorParameterProviderContext context = myParameterProvider.ContextMap.Get("propTwo");

            Assert.AreEqual("propTwo", context.ParameterName);
            Assert.AreEqual("MyOp", context.OperatorName);
            Assert.AreSame(myOp, context.OperatorInstance);
            Assert.AreEqual(0, context.OperatorNum);
            Assert.AreEqual(null, context.ProvidedValue);
            Assert.AreEqual("MyDataFlowOne", context.DataFlowName);

            context = myParameterProvider.ContextMap.Get("propThree");
            Assert.AreEqual("propThree", context.ParameterName);
            Assert.AreEqual("MyOp", context.OperatorName);
            Assert.AreSame(myOp, context.OperatorInstance);
            Assert.AreEqual(0, context.OperatorNum);
            Assert.AreEqual("xyz", context.ProvidedValue);

            epService.EPAdministrator.DestroyAllStatements();
        }
Beispiel #3
0
 public Object Provide(EPDataFlowOperatorParameterProviderContext context)
 {
     _contextMap.Put(context.ParameterName, context);
     return(_values.Get(context.ParameterName));
 }
Beispiel #4
0
 public object Provide(EPDataFlowOperatorParameterProviderContext context)
 {
     return @params.Get(context.ParameterName);
 }