public static EventPropertyGetterSPI[] getGetters(EventType eventType, String[] props) { EventPropertyGetterSPI[] getters = new EventPropertyGetterSPI[props.length]; EventTypeSPI spi = (EventTypeSPI) eventType; for (int i = 0; i < getters.length; i++) { getters[i] = spi.getGetterSPI(props[i]); } return getters; }
public ExprIdentNodeImpl(EventType eventType, String propertyName, int streamNumber) { unresolvedPropertyName = propertyName; resolvedPropertyName = propertyName; EventPropertyGetterSPI propertyGetter = ((EventTypeSPI) eventType).getGetterSPI(propertyName); if (propertyGetter == null) { throw new IllegalArgumentException("Ident-node constructor could not locate property " + propertyName); } Class propertyType = eventType.getPropertyType(propertyName); evaluator = new ExprIdentNodeEvaluatorImpl(streamNumber, propertyGetter, JavaClassHelper.getBoxedType(propertyType), this, eventType, true, false); }
protected List<CodegenExpression> additionalParams(CodegenMethod method, SAIFFInitializeSymbol symbols, CodegenClassScope classScope) { List<CodegenExpression> params = new ArrayList<>(); params.add(constant(indexedProp)); params.add(constant(coercionDesc.getCoercionTypes()[0])); Class propertyType = eventType.getPropertyType(indexedProp); EventPropertyGetterSPI getterSPI = ((EventTypeSPI) eventType).getGetterSPI(indexedProp); CodegenExpression getter = EventTypeUtility.codegenGetterWCoerce(getterSPI, propertyType, coercionDesc.getCoercionTypes()[0], method, this.getClass(), classScope); params.add(getter); return params; }
public EventPropertyGetterSPI getGetterSPI(String property) { EventPropertyGetterSPI cachedGetter = propertyGetterCache.get(property); if (cachedGetter != null) { return cachedGetter; } if (underlyingMapType.isProperty(property) && (property.indexOf('?') == -1)) { EventPropertyGetterSPI mapGetter = underlyingMapType.getGetterSPI(property); WrapperMapPropertyGetter getter = new WrapperMapPropertyGetter(this, eventBeanTypedEventFactory, underlyingMapType, mapGetter); propertyGetterCache.put(property, getter); return getter; } else if (underlyingEventType.isProperty(property)) { EventPropertyGetterSPI underlyingGetter = ((EventTypeSPI) underlyingEventType).getGetterSPI(property); WrapperUnderlyingPropertyGetter getter = new WrapperUnderlyingPropertyGetter(underlyingGetter); propertyGetterCache.put(property, getter); return getter; } else { return null; } }
for (int i = 0; i < rangeProps.length; i++) { Class propertyType = eventType.getPropertyType(rangeProps[i]); EventPropertyGetterSPI getterSPI = ((EventTypeSPI) eventType).getGetterSPI(rangeProps[i]); CodegenExpression getter = EventTypeUtility.codegenGetterWCoerce(getterSPI, propertyType, rangeTypes[i], method, this.getClass(), classScope); method.getBlock().assignArrayElement(ref("rangeGetters"), constant(i), getter);
public ExprNode validate(ExprValidationContext validationContext) throws ExprValidationException { if (validationContext.getContextDescriptor() == null) { throw new ExprValidationException("Context property '" + propertyName + "' cannot be used in the expression as provided"); } EventTypeSPI eventType = (EventTypeSPI) validationContext.getContextDescriptor().getContextPropertyRegistry().getContextEventType(); if (eventType == null) { throw new ExprValidationException("Context property '" + propertyName + "' cannot be used in the expression as provided"); } getter = eventType.getGetterSPI(propertyName); if (getter == null) { throw new ExprValidationException("Context property '" + propertyName + "' is not a known property, known properties are " + Arrays.toString(eventType.getPropertyNames())); } returnType = JavaClassHelper.getBoxedType(eventType.getPropertyType(propertyName)); return null; }
public CodegenExpression make(CodegenMethodScope parent, SAIFFInitializeSymbol symbols, CodegenClassScope classScope) { CodegenMethod method = parent.makeChild(PropertyHashedArrayFactoryFactory.class, this.getClass(), classScope); Class[] propertyTypes = new Class[propertyNames.length]; method.getBlock().declareVar(EventPropertyValueGetter[].class, "getters", newArrayByLength(EventPropertyValueGetter.class, constant(propertyNames.length))); for (int i = 0; i < propertyNames.length; i++) { Class propertyType = eventType.getPropertyType(propertyNames[i]); propertyTypes[i] = propertyType; EventPropertyGetterSPI getterSPI = ((EventTypeSPI) eventType).getGetterSPI(propertyNames[i]); CodegenExpression getter = EventTypeUtility.codegenGetterWCoerce(getterSPI, propertyType, propertyType, method, this.getClass(), classScope); method.getBlock().assignArrayElement(ref("getters"), constant(i), getter); } method.getBlock().methodReturn(newInstance(PropertyHashedArrayFactoryFactory.class, constant(streamNum), constant(propertyNames), constant(propertyTypes), constant(unique), ref("getters"), constant(isFireAndForget))); return localMethod(method); }
public CodegenExpression make(CodegenMethodScope parent, SAIFFInitializeSymbol symbols, CodegenClassScope classScope) { CodegenMethod method = parent.makeChild(PollResultIndexingStrategySorted.class, this.getClass(), classScope); EventPropertyGetterSPI propertyGetter = ((EventTypeSPI) eventType).getGetterSPI(propertyName); Class propertyType = eventType.getPropertyType(propertyName); CodegenExpression valueGetter = EventTypeUtility.codegenGetterWCoerce(propertyGetter, propertyType, valueType, method, this.getClass(), classScope); method.getBlock() .declareVar(PollResultIndexingStrategySorted.class, "strat", newInstance(PollResultIndexingStrategySorted.class)) .exprDotMethod(ref("strat"), "setStreamNum", constant(streamNum)) .exprDotMethod(ref("strat"), "setPropertyName", constant(propertyName)) .exprDotMethod(ref("strat"), "setValueGetter", valueGetter) .exprDotMethod(ref("strat"), "setValueType", constant(valueType)) .exprDotMethod(ref("strat"), "init") .methodReturn(ref("strat")); return localMethod(method); } }
public CodegenExpression makeCodegen(CodegenClassScope classScope, CodegenMethodScope parent) { EventPropertyGetterSPI getterSPI = ((EventTypeSPI) eventType).getGetterSPI(resultEventProperty); CodegenMethod method = parent.makeChild(Object.class, this.getClass(), classScope).addParam(GET_FILTER_VALUE_FP); method.getBlock() .declareVar(EventBean[].class, "events", cast(EventBean[].class, exprDotMethod(ref("matchedEvents"), "getMatchingEventAsObjectByTag", CodegenExpressionBuilder.constant(resultEventAsName)))) .declareVar(Number.class, "value", constantNull()) .ifRefNotNull("events") .assignRef("value", cast(Number.class, getterSPI.eventBeanGetCodegen(arrayAtIndex(ref("events"), CodegenExpressionBuilder.constant(resultEventIndex)), method, classScope))) .blockEnd() .ifRefNullReturnNull("value") .methodReturn(exprDotMethod(ref("value"), "doubleValue")); return localMethod(method, GET_FILTER_VALUE_REFS); }
EventPropertyGetterSPI getter = ((EventTypeSPI) inputEventType).getGetterSPI(inputEventType.getStartTimestampPropertyName()); Class getterResultType = inputEventType.getPropertyType(inputEventType.getStartTimestampPropertyName()); EventPropertyGetterSPI getterEndTimestamp = ((EventTypeSPI) inputEventType).getGetterSPI(inputEventType.getEndTimestampPropertyName()); Class getterEndType = inputEventType.getPropertyType(inputEventType.getEndTimestampPropertyName()); DTLocalForgeIntervalComp inner = (DTLocalForgeIntervalComp) getForge(calendarForges, timeAbacus, getterResultType, null, null, intervalForge);
makeMethod.getBlock().declareVar(EventPropertyValueGetter[].class, "getters", newArrayByLength(EventPropertyValueGetter.class, constant(rangeProps.length))); for (int i = 0; i < rangeProps.length; i++) { EventPropertyGetterSPI getter = ((EventTypeSPI) eventType).getGetterSPI(rangeProps[i]); Class getterType = eventType.getPropertyType(rangeProps[i]); Class coercionType = rangeTypes == null ? null : rangeTypes[i];
public CodegenExpression make(CodegenMethodScope parent, SAIFFInitializeSymbol symbols, CodegenClassScope classScope) { CodegenMethod method = parent.makeChild(PollResultIndexingStrategyInKeywordMulti.class, this.getClass(), classScope); method.getBlock().declareVar(EventPropertyValueGetter[].class, "getters", newArrayByLength(EventPropertyValueGetter.class, constant(propertyNames.length))); for (int i = 0; i < propertyNames.length; i++) { EventPropertyGetterSPI getter = ((EventTypeSPI) eventType).getGetterSPI(propertyNames[i]); Class getterType = eventType.getPropertyType(propertyNames[i]); CodegenExpression eval = EventTypeUtility.codegenGetterWCoerce(getter, getterType, getterType, method, this.getClass(), classScope); method.getBlock().assignArrayElement(ref("getters"), constant(i), eval); } method.getBlock() .declareVar(PollResultIndexingStrategyInKeywordMulti.class, "strat", newInstance(PollResultIndexingStrategyInKeywordMulti.class)) .exprDotMethod(ref("strat"), "setStreamNum", constant(streamNum)) .exprDotMethod(ref("strat"), "setPropertyNames", constant(propertyNames)) .exprDotMethod(ref("strat"), "setValueGetters", ref("getters")) .exprDotMethod(ref("strat"), "init") .methodReturn(ref("strat")); return localMethod(method); } }
public CodegenExpression makeCodegen(CodegenClassScope classScope, CodegenMethodScope parent) { EventPropertyGetterSPI getterSPI = ((EventTypeSPI) eventType).getGetterSPI(resultEventProperty); CodegenMethod method = parent.makeChild(Object.class, this.getClass(), classScope).addParam(GET_FILTER_VALUE_FP); method.getBlock() .declareVar(EventBean[].class, "events", cast(EventBean[].class, exprDotMethod(ref("matchedEvents"), "getMatchingEventAsObjectByTag", CodegenExpressionBuilder.constant(resultEventAsName)))) .declareVar(Object.class, "value", constantNull()) .ifRefNotNull("events") .assignRef("value", getterSPI.eventBeanGetCodegen(arrayAtIndex(ref("events"), CodegenExpressionBuilder.constant(resultEventIndex)), method, classScope)) .blockEnd(); if (isMustCoerce) { method.getBlock().assignRef("value", JavaClassHelper.coerceNumberToBoxedCodegen(ref("value"), Object.class, coercionType)); } method.getBlock().methodReturn(ref("value")); return localMethod(method, GET_FILTER_VALUE_REFS); }
EventPropertyGetterSPI getter = ((EventTypeSPI) streamType).getGetterSPI(propertyName);
for (int i = 0; i < rangeProps.length; i++) { Class propertyType = eventType.getPropertyType(rangeProps[i]); EventPropertyGetterSPI getterSPI = ((EventTypeSPI) eventType).getGetterSPI(rangeProps[i]); CodegenExpression getter = EventTypeUtility.codegenGetterWCoerce(getterSPI, propertyType, rangeTypes[i], method, this.getClass(), classScope); method.getBlock().assignArrayElement(ref("rangeGetters"), constant(i), getter);
public CodegenMethod makeCodegen(CodegenClassScope classScope, CodegenMethodScope parent, SAIFFInitializeSymbolWEventType symbols) { EventPropertyGetterSPI getterSPI = ((EventTypeSPI) eventType).getGetterSPI(resultEventProperty); CodegenMethod method = parent.makeChild(FilterSpecParam.class, FilterSpecParamConstantForge.class, classScope); method.getBlock() .declareVar(ExprFilterSpecLookupable.class, "lookupable", localMethod(lookupable.makeCodegen(method, symbols, classScope))) .declareVar(FilterOperator.class, "op", enumValue(FilterOperator.class, filterOperator.name())); CodegenExpressionNewAnonymousClass param = newAnonymousClass(method.getBlock(), FilterSpecParam.class, Arrays.asList(ref("lookupable"), ref("op"))); CodegenMethod getFilterValue = CodegenMethod.makeParentNode(Object.class, this.getClass(), classScope).addParam(FilterSpecParam.GET_FILTER_VALUE_FP); param.addMethod("getFilterValue", getFilterValue); getFilterValue.getBlock() .declareVar(EventBean[].class, "events", cast(EventBean[].class, exprDotMethod(ref("matchedEvents"), "getMatchingEventAsObjectByTag", constant(resultEventAsName)))) .declareVar(Object.class, "value", constantNull()) .ifRefNotNull("events") .assignRef("value", getterSPI.eventBeanGetCodegen(arrayAtIndex(ref("events"), constant(resultEventIndex)), method, classScope)) .blockEnd(); if (isMustCoerce) { getFilterValue.getBlock().assignRef("value", numberCoercer.coerceCodegenMayNullBoxed(cast(Number.class, ref("value")), Number.class, method, classScope)); } getFilterValue.getBlock().methodReturn(ref("value")); method.getBlock().methodReturn(param); return method; }
throw new ExprValidationException("Property '" + optSubPropName + "' is not valid for variable '" + variableName + "'"); optSubPropGetter = ((EventTypeSPI) variableMeta.getEventType()).getGetterSPI(optSubPropName); if (optSubPropGetter == null) { throw new ExprValidationException("Property '" + optSubPropName + "' is not valid for variable '" + variableName + "'");
EventPropertyGetterSPI propertyGetter; try { propertyGetter = ((EventTypeSPI) eventType).getGetterSPI(resolvedPropertyName); } catch (PropertyAccessException ex) { throw new ExprValidationException("Property '" + unresolvedPropertyName + "' is not valid: " + ex.getMessage(), ex); EventTypeSPI contextType = (EventTypeSPI) validationContext.getContextDescriptor().getContextPropertyRegistry().getContextEventType(); Class type = JavaClassHelper.getBoxedType(contextType.getPropertyType(contextPropertyName)); evaluator = new ExprIdentNodeEvaluatorContext(streamNum, type, contextType.getGetterSPI(contextPropertyName));
public ExprNode validate(ExprValidationContext validationContext) throws ExprValidationException { if (this.getChildNodes().length != 1) { throw new ExprValidationException("Typeof node must have 1 child expression node supplying the expression to test"); } if (this.getChildNodes()[0] instanceof ExprStreamUnderlyingNode) { ExprStreamUnderlyingNode stream = (ExprStreamUnderlyingNode) getChildNodes()[0]; forge = new ExprTypeofNodeForgeStreamEvent(this, stream.getStreamId()); return null; } if (this.getChildNodes()[0] instanceof ExprIdentNode) { ExprIdentNode ident = (ExprIdentNode) getChildNodes()[0]; int streamNum = validationContext.getStreamTypeService().getStreamNumForStreamName(ident.getFullUnresolvedName()); if (streamNum != -1) { forge = new ExprTypeofNodeForgeStreamEvent(this, streamNum); return null; } EventType eventType = validationContext.getStreamTypeService().getEventTypes()[ident.getStreamId()]; FragmentEventType fragmentEventType = eventType.getFragmentType(ident.getResolvedPropertyName()); if (fragmentEventType != null) { EventPropertyGetterSPI getter = ((EventTypeSPI) eventType).getGetterSPI(ident.getResolvedPropertyName()); forge = new ExprTypeofNodeForgeFragmentType(this, ident.getStreamId(), getter, fragmentEventType.getFragmentType().getName()); return null; } } forge = new ExprTypeofNodeForgeInnerEval(this); return null; }
CodegenExpression fragment = ((EventTypeSPI) eventTypes[underlyingStreamNumber]).getGetterSPI(unnamedStreams.get(0).getStreamSelected().getStreamName()).eventBeanFragmentCodegen(ref("eventBean"), methodNode, codegenClassScope); block.declareVar(EventBean.class, "eventBean", arrayAtIndex(refEPS, constant(underlyingStreamNumber))) .declareVar(EventBean.class, "theEvent", cast(EventBean.class, fragment));