001    package railo.transformer.cfml.evaluator;
002    
003    import railo.runtime.config.Config;
004    import railo.runtime.exp.TemplateException;
005    import railo.transformer.bytecode.statement.tag.Tag;
006    import railo.transformer.library.function.FunctionLib;
007    import railo.transformer.library.tag.TagLib;
008    import railo.transformer.library.tag.TagLibTag;
009    import railo.transformer.util.CFMLString;
010    
011    
012    
013    
014    /**
015     * Die Klasse EvaluatorSupport hat die Aufgabe, 
016     * Zugriffe auf die CFXD zu vereinfachen. 
017     * Dazu stellt die Klasse mehrere Methoden zur Verfuegung die verschiedene, immer wieder verwendete Abfragen 
018     * abbilden. 
019     * Die Klasse implementiert das Interface Evaluator.
020     * Desweiteren splittet diese Klasse auch die Methode evaluate in drei Methoden auf so, 
021     * das man eine hoehere flexibilitaet beim Einstiegspunkt einer konkreten Implementation hat.
022     * 
023     */
024    public class EvaluatorSupport implements Evaluator {
025    
026    
027            /**
028             * Die Methode execute wird aufgerufen, wenn der Context eines Tags geprueft werden soll.
029             * Diese Methode ueberschreibt, jene des Interface Evaluator.
030             * Falls diese Methode durch eine Implementation nicht ueberschrieben wird, ruft sie wiederere, 
031             * allenfalls implementierte evaluate Methoden auf.
032             * Mit Hilfe dieses Konstrukt ist es moeglich drei evaluate methoden anzubieten.
033             * @param cfxdTag Das konkrete Tag innerhalb der kompletten CFXD.
034             * @param libTag Die Definition des Tag aus der TLD.
035             * @param flibs Saemtliche Function Library Deskriptoren des aktuellen Tag Libray Deskriptors.
036             * @param cfml
037             * @return TagLib
038             * @throws TemplateException
039            */
040            public TagLib execute(Config config,Tag tag, TagLibTag libTag, FunctionLib[] flibs,CFMLString cfml) 
041            throws TemplateException {
042                
043                return null;
044            }
045            
046            
047    
048            /**
049             * Die Methode evaluate wird aufgerufen, wenn der Context eines Tags geprueft werden soll.
050             * Diese Methode ueberschreibt, jene des Interface Evaluator.
051             * Falls diese Methode durch eine Implementation nicht ueberschrieben wird, ruft sie wiederere, 
052             * allenfalls implementierte evaluate Methoden auf.
053             * Mit Hilfe dieses Konstrukt ist es moeglich drei evaluate methoden anzubieten.
054             * @param cfxdTag Das konkrete Tag innerhalb der kompletten CFXD.
055             * @param libTag Die Definition des Tag aus der TLD.
056             * @param flibs Saemtliche Function Library Deskriptoren des aktuellen Tag Libray Deskriptors.
057             * @throws EvaluatorException
058            */
059            public void evaluate(Tag tag, TagLibTag libTag, FunctionLib[] flibs) throws EvaluatorException {
060                    evaluate(tag);
061                    evaluate(tag,libTag);
062            }
063            
064            /**
065             * �berladene evaluate Methode nur mit einem CFXD Element.
066             * @param cfxdTag
067             * @throws EvaluatorException
068             */
069            public void evaluate(Tag tag) throws EvaluatorException {
070                    
071            }
072            
073            /**
074             * �berladene evaluate Methode mit einem CFXD Element und einem TagLibTag.
075             * @param cfxdTag
076             * @param libTag
077             * @throws EvaluatorException
078             */
079            public void evaluate(Tag tag,TagLibTag libTag) throws EvaluatorException {
080            }
081            
082    }