[jboss-jira] [JBoss JIRA] Created: (JBRULES-2751) NullPointerException in DeclarationTypeFixer: An rule compilation error should give a clear errow warning with an indecation of which rule is the culprit instead of a NPE

Geoffrey De Smet (JIRA) jira-events at lists.jboss.org
Sun Oct 24 03:42:54 EDT 2010


NullPointerException in DeclarationTypeFixer: An rule compilation error should give a clear errow warning with an indecation of which rule is the culprit instead of a NPE
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

                 Key: JBRULES-2751
                 URL: https://jira.jboss.org/browse/JBRULES-2751
             Project: Drools
          Issue Type: Bug
      Security Level: Public (Everyone can see)
          Components: drools-compiler (expert)
    Affects Versions: 5.1.1.FINAL
            Reporter: Geoffrey De Smet
            Assignee: Edson Tirelli
             Fix For: 5.2.0.M1


{code}
Exception in thread "main" java.lang.NullPointerException
	at org.drools.rule.builder.dialect.java.DeclarationTypeFixer.fix(DeclarationTypeFixer.java:17)
	at org.drools.rule.builder.dialect.java.AbstractJavaRuleBuilder.createVariableContext(AbstractJavaRuleBuilder.java:90)
	at org.drools.rule.builder.dialect.java.JavaAccumulateBuilder.build(JavaAccumulateBuilder.java:112)
	at org.drools.rule.builder.dialect.java.JavaAccumulateBuilder.build(JavaAccumulateBuilder.java:54)
	at org.drools.rule.builder.PatternBuilder.build(PatternBuilder.java:223)
	at org.drools.rule.builder.PatternBuilder.build(PatternBuilder.java:108)
	at org.drools.rule.builder.GroupElementBuilder.build(GroupElementBuilder.java:69)
	at org.drools.rule.builder.RuleBuilder.build(RuleBuilder.java:79)
	at org.drools.compiler.PackageBuilder.addRule(PackageBuilder.java:1149)
	at org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:631)
	at org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:270)
	at org.drools.planner.config.localsearch.LocalSearchSolverConfig.buildRuleBase(LocalSearchSolverConfig.java:209)
	at org.drools.planner.config.localsearch.LocalSearchSolverConfig.buildSolver(LocalSearchSolverConfig.java:186)
	at org.drools.planner.config.XmlSolverConfigurer.buildSolver(XmlSolverConfigurer.java:93)
	at org.drools.planner.examples.cloudbalancing.app.CloudBalancingApp.createSolver(CloudBalancingApp.java:43)
	at org.drools.planner.examples.common.app.CommonApp.createSolutionBusiness(CommonApp.java:59)
	at org.drools.planner.examples.common.app.CommonApp.<init>(CommonApp.java:38)
	at org.drools.planner.examples.cloudbalancing.app.CloudBalancingApp.<init>(CloudBalancingApp.java:30)
	at org.drools.planner.examples.cloudbalancing.app.CloudBalancingApp.main(CloudBalancingApp.java:36)
	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 com.intellij.rt.execution.application.AppMain.main(AppMain.java:115)
{code}

Here's the rule which causes this:
{code}
rule "minimalCpuPowerTotal"
    when
        $cloudComputer : CloudComputer($cpuPower : cpuPower)
        $minimalCpuPowerTotal : Number(intValue > $cpuPower) from accumulate(
            CloudAssignment(
                cloudComputer == $cloudComputer,
                $minimalCpuPower : minimalCpuPower), // This is the problem, CloudAssignment.getMinimalCpuPower does not exist yet
            sum($minimalCpuPower)
        )
    then
        insertLogical(new IntConstraintOccurrence("minimalCpuPowerTotal", ConstraintType.NEGATIVE_HARD,
                $minimalCpuPowerTotal - $cpuPower,
                $cloudComputer));
end
{code}

CloudAssignment did not have a getter for minimalCpuPower yet.
The compilation error should clearly say that its the rule minimalCpuPowerTotal which has a problem and that the getter for the field minimalCpuPower wasn't found.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jboss-jira mailing list