public PropertyDotNonLambdaMappedForge( int streamId, EventPropertyGetterMappedSPI mappedGetter, ExprForge paramForge, Type returnType) { StreamId = streamId; MappedGetter = mappedGetter; ParamForge = paramForge; EvaluationType = returnType; }
internal ExprDotNodeForgePropertyExpr( ExprDotNodeImpl parent, string statementName, string propertyName, int streamNum, ExprForge exprForge, Type propertyType, EventPropertyGetterIndexedSPI indexedGetter, EventPropertyGetterMappedSPI mappedGetter) { Parent = parent; this.statementName = statementName; this.propertyName = propertyName; StreamNum = streamNum; ExprForge = exprForge; EvaluationType = propertyType; IndexedGetter = indexedGetter; MappedGetter = mappedGetter; }
private ExprDotNodeForge GetPropertyPairEvaluator( ExprForge parameterForge, Pair<PropertyResolutionDescriptor, string> propertyInfoPair, ExprValidationContext validationContext) { var propertyName = propertyInfoPair.First.PropertyName; var propertyDesc = EventTypeUtility.GetNestablePropertyDescriptor( propertyInfoPair.First.StreamEventType, propertyName); if (propertyDesc == null || !propertyDesc.IsMapped && !propertyDesc.IsIndexed) { throw new ExprValidationException( "Unknown single-row function, aggregation function or mapped or indexed property named '" + propertyName + "' could not be resolved"); } var streamNum = propertyInfoPair.First.StreamNum; EventPropertyGetterMappedSPI mappedGetter = null; EventPropertyGetterIndexedSPI indexedGetter = null; var propertyType = typeof(object); if (propertyDesc.IsMapped) { if (parameterForge.EvaluationType != typeof(string)) { throw new ExprValidationException( "Parameter expression to mapped property '" + propertyDesc.PropertyName + "' is expected to return a string-type value but returns " + parameterForge.EvaluationType.CleanName()); } mappedGetter = ((EventTypeSPI) propertyInfoPair.First.StreamEventType).GetGetterMappedSPI( propertyInfoPair.First.PropertyName); if (mappedGetter == null) { throw new ExprValidationException( "Mapped property named '" + propertyName + "' failed to obtain getter-object"); } } else { if (parameterForge.EvaluationType.GetBoxedType() != typeof(int?)) { throw new ExprValidationException( "Parameter expression to indexed property '" + propertyDesc.PropertyName + "' is expected to return a Integer-type value but returns " + parameterForge.EvaluationType.CleanName()); } indexedGetter = ((EventTypeSPI) propertyInfoPair.First.StreamEventType).GetGetterIndexedSPI( propertyInfoPair.First.PropertyName); if (indexedGetter == null) { throw new ExprValidationException( "Indexed property named '" + propertyName + "' failed to obtain getter-object"); } } if (propertyDesc.PropertyComponentType != null) { propertyType = propertyDesc.PropertyComponentType.GetBoxedType(); } return new ExprDotNodeForgePropertyExpr( this, validationContext.StatementName, propertyDesc.PropertyName, streamNum, parameterForge, propertyType, indexedGetter, mappedGetter); }
public WrapperGetterMapped(EventPropertyGetterMappedSPI undMapped) { this.undMapped = undMapped; }