public Object get(EventBean event, int index) throws PropertyAccessException { if (!(event instanceof DecoratingEventBean)) { throw new PropertyAccessException("Mismatched property getter to EventBean type"); } DecoratingEventBean wrapper = (DecoratingEventBean) event; EventBean wrapped = wrapper.getUnderlyingEvent(); if (wrapped == null) { return null; } return undIndexed.get(wrapped, index); }
public CodegenExpression eventBeanGetIndexedCodegen(CodegenMethodScope codegenMethodScope, CodegenClassScope codegenClassScope, CodegenExpression beanExpression, CodegenExpression key) { CodegenMethod method = codegenMethodScope.makeChild(Object.class, WrapperGetterIndexed.class, codegenClassScope).addParam(EventBean.class, "event").addParam(int.class, "index").getBlock() .declareVar(DecoratingEventBean.class, "wrapper", cast(DecoratingEventBean.class, ref("event"))) .declareVar(EventBean.class, "wrapped", exprDotMethod(ref("wrapper"), "getUnderlyingEvent")) .ifRefNullReturnNull("wrapped") .methodReturn(undIndexed.eventBeanGetIndexedCodegen(codegenMethodScope, codegenClassScope, ref("wrapped"), ref("index"))); return localMethodBuild(method).pass(beanExpression).pass(key).call(); } }
public static CodegenExpression codegen(PropertyDotNonLambdaIndexedForge forge, CodegenMethodScope codegenMethodScope, ExprForgeCodegenSymbol exprSymbol, CodegenClassScope codegenClassScope) { CodegenMethod methodNode = codegenMethodScope.makeChild(forge.getEvaluationType(), PropertyDotNonLambdaIndexedForgeEval.class, codegenClassScope); CodegenExpressionRef refEPS = exprSymbol.getAddEPS(methodNode); Class evaluationType = forge.getParamForge().getEvaluationType(); methodNode.getBlock() .declareVar(EventBean.class, "event", arrayAtIndex(refEPS, constant(forge.getStreamId()))) .ifRefNullReturnNull("event") .declareVar(evaluationType, "key", forge.getParamForge().evaluateCodegen(evaluationType, methodNode, exprSymbol, codegenClassScope)) .methodReturn(forge.getIndexedGetter().eventBeanGetIndexedCodegen(methodNode, codegenClassScope, ref("event"), ref("key"))); return localMethod(methodNode); } }
public static CodegenExpression codegen(PropertyDotNonLambdaIndexedForge forge, CodegenMethodScope codegenMethodScope, ExprForgeCodegenSymbol exprSymbol, CodegenClassScope codegenClassScope) { CodegenMethod methodNode = codegenMethodScope.makeChild(forge.getEvaluationType(), PropertyDotNonLambdaIndexedForgeEval.class, codegenClassScope); CodegenExpressionRef refEPS = exprSymbol.getAddEPS(methodNode); Class evaluationType = forge.getParamForge().getEvaluationType(); methodNode.getBlock() .declareVar(EventBean.class, "event", arrayAtIndex(refEPS, constant(forge.getStreamId()))) .ifRefNullReturnNull("event") .declareVar(evaluationType, "key", forge.getParamForge().evaluateCodegen(evaluationType, methodNode, exprSymbol, codegenClassScope)) .methodReturn(forge.getIndexedGetter().eventBeanGetIndexedCodegen(methodNode, codegenClassScope, ref("event"), ref("key"))); return localMethod(methodNode); } }
public Object evaluate(EventBean[] eventsPerStream, boolean isNewData, ExprEvaluatorContext context) { EventBean event = eventsPerStream[forge.getStreamId()]; if (event == null) { return null; } Integer key = (Integer) paramEval.evaluate(eventsPerStream, isNewData, context); return forge.getIndexedGetter().get(event, key); }
public static CodegenExpression codegen(ExprDotNodeForgePropertyExpr forge, CodegenMethodScope codegenMethodScope, ExprForgeCodegenSymbol exprSymbol, CodegenClassScope codegenClassScope) { CodegenMethod methodNode = codegenMethodScope.makeChild(forge.getEvaluationType(), ExprDotNodeForgePropertyExprEvalIndexed.class, codegenClassScope); CodegenExpressionRef refEPS = exprSymbol.getAddEPS(methodNode); methodNode.getBlock() .declareVar(EventBean.class, "event", arrayAtIndex(refEPS, constant(forge.getStreamNum()))) .ifRefNullReturnNull("event") .declareVar(Integer.class, "index", forge.getExprForge().evaluateCodegen(Integer.class, methodNode, exprSymbol, codegenClassScope)) .ifRefNullReturnNull("index") .methodReturn(CodegenLegoCast.castSafeFromObjectType(forge.getEvaluationType(), forge.getIndexedGetter().eventBeanGetIndexedCodegen(methodNode, codegenClassScope, ref("event"), ref("index")))); return localMethod(methodNode); } }
public Object evaluate(EventBean[] eventsPerStream, boolean isNewData, ExprEvaluatorContext context) { EventBean event = eventsPerStream[forge.getStreamId()]; if (event == null) { return null; } Integer key = (Integer) paramEval.evaluate(eventsPerStream, isNewData, context); return forge.getIndexedGetter().get(event, key); }
public CodegenExpression eventBeanGetIndexedCodegen(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(int.class, "index").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(decoIndexed.eventBeanGetIndexedCodegen(codegenMethodScope, codegenClassScope, ref("wrapped"), ref("index"))); return localMethodBuild(method).pass(beanExpression).pass(key).call(); } };
public Object get(EventBean theEvent, int index) throws PropertyAccessException { if (!(theEvent instanceof DecoratingEventBean)) { throw new PropertyAccessException("Mismatched property getter to EventBean type"); } DecoratingEventBean wrapperEvent = (DecoratingEventBean) theEvent; Map map = wrapperEvent.getDecoratingProperties(); EventBean wrapped = eventBeanTypedEventFactory.adapterForTypedMap(map, underlyingMapType); return decoIndexed.get(wrapped, index); }
public Object evaluate(EventBean[] eventsPerStream, boolean isNewData, ExprEvaluatorContext context) { EventBean event = eventsPerStream[forge.getStreamNum()]; if (event == null) { return null; } Object index = exprEvaluator.evaluate(eventsPerStream, isNewData, context); if (index == null || (!(index instanceof Integer))) { log.warn(forge.getWarningText("integer", index)); return null; } return forge.getIndexedGetter().get(event, (Integer) index); }