[ http://jira.codehaus.org/browse/DROOLS-470?page=comments#action_55302 ] 

Kris Verlaenen commented on DROOLS-470:
---------------------------------------

The problem seems to be much more general:
When parsing java rules, java errors are not detected in conditions and actions 
in a lot of cases and generate errors at runtime.
Examples include referencing undeclared parameters, using methods or classes 
that are unknown, invalid use of methods (wrong args etc), and many more.

> condition ending with ; is not considered as wrong when parsing ruleset but 
> generates error when asserting an object
> --------------------------------------------------------------------------------------------------------------------
>
>          Key: DROOLS-470
>          URL: http://jira.codehaus.org/browse/DROOLS-470
>      Project: drools
>         Type: Bug

>   Components: semantics.java
>     Versions: 2.5
>     Reporter: Kris Verlaenen
>     Priority: Minor

>
>
> When creating a java condition ending with a semi-colon, loading of the 
> ruleset is successful.
> e.g. when creating a rule containing
> <java:condition>
>     true;
> </java:condition>
> then
> ruleBase = 
> RuleBaseLoader.loadFromInputStream(this.getClass().getResourceAsStream( 
> "/myrule.java.drl" ))
> does not generate any errors.
> Although, when asserting an object in the working memory that leads to the 
> evaluation of that condition, first some output is written to the system out, 
> followed by an exception:
> drools/org/MyRuleSet_1136384249796/java/Allow_ProviderA_access_0.java(26)
> Syntax error on token ";", delete this token
> drools/org/MyRuleSet_1136384249796/java/Allow_ProviderA_access_0.java(26)
> Syntax error on token ";", delete this token
> java.lang.NoClassDefFoundError: 
> drools/org/MyRuleSet_1136384249796/java/Allow_ProviderA_access_0
>       at 
> drools.org.MyRuleSet_1136384249796.java.Allow_ProviderA_access_0Invoker$Condition_1Invoker.invoke(Allow_ProviderA_access_0Invoker.java:36)
>       at 
> org.drools.semantics.java.JavaCondition.isAllowed(JavaCondition.java:172)
>       at org.drools.reteoo.ConditionNode.assertTuple(ConditionNode.java:154)
>       at 
> org.drools.reteoo.TupleSource.propagateAssertTuple(TupleSource.java:118)
>       at org.drools.reteoo.ParameterNode.assertObject(ParameterNode.java:126)
>       at 
> org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:173)
>       at org.drools.reteoo.Rete.assertObject(Rete.java:111)
>       at org.drools.reteoo.RuleBaseImpl.assertObject(RuleBaseImpl.java:193)
>       at 
> org.drools.reteoo.WorkingMemoryImpl.assertObject(WorkingMemoryImpl.java:373)
>       at 
> org.drools.reteoo.WorkingMemoryImpl.assertObject(WorkingMemoryImpl.java:348)
> If a ; is not allowed in a condition, this problem should be detected when 
> parsing the ruleset.

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

Reply via email to