[rules-users] Compilation errors with 5.3.0.CR1

Edson Tirelli ed.tirelli at gmail.com
Wed Oct 5 09:36:44 EDT 2011


   I will check these out today. If you can provide an isolated test case,
it helps, otherwise I will try to reproduce from your info in these e-mails.

   Edson

2011/10/5 Wacław Borowiec <wborowiec at proximetry.pl>

> Thanks for the hint Wolfgang, here are the results:
>
> this == ($constr.getRestrictions () [0])
>
> gives
>
> [Error: unexpected end of statement]
> [Near : {... ($constr.getRestrictions () [0]) ....}]
>                                              ^
> [Line: 1, Column: 33]
>     at
> org.mvel2.compiler.AbstractParser.nextToken(AbstractParser.java:1146)
>      at
> org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:128)
>     at
> org.mvel2.compiler.ExpressionCompiler.compile(ExpressionCompiler.java:62)
>      at org.mvel2.MVEL.analysisCompile(MVEL.java:668)
>     at org.mvel2.MVEL.analysisCompile(MVEL.java:672)
>     at
> org.drools.rule.builder.PatternBuilder.setInputs(PatternBuilder.java:854)
>     at
> org.drools.rule.builder.PatternBuilder.build(PatternBuilder.java:595)
>     at
>
> org.drools.rule.builder.PatternBuilder.processConstraintsAndBinds(PatternBuilder.java:397)
>      at
> org.drools.rule.builder.PatternBuilder.build(PatternBuilder.java:309)
>     at
> org.drools.rule.builder.PatternBuilder.build(PatternBuilder.java:132)
>     at
>
> org.drools.rule.builder.GroupElementBuilder.build(GroupElementBuilder.java:65)
>      at org.drools.rule.builder.RuleBuilder.build(RuleBuilder.java:80)
>     at org.drools.compiler.PackageBuilder.addRule(PackageBuilder.java:2241)
>     at
> org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:802)
>     at
>
> org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:388)
>     at
>
> org.drools.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder.java:566)
>     at
>
> org.drools.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:35)
> Caused by: java.lang.StringIndexOutOfBoundsException: String index out
> of range: -1
>     at java.lang.String.<init>(String.java:207)
>     at
> org.mvel2.optimizers.AbstractOptimizer.capture(AbstractOptimizer.java:222)
>     at
> org.mvel2.compiler.PropertyVerifier.analyze(PropertyVerifier.java:123)
>     at
> org.mvel2.compiler.ExpressionCompiler.verify(ExpressionCompiler.java:377)
>     at
> org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:273)
>     at org.mvel2.util.ParseTools.subCompileExpression(ParseTools.java:2136)
>     at org.mvel2.ast.Substatement.<init>(Substatement.java:37)
>     at
> org.mvel2.compiler.AbstractParser.nextToken(AbstractParser.java:1006)
>     ... 46 more
>
> I tried also without external brackets, but the result is pretty much
> the same.
>
>
> On 10/05/2011 02:45 PM, Wolfgang Laun wrote:
> > Correction:
> > EmNumberRestriction(this == ($constr.getRestrictions () [0] ),...
> >
> > On 5 October 2011 14:44, Wolfgang Laun<wolfgang.laun at gmail.com>  wrote:
> >> Write this like so:
> >>    EmNumberRestriction(this == ($constr.getRestrictions[0]),...
> >> -W
> >>> part from last line of LHS. Again, it worked well in 5.1.1.
> >>>
> >>> On 10/05/2011 12:14 PM, Swindells, Thomas wrote:
> >>>
> >>> Why do you need the and in the rule?
> >>> Have you tried
> >>>
> >>> rule "enabled paramId: 1, id: 0"
> >>> salience 50
> >>> when
> >>>
> >>>        def0: EmParamDefinition(paramName == "p2", listIndex == -1)
> >>>        EmParamValue(paramDefinitionId == def0, requiredValue == 1)
> >>>        $param : EmParamValue(id == 1, enabled == false)
> >>>        not ParentDisabled(id == 1)
> >>>   then
> >>>        $param.setEnabled(true);
> >>>        update($param);
> >>>   end
> >>>
> >>> Thomas
> >>>
> >>> -----Original Message-----
> >>> From: rules-users-bounces at lists.jboss.org [mailto:rules-users-
> >>> bounces at lists.jboss.org] On Behalf Of Waclaw Borowiec
> >>> Sent: 05 October 2011 10:55
> >>> To: rules-users at lists.jboss.org
> >>> Subject: [rules-users] Compilation errors with 5.3.0.CR1
> >>>
> >>> Hello
> >>>
> >>> I'm sending the message once again due to problems with code samples
> >>> visibility in the previous one.
> >>>
> >>> I've got following rule:
> >>>
> >>> rule "enabled paramId: 1, id: 0"
> >>> salience 50
> >>> when
> >>>       (def0: EmParamDefinition(paramName == "p2", listIndex == -1) and
> >>> EmParamValue(paramDefinitionId == def0, requiredValue == 1))
> >>>       $param : EmParamValue(id == 1, enabled == false)
> >>>       not ParentDisabled(id == 1)
> >>> then
> >>>       $param.setEnabled(true);
> >>>       update($param);
> >>> end>
> >>>
> >>> It compiles fine under Drools 5.1.1, but after switching to 5.3.0.CR1 I
> get
> >>> following exception:
> >>>
> >>> [Error: unexpected end of statement]
> >>> [Near : {... def ....}]
> >>>                   ^
> >>> [Line: 1, Column: 4]
> >>>       at
> >>>
> org.mvel2.compiler.AbstractParser._captureBlock(AbstractParser.java:1470)
> >>>       at
> >>>
> org.mvel2.compiler.AbstractParser.captureCodeBlock(AbstractParser.java:14
> >>> 46)
> >>>       at
> org.mvel2.compiler.AbstractParser.nextToken(AbstractParser.java:421)
> >>>       at
> >>>
> org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:1
> >>> 28)
> >>>       at
> >>>
> org.mvel2.compiler.ExpressionCompiler.compile(ExpressionCompiler.java:62
> >>> )
> >>>       at org.mvel2.MVEL.analysisCompile(MVEL.java:668)
> >>>       at org.mvel2.MVEL.analysisCompile(MVEL.java:672)
> >>>       at
> >>>
> org.drools.rule.builder.PatternBuilder.setInputs(PatternBuilder.java:854)
> >>>       at
> org.drools.rule.builder.PatternBuilder.build(PatternBuilder.java:595)
> >>>       at
> >>>
> org.drools.rule.builder.PatternBuilder.processConstraintsAndBinds(PatternB
> >>> uilder.java:397)
> >>>       at
> org.drools.rule.builder.PatternBuilder.build(PatternBuilder.java:309)
> >>>       at
> org.drools.rule.builder.PatternBuilder.build(PatternBuilder.java:132)
> >>>       at
> >>>
> org.drools.rule.builder.GroupElementBuilder.build(GroupElementBuilder.jav
> >>> a:65)
> >>>       at org.drools.rule.builder.RuleBuilder.build(RuleBuilder.java:80)
> >>>       at
> org.drools.compiler.PackageBuilder.addRule(PackageBuilder.java:2241)
> >>>       at
> >>> org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:802)
> >>>       at
> >>>
> org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java
> >>> :388)
> >>>       at
> >>> org.drools.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder
> >>> .java:566)
> >>>       at
> >>>
> org.drools.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.ja
> >>> va:35)
> >>>       at
> >>> com.proximetry.elmgr.services.DependenciesBean$Expander.addDrl(Depen
> >>> denciesBean.java:110)
> >>>
> >>>
> >>> It is
> >>>
> >>> (def0: EmParamDefinition(paramName == "p2", listIndex == -1) and
> >>> EmParamValue(paramDefinitionId == def0, requiredValue == 1))
> >>>
> >>>
> >>> line that causes the problem - the exeption disappears after removing
> it.
> >>> What's interesting, when I add '$' sign to binding variable name, and
> the line
> >>> looks like:
> >>>
> >>> ($def0: EmParamDefinition(paramName == "p2", listIndex == -1) and
> >>> EmParamValue(paramDefinitionId == $def0, requiredValue == 1))
> >>>
> >>>
> >>> instead of the exception I get DRL error:
> >>>
> >>> [DialectError message='Unable to wire compiled classes, probably
> related to
> >>> compilation
> failures:sun.reflect.generics.reflectiveObjects.WildcardTypeImpl
> >>> cannot be cast to java.lang.Class']
> >>>
> >>>
> >>> For completness, this is how I add DRL resources:
> >>>
> >>> public void addDrl(Reader rdr) {
> >>>                KnowledgeBuilder kBuilder =
> >>> KnowledgeBuilderFactory.newKnowledgeBuilder();
> >>>
> >>>                kBuilder.add( ResourceFactory.newReaderResource(rdr),
> >>> ResourceType.DRL);
> >>>                if( kBuilder.hasErrors() ){
> >>>                    for( KnowledgeBuilderError err: kBuilder.getErrors()
> ){
> >>>                        StackTrace.error(this, err);
> >>>                    }
> >>>                    throw new IllegalStateException( "DRL errors" );
> >>>                }
> >>>                knowledgeBase.addKnowledgePackages(
> >>> kBuilder.getKnowledgePackages() );
> >>>                }
> >>>
> >>>
> >>> I would be grateful if someone has an idea, why after switching Drools
> >>> version such problem exists.
> >>> _______________________________________________
> >>> rules-users mailing list
> >>> rules-users at lists.jboss.org
> >>> https://lists.jboss.org/mailman/listinfo/rules-users
> >>>
> >>>
> **************************************************************************************
> >>> This message is confidential and intended only for the addressee. If
> you have received this message in error, please immediately notify the
> postmaster at nds.com and delete it from your system as well as any copies.
> The content of e-mails as well as traffic data may be monitored by NDS for
> employment and security purposes. To protect the environment please do not
> print this e-mail unless necessary.
> >>>
> >>> NDS Limited. Registered Office: One London Road, Staines, Middlesex,
> TW18 4EX, United Kingdom. A company registered in England and Wales.
> Registered no. 3080780. VAT no. GB 603 8808 40-00
> >>>
> **************************************************************************************
> >>>
> >>> _______________________________________________
> >>> rules-users mailing list
> >>> rules-users at lists.jboss.org
> >>> https://lists.jboss.org/mailman/listinfo/rules-users
> >>>
> >>>
> >>> _______________________________________________
> >>> rules-users mailing list
> >>> rules-users at lists.jboss.org
> >>> https://lists.jboss.org/mailman/listinfo/rules-users
> >>>
> > _______________________________________________
> > rules-users mailing list
> > rules-users at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-users
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>



-- 
  Edson Tirelli
  JBoss Drools Core Development
  JBoss by Red Hat @ www.jboss.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20111005/2e7f4c3f/attachment.html 


More information about the rules-users mailing list