[jboss-jira] [JBoss JIRA] (DROOLS-493) Error to declare Map/List with generics when having a modify() on RHS
David Ball (JIRA)
issues at jboss.org
Wed Aug 20 13:21:30 EDT 2014
[ https://issues.jboss.org/browse/DROOLS-493?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12994458#comment-12994458 ]
David Ball commented on DROOLS-493:
-----------------------------------
I have the same behaviour in Drools 5.5.0-Final with Java 1.7.0_51
I have noted that the issue specifically occurs if a generic class variable is in scope where the modify() block occurs.
For example, this rule does _not_ exhibit the problem because stringList is not in scope where the modify() occurs:
{noformat}
rule "Test Rule - Works Due To Limited Scope"
when
o: Object( )
then
{
List<String> stringList = null;
}
modify(o) {/* dummy */}
end
{noformat}
whereas this rule _does_ hit the problem:
{noformat}
rule "Test Rule - Broken"
when
o: Object( )
then
List<String> stringList = null;
modify(o) {/* dummy */}
end
{noformat}
> Error to declare Map/List with generics when having a modify() on RHS
> ---------------------------------------------------------------------
>
> Key: DROOLS-493
> URL: https://issues.jboss.org/browse/DROOLS-493
> Project: Drools
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Environment: * OS: Mac OS X 10.9.2
> * Java SE 1.7
> * Drools Runtime 6.1.0-Final
> Reporter: Jinghai Rao
> Assignee: Mark Proctor
>
> For the following rule
> -----------------------------
> package com.sample
>
> import java.util.Map;
> import java.util.HashMap;
> declare TestFact
> @propertyReactive
> data : String
> end
> rule "Test Rule"
> when
> $fact : TestFact()
> then
> Map<String,String> a = new HashMap<String,String>();
> modify ($fact) {setData("0")}
> end
> ------------------------
> We get the following exception:
> java.lang.RuntimeException: Error while creating KieBase[Message [id=1, level=ERROR, path=rules/Sample.drl, line=11, column=0
> text=Unable to resolve type Map<String,String>:
> Unable to find class 'Map<String,String>']]
> at org.drools.compiler.kie.builder.impl.KieContainerImpl.getKieBase(KieContainerImpl.java:260)
> at org.drools.compiler.kie.builder.impl.KieContainerImpl.newKieSession(KieContainerImpl.java:400)
> at org.drools.compiler.kie.builder.impl.KieContainerImpl.newKieSession(KieContainerImpl.java:375)
> at com.sample.DroolsTest.main(DroolsTest.java:17)
> If we remove the generics, or not using modify(), this has no error.
--
This message was sent by Atlassian JIRA
(v6.2.6#6264)
More information about the jboss-jira
mailing list