示例#1
0
 protected override Type DoResolvePropertyType(String propertyExpression)
 {
     EsperEPL2GrammarParser.StartEventPropertyRuleContext ast = PropertyParser.Parse(propertyExpression);
     return(PropertyParser.IsPropertyDynamic(ast)
         ? typeof(XmlNode)
         : typeof(string));
 }
示例#2
0
        protected override Type DoResolvePropertyType(String propertyExpression)
        {
            var ast = PropertyParser.Parse(propertyExpression);

            return(PropertyParser.IsPropertyDynamic(ast)
                ? typeof(XNode)
                : typeof(string));
        }
示例#3
0
        protected override EventPropertyGetter DoResolvePropertyGetter(String propertyExpression)
        {
            var getter = _propertyGetterCache.Get(propertyExpression);

            if (getter != null)
            {
                return(getter);
            }

            if (!ConfigurationEventTypeXMLDOM.IsXPathPropertyExpr)
            {
                var prop = PropertyParser.ParseAndWalkLaxToSimple(propertyExpression);
                getter = prop.GetGetterDOM();
                if (!prop.IsDynamic)
                {
                    getter = new DOMConvertingGetter(propertyExpression, (DOMPropertyGetter)getter, typeof(string));
                }
            }
            else
            {
                try
                {
                    var ast       = PropertyParser.Parse(propertyExpression);
                    var isDynamic = PropertyParser.IsPropertyDynamic(ast);
                    var xPathExpr = SimpleXMLPropertyParser.Walk(
                        ast,
                        propertyExpression,
                        RootElementName,
                        _defaultNamespacePrefix,
                        _isResolvePropertiesAbsolute);

                    if (Log.IsInfoEnabled)
                    {
                        Log.Info("Compiling XPath expression for property '" + propertyExpression + "' as '" + xPathExpr +
                                 "'");
                    }

                    var xPathExpression = XPathExpression.Compile(xPathExpr, NamespaceContext);
                    var xPathReturnType = isDynamic ? XPathResultType.Any : XPathResultType.String;
                    getter = new XPathPropertyGetter(
                        propertyExpression,
                        xPathExpr,
                        xPathExpression,
                        xPathReturnType,
                        null,
                        null);
                }
                catch (XPathException e)
                {
                    throw new EPException(
                              "Error constructing XPath expression from property name '" + propertyExpression + '\'', e);
                }
            }

            // no fragment factory, fragments not allowed
            _propertyGetterCache.Put(propertyExpression, getter);
            return(getter);
        }
示例#4
0
        public static Type ResolveSimpleXMLPropertyType(string propertyExpression)
        {
            var prop = PropertyParser.ParseAndWalkLaxToSimple(propertyExpression);
            if (PropertyParser.IsPropertyDynamic(prop)) {
                return typeof(XmlNode);
            }

            return typeof(string);
        }
示例#5
0
        public static EventPropertyGetterSPI ResolveSimpleXMLPropertyGetter(
            string propertyExpression,
            BaseXMLEventType baseXMLEventType,
            string defaultNamespacePrefix,
            bool isResolvePropertiesAbsolute)
        {
            if (!baseXMLEventType.ConfigurationEventTypeXMLDOM.IsXPathPropertyExpr) {
                var prop = PropertyParser.ParseAndWalkLaxToSimple(propertyExpression);
                var getter = prop.GetterDOM;
                if (!prop.IsDynamic) {
                    getter = new DOMConvertingGetter((DOMPropertyGetter) getter, typeof(string));
                }

                return getter;
            }

            try {
                var property = PropertyParserNoDep.ParseAndWalkLaxToSimple(propertyExpression, false);
                var isDynamic = PropertyParser.IsPropertyDynamic(property);

                var xPathExpr = SimpleXMLPropertyParser.Walk(
                    property,
                    baseXMLEventType.RootElementName,
                    defaultNamespacePrefix,
                    isResolvePropertiesAbsolute);

                if (Log.IsInfoEnabled) {
                    Log.Info(
                        "Compiling XPath expression for property '" + propertyExpression + "' as '" + xPathExpr + "'");
                }

                var xPathExpression = baseXMLEventType.CreateXPath(xPathExpr);
                var xPathReturnType = isDynamic ? XPathResultType.Any : XPathResultType.String;
                return new XPathPropertyGetter(
                    baseXMLEventType,
                    propertyExpression,
                    xPathExpr,
                    xPathExpression,
                    xPathReturnType,
                    null,
                    null);
            }
            catch (XPathException e) {
                throw new EPException(
                    "Error constructing XPath expression from property name '" + propertyExpression + '\'',
                    e);
            }
        }