Are you using "contains" operator to check a hashmap for the existence of a value? "contains" should only be used with collections, not maps...

   []s
   Edson

2008/3/4, Brian Trezise <Brian.Trezise@intellidata.net>:

I'm getting a strange exception upon inserting an object into working memory.  Relevant information follows:

I'm creating a "smartdescription" which contains a string and some information about that string that is later added by the rules.  With the exception of one specific string, this seems to be working perfectly.  I'm using regexes to match the strings.

 

This is the regex where I'm having the problem:

   public static final String REGEX_APPLICATION_CURRENT_SENSE = ".*(" + "CURRENT[ .]?SENSE?" + ").*";

 

and the smartdescription string I'm testing is "aaaaaaaaaaaaaaaaaaa current sense aaaaaaaaaaaaa". 

 

I have determined that any other string that matches any of the identically formulated rules works with no problems.  If I put in something that doesn't match this regex, there is no exception.  The RHS of the rule in question is not reached in this case.

 

This is the exception:

java.lang.ClassCastException: java.util.HashMap

            at org.drools.base.evaluators.ObjectFactory$ObjectContainsEvaluator.evaluate(ObjectFactory.java:433)

            at org.drools.rule.LiteralRestriction.isAllowed(LiteralRestriction.java:61)

            at org.drools.rule.LiteralConstraint.isAllowed(LiteralConstraint.java:82)

            at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:132)

            at org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:22)

            at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:140)

            at org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:318)

            at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:153)

            at org.drools.reteoo.Rete.assertObject(Rete.java:175)

            at org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:192)

            at org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java:71)

            at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:909)

            at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:881)

            at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:682)

            at net.intellidata.sleuth.description.DefinitionRuleTest.testApplicationRules(DefinitionRuleTest.java:129)

            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

            at java.lang.reflect.Method.invoke(Unknown Source)

            at junit.framework.TestCase.runTest(TestCase.java:154)

            at junit.framework.TestCase.runBare(TestCase.java:127)

            at junit.framework.TestResult$1.protect(TestResult.java:106)

            at junit.framework.TestResult.runProtected(TestResult.java:124)

            at junit.framework.TestResult.run(TestResult.java:109)

            at junit.framework.TestCase.run(TestCase.java:118)

            at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)

            at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)

            at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)

            at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)

            at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)

            at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

 

Any idea what could be causing this???

 

DefinitionRuleTest.java:129 is

             workingMemory.insert(sd);

 

Thanks,

___________________________________________________
Brian Trezise
Staff Software Engineer
IntelliData, Inc
3173 s. uravan way
aurora, colorado 80013
T: 720.524.4864
brian.trezise@intellidata.net

 


_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users




--
  Edson Tirelli
  JBoss Drools Core Development
  Office: +55 11 3529-6000
  Mobile: +55 11 9287-5646
  JBoss, a division of Red Hat @ www.jboss.com