[stringtemplate-interest] StringTemplate 3.1 - elseif expression evaluation bug

Zenaan Harkness zen at freedbms.net
Mon Apr 14 08:45:48 PDT 2008


This bug also exists at least in 09 November 2007 ST Java release.

I have the following Java classes/ beans:

public class Description {
   private String brief;
   private String full;
   public Description(String b, String f) {brief = b; full = f;}
   public String getBrief () {return brief;}
   public String getFull () {return full;}
}

public class Entity {
   private Description description = new Description(null,"my full descr.");
   public Description getDescription () {return description;}
}


And I have a StringTemplateGroup, java.stg:

returnsJavadoc(entity) ::= <<
@return <if(entity.description.brief)><entity.description.brief>
<elseif(entity.description.full)><entity.description.full>
<else>No javadoc found.
<endif>
>


Connecting these, passing in an entity attribute to the returnsJavadoc
template, I am getting the following error:

java.lang.IllegalArgumentException: Can't find template elseif.st
        at
org.antlr.stringtemplate.StringTemplateGroup.lookupTemplate(StringTemplateGroup.java:485)
        at
org.antlr.stringtemplate.StringTemplateGroup.getInstanceOf(StringTemplateGroup.java:372)
        at
org.antlr.stringtemplate.StringTemplateGroup.getInstanceOf(StringTemplateGroup.java:384)
        at
org.antlr.stringtemplate.StringTemplateGroup.lookupTemplate(StringTemplateGroup.java:464)
        at
org.antlr.stringtemplate.StringTemplateGroup.getInstanceOf(StringTemplateGroup.java:372)
        at
org.antlr.stringtemplate.StringTemplateGroup.getEmbeddedInstanceOf(StringTemplateGroup.java:416)
        at
org.antlr.stringtemplate.language.ASTExpr.getTemplateInclude(ASTExpr.java:637)
        at
org.antlr.stringtemplate.language.ActionEvaluator.templateInclude(ActionEvaluator.java:470)
        at
org.antlr.stringtemplate.language.ActionEvaluator.expr(ActionEvaluator.java:142)
        at
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:84)
        at
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:152)
        at
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:714)
        at
org.antlr.stringtemplate.language.ConditionalExpr.write(ConditionalExpr.java:93)
        at
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:714)


Is there something simple I'm missing, or is this simply a bug ??

TIA
Zen


-- 
Homepage: www.SoulSound.net -- Free Australia: www.UPMART.org
Please respect the confidentiality of this email as sensibly warranted.


More information about the stringtemplate-interest mailing list