[jboss-jira] [JBoss JIRA] Resolved: (JBRULES-372) QueryResult.get fires ClassCastException when using the string argument

Edson Tirelli (JIRA) jira-events at jboss.com
Mon Jul 17 22:27:11 EDT 2006


     [ http://jira.jboss.com/jira/browse/JBRULES-372?page=all ]

Edson Tirelli resolved JBRULES-372.
-----------------------------------

    Fix Version/s: 3.0.3
       Resolution: Done

Fixed. 
There was 2 problems: 

* the column offset adjustment calculation for queries was not being done
* there was a minor bug in the map construction inside QueryResults.

Thanks to Giovanni for reporting and for providing a good test case. Let me know if you find any other problem.

Fixed in trunk (3.1m1) in revision #5132 and in 3.0.x branch in revision #5133.

------------------
Sending        drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
Adding         drools-compiler/src/test/resources/org/drools/integrationtests/test_Query.drl
Sending        drools-core/src/main/java/org/drools/QueryResults.java
Sending        drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java
Transmitting file data ....
Committed revision 5132.

------------------
Sending        drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
Adding         drools-compiler/src/test/resources/org/drools/integrationtests/test_Query.drl
Sending        drools-core/src/main/java/org/drools/QueryResults.java
Sending        drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java
Transmitting file data ...
Committed revision 5133.



> QueryResult.get fires ClassCastException when using the string argument
> -----------------------------------------------------------------------
>
>                 Key: JBRULES-372
>                 URL: http://jira.jboss.com/jira/browse/JBRULES-372
>             Project: JBoss Rules
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>         Environment: JBoss Rules 3.0.1 and JBoss Rules as downloaded from svn trunk as of 12/07/06 
>            Reporter: Giovanni Cuccu
>         Assigned To: Edson Tirelli
>             Fix For: 3.0.3
>
>         Attachments: QueryResult.java, QueryResults.java
>
>
> here is the simple test case:
> package simpletest;
> public class AssertedObject {
> 	private String value;
> 	public String getValue() {
> 		return value;
> 	}
> 	public void setValue(String value) {
> 		this.value = value;
> 	}
> 	public AssertedObject(String value) {
> 		// TODO Auto-generated constructor stub
> 		this.value = value;
> 	}
> 	
> 	
> }
> package simpletest;
> import simpletest.AssertedObject;
> rule rule1
> 	when
> 	then
> 		assert( new AssertedObject( "value1") );
> 		assert( new AssertedObject( "value2") );
> end
> query "assertedobjquery" 
>     assertedobj : AssertedObject( value=="value1" )
> end
> package simpletest;
> import java.io.InputStreamReader;
> import java.util.HashMap;
> import java.util.Iterator;
> import java.util.Map;
> import mit.rules.test.Prestazione;
> import mit.rules.test.StrutturaErogante;
> import mit.rules.test.TempiAttesa;
> import mit.rules.test.TestRules;
> import org.drools.QueryResult;
> import org.drools.QueryResults;
> import org.drools.RuleBase;
> import org.drools.RuleBaseFactory;
> import org.drools.WorkingMemory;
> import org.drools.audit.WorkingMemoryFileLogger;
> import org.drools.compiler.PackageBuilder;
> public class TestQuery {
> 	public static void main(String[] args) throws Exception {
> 		// TODO Auto-generated method stub
> 	    final PackageBuilder builder = new PackageBuilder();
> 		builder.addPackageFromDrl( new InputStreamReader( TestQuery.class.getResourceAsStream( "testquery.drl" ) ) );
> 		
> 		final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
> 		ruleBase.addPackage( builder.getPackage() );
> 		
> 		final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
> 		fireRules(workingMemory);
> 		        
> 	}
> 	
> 	public static void fireRules(WorkingMemory workingMemory) {
> 		final WorkingMemoryFileLogger logger = new WorkingMemoryFileLogger( workingMemory );
> 		logger.setFileName( "log/testquery" );
> 		
> 		workingMemory.fireAllRules();
> 		QueryResults results = workingMemory.getQueryResults( "assertedobjquery" );
> 		if (results==null || !results.iterator().hasNext()) {
> 			System.err.println("Empty list");
> 		} else {
> 			for ( Iterator it = results.iterator(); it.hasNext(); ) {
> 			    QueryResult result = ( QueryResult )it.next();;
> 			    AssertedObject assertedObject=(AssertedObject)result.get( "assertedobj" );
> 				System.out.println("AssertedObject with value " + assertedObject.getValue());
> 			}		
> 		}
> 		logger.writeToDisk();	
> 	}
> }

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

        



More information about the jboss-jira mailing list