001 package railo.transformer.cfml.evaluator.impl; 002 003 import railo.transformer.bytecode.statement.tag.Tag; 004 import railo.transformer.bytecode.statement.tag.TagIf; 005 import railo.transformer.bytecode.util.ASMUtil; 006 import railo.transformer.cfml.evaluator.EvaluatorException; 007 import railo.transformer.cfml.evaluator.EvaluatorSupport; 008 import railo.transformer.library.tag.TagLibTag; 009 010 011 /** 012 * Prueft den Kontext des Tag elseif. 013 * Das Tag <code>elseif</code> darf nur direkt innerhalb des Tag <code>if</code> liegen. 014 */ 015 public final class ElseIf extends EvaluatorSupport { 016 017 /** 018 * @see railo.transformer.cfml.evaluator.EvaluatorSupport#evaluate(org.w3c.dom.Element, railo.transformer.library.tag.TagLibTag) 019 */ 020 public void evaluate(Tag tag, TagLibTag libTag) throws EvaluatorException { 021 String ns=libTag.getTagLib().getNameSpaceAndSeparator(); 022 String ifName=ns+"if"; 023 024 // check if tag is direct inside if 025 if(!ASMUtil.isParentTag(tag, TagIf.class)) 026 throw new EvaluatorException("Wrong Context, tag "+libTag.getFullName()+" must be direct inside a "+ifName+" tag"); 027 } 028 }