public static CodegenExpression codegen(PropertyDotNonLambdaMappedForge forge, CodegenMethodScope codegenMethodScope, ExprForgeCodegenSymbol exprSymbol, CodegenClassScope codegenClassScope) { CodegenMethod methodNode = codegenMethodScope.makeChild(forge.getEvaluationType(), PropertyDotNonLambdaMappedForgeEval.class, codegenClassScope); CodegenExpressionRef refEPS = exprSymbol.getAddEPS(methodNode); methodNode.getBlock() .declareVar(EventBean.class, "event", arrayAtIndex(refEPS, constant(forge.getStreamId()))) .ifRefNullReturnNull("event") .declareVar(String.class, "key", forge.getParamForge().evaluateCodegen(String.class, methodNode, exprSymbol, codegenClassScope)) .methodReturn(forge.getMappedGetter().eventBeanGetMappedCodegen(methodNode, codegenClassScope, ref("event"), ref("key"))); return localMethod(methodNode); }
public static CodegenExpression codegen(PropertyDotNonLambdaMappedForge forge, CodegenMethodScope codegenMethodScope, ExprForgeCodegenSymbol exprSymbol, CodegenClassScope codegenClassScope) { CodegenMethod methodNode = codegenMethodScope.makeChild(forge.getEvaluationType(), PropertyDotNonLambdaMappedForgeEval.class, codegenClassScope); CodegenExpressionRef refEPS = exprSymbol.getAddEPS(methodNode); methodNode.getBlock() .declareVar(EventBean.class, "event", arrayAtIndex(refEPS, constant(forge.getStreamId()))) .ifRefNullReturnNull("event") .declareVar(String.class, "key", forge.getParamForge().evaluateCodegen(String.class, methodNode, exprSymbol, codegenClassScope)) .methodReturn(forge.getMappedGetter().eventBeanGetMappedCodegen(methodNode, codegenClassScope, ref("event"), ref("key"))); return localMethod(methodNode); }
public CodegenExpression eventBeanGetMappedCodegen(CodegenMethodScope codegenMethodScope, CodegenClassScope codegenClassScope, CodegenExpression beanExpression, CodegenExpression key) { CodegenMethod method = codegenMethodScope.makeChild(Object.class, WrapperGetterMapped.class, codegenClassScope).addParam(EventBean.class, "event").addParam(String.class, "key").getBlock() .declareVar(DecoratingEventBean.class, "wrapper", cast(DecoratingEventBean.class, ref("event"))) .declareVar(EventBean.class, "wrapped", exprDotMethod(ref("wrapper"), "getUnderlyingEvent")) .ifRefNullReturnNull("wrapped") .methodReturn(undMapped.eventBeanGetMappedCodegen(codegenMethodScope, codegenClassScope, ref("wrapped"), ref("key"))); return localMethodBuild(method).pass(beanExpression).pass(key).call(); } };
public static CodegenExpression codegen(ExprDotNodeForgePropertyExpr forge, CodegenMethodScope codegenMethodScope, ExprForgeCodegenSymbol exprSymbol, CodegenClassScope codegenClassScope) { CodegenMethod methodNode = codegenMethodScope.makeChild(forge.getEvaluationType(), ExprDotNodeForgePropertyExprEvalMapped.class, codegenClassScope); CodegenExpressionRef refEPS = exprSymbol.getAddEPS(methodNode); methodNode.getBlock() .declareVar(EventBean.class, "event", arrayAtIndex(refEPS, constant(forge.getStreamNum()))) .ifRefNullReturnNull("event") .declareVar(String.class, "result", forge.getExprForge().evaluateCodegen(String.class, methodNode, exprSymbol, codegenClassScope)) .ifRefNullReturnNull("result") .methodReturn(CodegenLegoCast.castSafeFromObjectType(forge.getEvaluationType(), forge.getMappedGetter().eventBeanGetMappedCodegen(methodNode, codegenClassScope, ref("event"), ref("result")))); return localMethod(methodNode); }
public CodegenExpression eventBeanGetMappedCodegen(CodegenMethodScope codegenMethodScope, CodegenClassScope codegenClassScope, CodegenExpression beanExpression, CodegenExpression key) { CodegenExpressionField factory = codegenClassScope.addOrGetFieldSharable(EventBeanTypedEventFactoryCodegenField.INSTANCE); CodegenExpressionField eventType = codegenClassScope.addFieldUnshared(true, EventType.class, EventTypeUtility.resolveTypeCodegen(underlyingEventType, EPStatementInitServices.REF)); CodegenMethod method = codegenMethodScope.makeChild(Object.class, WrapperEventType.class, codegenClassScope).addParam(EventBean.class, "theEvent").addParam(String.class, "mapKey").getBlock() .declareVar(DecoratingEventBean.class, "wrapperEvent", cast(DecoratingEventBean.class, ref("theEvent"))) .declareVar(Map.class, "map", exprDotMethod(ref("wrapperEvent"), "getDecoratingProperties")) .declareVar(EventBean.class, "wrapped", exprDotMethod(factory, "adapterForTypedMap", ref("map"), eventType)) .methodReturn(decoMapped.eventBeanGetMappedCodegen(codegenMethodScope, codegenClassScope, ref("wrapped"), ref("mapKey"))); return localMethodBuild(method).pass(beanExpression).pass(key).call(); } };