[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