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