[jboss-jira] [JBoss JIRA] Assigned: (JBRULES-1952) Empty rule.package file causes NullPointerException in Drools Eclipse plugin when creating guided rules

Kris Verlaenen (JIRA) jira-events at lists.jboss.org
Tue Feb 3 12:07:44 EST 2009


     [ https://jira.jboss.org/jira/browse/JBRULES-1952?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Kris Verlaenen reassigned JBRULES-1952:
---------------------------------------

    Assignee: Kris Verlaenen  (was: Mark Proctor)


> Empty rule.package file causes NullPointerException in Drools Eclipse plugin when creating guided rules
> -------------------------------------------------------------------------------------------------------
>
>                 Key: JBRULES-1952
>                 URL: https://jira.jboss.org/jira/browse/JBRULES-1952
>             Project: JBoss Drools
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: drools-eclipse
>    Affects Versions: 5.0.0.M5
>         Environment: Applies to all OS Platforms
>            Reporter: Shahad Ahmed
>            Assignee: Kris Verlaenen
>
> The Drools Eclipse 5.0M5 plugin reports a NullPointerException from rules files in a project if the project has a rule.package file that is essentially empty i.e. contain no package name, imports etc (but may contain comments).
> To recreate:
> 1. Create a new Drools project.
> 2. Add a new Guided Rules File to the project. At this point a new empty rule.package file is created automatically by the plugin and the following error is reported against the new guided rules file:
> Error: java.lang.NullPointerException
> If you add a package name to the rule.package file and rebuild the project then the error disappears.
> Possible Patch:
> I added some debug to the DroolsEclipsePlugin class and captured the stack trace (given below). Although the NPE is thrown in PackageBuilder.validateUniqueRuleNames, the problem seems to be in the DroolsEclipsePlugin.generateParsedResource method where, if a package has a rule.package file then it is added to the package in the following code:
> if ( packageDef != null ) {
>     builder.addPackage( parseResource( packageDef,
>                                     false ).getPackageDescr());
> }
> However, for an empty rule.package file the expression parseResource(packageDef,false).getPackageDescr() returns null and so that null is passed to builder.addPackage, causing the NPE.
> I think the fix is simply to add a null check guard around the offending line in DroolsEclipsePlugin.generateParsedResource as follows:
> if ( packageDef != null ) {
>     PackageDescr desc = parseResource( packageDef,
>                                        false ).getPackageDescr();
>     if (desc != null){
>         builder.addPackage( desc);
>     }
> }
> NOTE: After this fix is applied I see a different NPE error reported, but that is to do with rule.package files that do not define a package name and is a separate issue, which I've raised as a separate JIRA  (JBRULES-1951)
> java.lang.NullPointerException
>         at org.drools.compiler.PackageBuilder.validateUniqueRuleNames(PackageBui
> lder.java:826)
>         at org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:548
> )
>         at org.drools.eclipse.DroolsEclipsePlugin.generateParsedResource(Unknown
>  Source)
>         at org.drools.eclipse.DroolsEclipsePlugin.parseBRLResource(Unknown Sourc
> e)
>         at org.drools.eclipse.builder.DroolsBuilder.parseBRLFile(Unknown Source)
>         at org.drools.eclipse.builder.DroolsBuilder.parseResource(Unknown Source
> )
>         at org.drools.eclipse.builder.DroolsBuilder$DroolsBuildVisitor.visit(Unk
> nown Source)
>         at org.eclipse.core.internal.resources.Resource$2.visit(Resource.java:10
> 6)
>         at org.eclipse.core.internal.resources.Resource$1.visitElement(Resource.
> java:58)
>         at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(Elem
> entTreeIterator.java:81)
>         at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(Elem
> entTreeIterator.java:85)
>         at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(Elem
> entTreeIterator.java:85)
>         at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(Elem
> entTreeIterator.java:85)
>         at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(Elem
> entTreeIterator.java:85)
>         at org.eclipse.core.internal.watson.ElementTreeIterator.iterate(ElementT
> reeIterator.java:126)
>         at org.eclipse.core.internal.resources.Resource.accept(Resource.java:68)
>         at org.eclipse.core.internal.resources.Resource.accept(Resource.java:104
> )
>         at org.eclipse.core.internal.resources.Resource.accept(Resource.java:88)
>         at org.drools.eclipse.builder.DroolsBuilder.fullBuild(Unknown Source)
>         at org.drools.eclipse.builder.DroolsBuilder.incrementalBuild(Unknown Sou
> rce)
>         at org.drools.eclipse.builder.DroolsBuilder.build(Unknown Source)
>         at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java
> :633)
>         at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>         at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager
> .java:170)
>         at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager
> .java:201)
>         at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java
> :253)
>         at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>         at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager
> .java:256)
>         at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildMan
> ager.java:309)
>         at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java
> :341)
>         at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.ja
> va:140)
>         at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:2
> 38)
>         at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

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

        



More information about the jboss-jira mailing list