[
https://issues.jboss.org/browse/DROOLS-394?page=com.atlassian.jira.plugin...
]
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