001    package railo.transformer.bytecode.statement.tag;
002    
003    import org.objectweb.asm.Type;
004    import org.objectweb.asm.commons.GeneratorAdapter;
005    import org.objectweb.asm.commons.Method;
006    
007    import railo.transformer.bytecode.BytecodeContext;
008    import railo.transformer.bytecode.BytecodeException;
009    import railo.transformer.bytecode.expression.Expression;
010    import railo.transformer.bytecode.util.Types;
011    
012    public final class TagInclude extends TagBase {
013    
014    
015            private final static Method DO_INCLUDE = new Method("doInclude",Type.VOID_TYPE,new Type[]{Types.STRING});
016            
017    
018            /**
019             * Constructor of the class
020             * @param line
021             */
022            public TagInclude(int line) {
023                    super(line);
024            }
025            public TagInclude(int sl,int el) {
026                    super(sl,el);
027            }
028    
029            /**
030             * @see railo.transformer.bytecode.statement.tag.TagBase#_writeOut(org.objectweb.asm.commons.GeneratorAdapter)
031             */
032            public void _writeOut(BytecodeContext bc) throws BytecodeException {
033                    GeneratorAdapter adapter = bc.getAdapter();
034                    adapter.loadArg(0);
035                    getAttribute("template").getValue().writeOut(bc, Expression.MODE_REF);
036                    adapter.invokeVirtual(Types.PAGE_CONTEXT,DO_INCLUDE);
037            }
038    }