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; }
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 CodegenExpression make(CodegenMethodScope parent, SAIFFInitializeSymbol symbols, CodegenClassScope classScope) { CodegenMethod method = parent.makeChild(VariableTriggerWriteDesc.class, this.getClass(), classScope); method.getBlock() .declareVar(VariableTriggerWriteDesc.class, "desc", newInstance(VariableTriggerWriteDesc.class)) .exprDotMethod(ref("desc"), "setType", EventTypeUtility.resolveTypeCodegen(type, symbols.getAddInitSvc(method))) .exprDotMethod(ref("desc"), "setVariableName", constant(variableName)) .exprDotMethod(ref("desc"), "setWriter", EventTypeUtility.codegenWriter(type, getterType, evaluationType, writer, method, this.getClass(), classScope)) .exprDotMethod(ref("desc"), "setGetter", EventTypeUtility.codegenGetterWCoerce(getter, getterType, null, method, this.getClass(), classScope)) .methodReturn(ref("desc")); return localMethod(method); } }
@Override public CodegenMethod makeCodegen(CodegenMethodScope parent, SAIFFInitializeSymbolWEventType symbols, CodegenClassScope classScope) { CodegenMethod method = parent.makeChild(FilterSpecLookupableAdvancedIndex.class, FilterSpecLookupableAdvancedIndexForge.class, classScope); Function<EventPropertyGetterSPI, CodegenExpression> toEval = getter -> EventTypeUtility.codegenGetterWCoerce(getter, Double.class, null, method, this.getClass(), classScope); method.getBlock() .declareVar(FilterSpecLookupableAdvancedIndex.class, "lookupable", newInstance(FilterSpecLookupableAdvancedIndex.class, constant(expression), constantNull(), enumValue(returnType, "class"))) .exprDotMethod(ref("lookupable"), "setQuadTreeConfig", quadTreeConfig.make()) .exprDotMethod(ref("lookupable"), "setX", toEval.apply(x)) .exprDotMethod(ref("lookupable"), "setY", toEval.apply(y)) .exprDotMethod(ref("lookupable"), "setWidth", toEval.apply(width)) .exprDotMethod(ref("lookupable"), "setHeight", toEval.apply(height)) .exprDotMethod(ref("lookupable"), "setIndexType", constant(indexType)) .expression(exprDotMethodChain(symbols.getAddInitSvc(method)).add(EPStatementInitServices.GETFILTERSHAREDLOOKUPABLEREGISTERY).add("registerLookupable", symbols.getAddEventType(method), ref("lookupable"))) .methodReturn(ref("lookupable")); return method; }
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 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); } }
Class getterType = eventType.getPropertyType(rangeProps[i]); Class coercionType = rangeTypes == null ? null : rangeTypes[i]; CodegenExpression eval = EventTypeUtility.codegenGetterWCoerce(getter, getterType, coercionType, method, this.getClass(), classScope); makeMethod.getBlock().assignArrayElement(ref("getters"), constant(i), eval);
public CodegenExpression makeCodegen(CodegenMethodScope parent, SAIFFInitializeSymbol symbols, CodegenClassScope classScope) { CodegenMethod method = parent.makeChild(ContextControllerDetailKeyedItem.class, this.getClass(), classScope); Class[] types = EventTypeUtility.getPropertyTypes(filterSpecCompiled.getFilterForEventType(), propertyNames.toArray(new String[0])); method.getBlock() .declareVar(FilterSpecActivatable.class, "activatable", localMethod(filterSpecCompiled.makeCodegen(method, symbols, classScope))) .declareVar(ExprFilterSpecLookupable[].class, "lookupables", newArrayByLength(ExprFilterSpecLookupable.class, constant(getters.length))); for (int i = 0; i < getters.length; i++) { CodegenExpression getter = EventTypeUtility.codegenGetterWCoerce(getters[i], types[i], types[i], method, this.getClass(), classScope); CodegenExpression lookupable = newInstance(ExprFilterSpecLookupable.class, constant(propertyNames.get(i)), getter, constant(types[i]), constantFalse()); CodegenExpression eventType = exprDotMethod(ref("activatable"), "getFilterForEventType"); method.getBlock() .assignArrayElement(ref("lookupables"), constant(i), lookupable) .expression(exprDotMethodChain(symbols.getAddInitSvc(method)).add(EPStatementInitServices.GETFILTERSHAREDLOOKUPABLEREGISTERY).add("registerLookupable", eventType, arrayAtIndex(ref("lookupables"), constant(i)))); } method.getBlock() .declareVar(ContextControllerDetailKeyedItem.class, "item", newInstance(ContextControllerDetailKeyedItem.class)) .exprDotMethod(ref("item"), "setGetter", EventTypeUtility.codegenGetterMayMultiKeyWCoerce(filterSpecCompiled.getFilterForEventType(), getters, types, null, method, this.getClass(), classScope)) .exprDotMethod(ref("item"), "setLookupables", ref("lookupables")) .exprDotMethod(ref("item"), "setPropertyTypes", constant(types)) .exprDotMethod(ref("item"), "setFilterSpecActivatable", ref("activatable")) .exprDotMethod(ref("item"), "setAliasName", constant(aliasName)) .methodReturn(ref("item")); return localMethod(method); } }
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 static CodegenExpression codegenGetterMayMultiKeyWCoerce(EventType eventType, EventPropertyGetterSPI[] getters, Class[] types, Class[] optionalCoercionTypes, CodegenMethod method, Class generator, CodegenClassScope classScope) { if (getters.length == 1) { return codegenGetterWCoerce(getters[0], types[0], optionalCoercionTypes == null ? null : optionalCoercionTypes[0], method, generator, classScope); } CodegenExpressionNewAnonymousClass anonymous = newAnonymousClass(method.getBlock(), EventPropertyValueGetter.class); CodegenMethod get = CodegenMethod.makeParentNode(Object.class, generator, classScope).addParam(CodegenNamedParam.from(EventBean.class, "bean")); anonymous.addMethod("get", get); get.getBlock() .declareVar(eventType.getUnderlyingType(), "und", cast(eventType.getUnderlyingType(), exprDotUnderlying(ref("bean")))) .declareVar(Object[].class, "values", newArrayByLength(Object.class, constant(getters.length))) .declareVar(HashableMultiKey.class, "valuesMk", newInstance(HashableMultiKey.class, ref("values"))); for (int i = 0; i < getters.length; i++) { CodegenExpression result = getters[i].underlyingGetCodegen(ref("und"), get, classScope); Class typeBoxed = JavaClassHelper.getBoxedType(types[i]); if (optionalCoercionTypes != null && typeBoxed != JavaClassHelper.getBoxedType(optionalCoercionTypes[i])) { SimpleNumberCoercer coercer = SimpleNumberCoercerFactory.getCoercer(typeBoxed, JavaClassHelper.getBoxedType(optionalCoercionTypes[i])); get.getBlock().declareVar(typeBoxed, "prop_" + i, CodegenLegoCast.castSafeFromObjectType(typeBoxed, result)); result = coercer.coerceCodegen(ref("prop_" + i), typeBoxed); } get.getBlock().assignArrayElement("values", constant(i), result); } get.getBlock().methodReturn(ref("valuesMk")); return anonymous; }