[jboss-jira] [JBoss JIRA] (DROOLS-394) java.lang.RuntimeException: cannot invoke getter

Davide Sottara (JIRA) issues at jboss.org
Wed Jan 8 22:55:32 EST 2014


    [ https://issues.jboss.org/browse/DROOLS-394?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12934611#comment-12934611 ] 

Davide Sottara commented on DROOLS-394:
---------------------------------------

Are you sure that responseData is 1) always not null and 2) always an instance of EnergyUsage?
You'll also have to make sure that none of the intermediate getters returns null.
                
> java.lang.RuntimeException: cannot invoke getter
> ------------------------------------------------
>
>                 Key: DROOLS-394
>                 URL: https://issues.jboss.org/browse/DROOLS-394
>             Project: Drools
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>            Reporter: leonardo lizana
>            Assignee: Mark Proctor
>
> we are using drools 5.4.final. and below is the rule
> rule "EnergyUsage data not empty"
>       dialect "java"	
>       salience 100
>       no-loop
>   when
>       $httpResponse : HttpResponse(
> 									(((EnergyUsage)responseData).energyUsageDetail.billingGroup!=null && ((EnergyUsage)responseData).energyUsageDetail.billingGroup!=0) || 
>       								((EnergyUsage)responseData).energyUsageDetail.capacityPLCs.size()>0 ||
> 									((EnergyUsage)responseData).energyUsageDetail.networkServicePLCs.size()>0 ||
>       								((EnergyUsage)responseData).energyUsageDetail.servicePoint!=null ||
>       								((EnergyUsage)responseData).energyUsageDetail.historicalUsages.size() > 0
>       					);
>       					
>      
>   then
>       System.out.println("[EnergyUsage data not empty] rule has been fired...");
>       $httpResponse.setStatusCode(EisConstants.STATUS_OK);
>       $httpResponse.setErrorMessage("");
> end
> rule "EnergyUsage data empty"
>       dialect "java"	
>       no-loop
>   when
>       $httpResponse : HttpResponse(
> 									(((EnergyUsage)responseData).energyUsageDetail.billingGroup==null || ((EnergyUsage)responseData).energyUsageDetail.billingGroup==0) && 
>       								((EnergyUsage)responseData).energyUsageDetail.capacityPLCs.size()==0 &&
> 									((EnergyUsage)responseData).energyUsageDetail.networkServicePLCs.size()==0 &&
>       								((EnergyUsage)responseData).energyUsageDetail.servicePoint==null &&
>       								((EnergyUsage)responseData).energyUsageDetail.historicalUsages.size() == 0
>       					);
>       					
>      
>   then
>       System.out.println("[EnergyUsage data empty] rule has been fired...");
>       $httpResponse.setStatusCode(EisConstants.STATUS_OK);
>       $httpResponse.setErrorMessage("Data Screen Scrapping is empty for this account");
> end
> Here is log error:
> -------------------------
> java.lang.RuntimeException: cannot invoke getter: getEnergyUsageDetail [declr.class: com.bluestarenergy.core.eis.common.usage.EnergyUsage; act.class: com.bluestarenergy.core.eis.common.usage.EnergyUsage] (see trace)
>         at org.mvel2.optimizers.impl.refl.nodes.GetterAccessor.getValue(GetterAccessor.java:74)
>         at org.mvel2.ast.Union.getReducedValueAccelerated(Union.java:41)
>         at org.mvel2.ast.BinaryOperation.getReducedValueAccelerated(BinaryOperation.java:107)
>         at org.mvel2.ast.Or.getReducedValueAccelerated(Or.java:34)
>         at org.mvel2.ast.Or.getReducedValueAccelerated(Or.java:34)
>         at org.mvel2.ast.Or.getReducedValueAccelerated(Or.java:34)
>         at org.mvel2.ast.Or.getReducedValueAccelerated(Or.java:34)
>         at org.mvel2.MVELRuntime.execute(MVELRuntime.java:85)
>         at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:123)
>         at org.mvel2.MVEL.executeExpression(MVEL.java:930)
>         at org.drools.rule.constraint.MvelConditionEvaluator.evaluate(MvelConditionEvaluator.java:70)
>         at org.drools.rule.constraint.MvelConditionEvaluator.evaluate(MvelConditionEvaluator.java:49)
>         at org.drools.rule.constraint.MvelConstraint.evaluate(MvelConstraint.java:167)
>         at org.drools.rule.constraint.MvelConstraint.isAllowed(MvelConstraint.java:124)
>         at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:137)
>         at org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:497)
>         at org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:382)
>         at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:235)
>         at org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:240)
>         at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:337)
>         at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:298)
>         at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:888)
>         at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:847)
>         at org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:269)
>         at com.aepenergy.b2b.services.energyusage.UsageRulesServiceImpl.ruleCompliance(UsageRulesServiceImpl.java:19)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:597)
>         at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
>         at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
>         at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
>         at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
>         at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
>         at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)
>         at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
>         at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
>         at $Proxy161.ruleCompliance(Unknown Source)
>         at com.aepenergy.b2b.services.energyusage.EnergyUsageCommunicationServiceImpl.processRequestEnergyUsageHttp(EnergyUsageCommunicationServiceImpl.java:52)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the jboss-jira mailing list