[jboss-jira] [JBoss JIRA] (DROOLS-467) Decision tables: parsing an xls throws an IndexOutOfBoundsException, but it should throw a better error message (including the invalid cell in the xls

Geoffrey De Smet (JIRA) issues at jboss.org
Wed Apr 16 05:24:33 EDT 2014


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

Geoffrey De Smet commented on DROOLS-467:
-----------------------------------------

REPRODUCE RECIPE:
- Take a working XLS, for which the first ACTION column has a empty cell directly below the ACTION cell.
- Take the CONDITION column before that first ACTION column and expand the cell directly below the CONDITION cell, which holds the class name, by merging it with the cell below the ACTION cell.

Alternative:
- Just try to parse the DRL above - it should give a better error message than the IndexOutOfBoundsException.
                
> Decision tables: parsing an xls throws an IndexOutOfBoundsException, but it should throw a better error message (including the invalid cell in the xls
> ------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DROOLS-467
>                 URL: https://issues.jboss.org/browse/DROOLS-467
>             Project: Drools
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions: 6.1.0.Beta2
>            Reporter: Geoffrey De Smet
>            Assignee: Mark Proctor
>         Attachments: cloudBalancingExtraScoreRules.xls, cloudBalancingScoreRules.drl
>
>
> I apparently did something wrong in my xls. But the error message doesn't give me a clue.
> {code}
> Exception in thread "main" java.lang.IndexOutOfBoundsException: Error trying to access field at position 0
> 	at org.drools.core.factmodel.ClassDefinition.getField(ClassDefinition.java:185)
> 	at org.drools.compiler.rule.builder.PatternBuilder.processPositional(PatternBuilder.java:606)
> 	at org.drools.compiler.rule.builder.PatternBuilder.processConstraintsAndBinds(PatternBuilder.java:515)
> 	at org.drools.compiler.rule.builder.PatternBuilder.build(PatternBuilder.java:326)
> 	at org.drools.compiler.rule.builder.PatternBuilder.build(PatternBuilder.java:137)
> 	at org.drools.compiler.rule.builder.GroupElementBuilder.build(GroupElementBuilder.java:67)
> 	at org.drools.compiler.rule.builder.RuleBuilder.build(RuleBuilder.java:90)
> 	at org.drools.compiler.compiler.PackageBuilder.addRule(PackageBuilder.java:3520)
> 	at org.drools.compiler.compiler.PackageBuilder.compileRules(PackageBuilder.java:1093)
> 	at org.drools.compiler.compiler.PackageBuilder.compileAllRules(PackageBuilder.java:972)
> 	at org.drools.compiler.compiler.CompositeKnowledgeBuilderImpl.buildRules(CompositeKnowledgeBuilderImpl.java:275)
> 	at org.drools.compiler.compiler.CompositeKnowledgeBuilderImpl.buildPackages(CompositeKnowledgeBuilderImpl.java:99)
> 	at org.drools.compiler.compiler.CompositeKnowledgeBuilderImpl.build(CompositeKnowledgeBuilderImpl.java:87)
> 	at org.drools.compiler.kie.builder.impl.AbstractKieModule.buildKnowledgePackages(AbstractKieModule.java:219)
> 	at org.drools.compiler.kie.builder.impl.AbstractKieProject.verify(AbstractKieProject.java:39)
> 	at org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildKieProject(KieBuilderImpl.java:208)
> 	at org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildAll(KieBuilderImpl.java:177)
> 	at org.optaplanner.core.config.score.director.ScoreDirectorFactoryConfig.buildKieBase(ScoreDirectorFactoryConfig.java:376)
> 	at org.optaplanner.core.config.score.director.ScoreDirectorFactoryConfig.buildDroolsScoreDirectorFactory(ScoreDirectorFactoryConfig.java:318)
> 	at org.optaplanner.core.config.score.director.ScoreDirectorFactoryConfig.buildScoreDirectorFactory(ScoreDirectorFactoryConfig.java:213)
> 	at org.optaplanner.core.config.score.director.ScoreDirectorFactoryConfig.buildScoreDirectorFactory(ScoreDirectorFactoryConfig.java:201)
> 	at org.optaplanner.core.config.solver.SolverConfig.buildSolver(SolverConfig.java:178)
> 	at org.optaplanner.core.impl.solver.XStreamXmlSolverFactory.buildSolver(XStreamXmlSolverFactory.java:128)
> 	at org.optaplanner.examples.cloudbalancing.app.CloudBalancingApp.createSolver(CloudBalancingApp.java:48)
> 	at org.optaplanner.examples.common.app.CommonApp.createSolutionBusiness(CommonApp.java:106)
> 	at org.optaplanner.examples.common.app.CommonApp.init(CommonApp.java:92)
> 	at org.optaplanner.examples.common.app.CommonApp.init(CommonApp.java:88)
> 	at org.optaplanner.examples.cloudbalancing.app.CloudBalancingApp.main(CloudBalancingApp.java:34)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:606)
> 	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
> {code}

--
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