protected override Type DoResolvePropertyType(String propertyExpression) { EsperEPL2GrammarParser.StartEventPropertyRuleContext ast = PropertyParser.Parse(propertyExpression); return(PropertyParser.IsPropertyDynamic(ast) ? typeof(XmlNode) : typeof(string)); }
protected override Type DoResolvePropertyType(String propertyExpression) { var ast = PropertyParser.Parse(propertyExpression); return(PropertyParser.IsPropertyDynamic(ast) ? typeof(XNode) : typeof(string)); }
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); }
public static Type ResolveSimpleXMLPropertyType(string propertyExpression) { var prop = PropertyParser.ParseAndWalkLaxToSimple(propertyExpression); if (PropertyParser.IsPropertyDynamic(prop)) { return typeof(XmlNode); } return typeof(string); }
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); } }