[jboss-jira] [JBoss JIRA] Created: (JBRULES-2500) soundslike throws NullPointerException when one argument contains no consonants

Steve Ronderos (JIRA) jira-events at lists.jboss.org
Tue May 4 18:22:05 EDT 2010


soundslike throws NullPointerException when one argument contains no consonants
-------------------------------------------------------------------------------

                 Key: JBRULES-2500
                 URL: https://jira.jboss.org/jira/browse/JBRULES-2500
             Project: Drools
          Issue Type: Bug
      Security Level: Public (Everyone can see)
          Components: drools-core
    Affects Versions: 5.0.1.FINAL
         Environment: mvel2-2.0.12
            Reporter: Steve Ronderos
            Assignee: Mark Proctor


When using soundslike, if one argument can't be handled by Soundex an Exception is thrown.  

My exact situation is that the 1st parameter (before the soundslike operator) resolves to a string that soundex does not support.  It could be a string with only vowels, numbers and spaces.  I would expect soundslike to simply return false.

The stacktrace:

java.lang.NullPointerException
	at org.drools.base.evaluators.SoundslikeEvaluatorsDefinition$StringSoundsLikeEvaluator.evaluate(SoundslikeEvaluatorsDefinition.java:148)
	at org.drools.rule.LiteralRestriction.isAllowed(LiteralRestriction.java:92)
	at org.drools.rule.LiteralConstraint.isAllowed(LiteralConstraint.java:109)
	at org.drools.rule.OrConstraint.__AW_isAllowed(OrConstraint.java:51)
	at org.drools.rule.OrConstraint.isAllowed(OrConstraint.java)
	at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:143)
	at org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:42)
	at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:185)
	at org.drools.reteoo.EntryPointNode.__AW_assertObject(EntryPointNode.java:146)
	at org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java)
	at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1046)
	at org.drools.common.AbstractWorkingMemory.__AW_insert(AbstractWorkingMemory.java:1001)
	at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java)
	at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:788)
	at org.drools.impl.StatelessKnowledgeSessionImpl.__AW_execute(StatelessKnowledgeSessionImpl.java:259)
	at org.drools.impl.StatelessKnowledgeSessionImpl.execute(StatelessKnowledgeSessionImpl.java)

I checked out the code and found that when soundex can not parse a string it returns null.

I think this could be avoided by doing the Soundex.soundex(String) and checking for null before calling equals.

I'll try to submit a patch if I have the time.


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

        


More information about the jboss-jira mailing list