Exemplo n.º 1
0
 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;
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
 public WrapperGetterMapped(EventPropertyGetterMappedSPI undMapped)
 {
     this.undMapped = undMapped;
 }