001    package railo.runtime.interpreter.ref.literal;
002    
003    import railo.runtime.PageContext;
004    import railo.runtime.exp.PageException;
005    import railo.runtime.interpreter.ref.Ref;
006    import railo.runtime.interpreter.ref.RefSupport;
007    import railo.runtime.interpreter.ref.util.RefUtil;
008    import railo.runtime.op.Caster;
009    
010    /**
011     * constructor of the class
012     */
013    public final class LBoolean extends RefSupport implements Literal {
014    
015        /**
016         * Field <code>TRUE</code>
017         */
018        public static final Ref TRUE = new LBoolean(Boolean.TRUE);
019        /**
020         * Field <code>FALSE</code>
021         */
022        public static final Ref FALSE = new LBoolean(Boolean.FALSE);
023        
024        private Boolean literal;
025    
026            /**
027             * constructor with Boolean
028             * @param literal
029             */
030            public LBoolean(Boolean literal) {
031                    this.literal=literal;
032            }
033            
034            /**
035             * constructor with boolean
036             * @param b
037             */
038            public LBoolean(boolean b) {
039                    this.literal=b?Boolean.TRUE:Boolean.FALSE;
040            }
041            
042        /**
043             * constructor with boolean
044             * @param str
045             * @throws PageException 
046             */
047            public LBoolean(String str) throws PageException {
048                    this.literal=Caster.toBoolean(str);
049            }
050            
051            
052            @Override
053            public Object getValue(PageContext pc) {
054                    return literal;
055            }
056    
057            @Override
058        public String getTypeName() {
059                    return "literal";
060            }
061    
062            @Override
063        public String getString(PageContext pc) {
064            return toString();
065        }
066    
067            @Override
068        public String toString() {
069            return Caster.toString(literal.booleanValue()); 
070        }
071    
072        @Override
073            public boolean eeq(PageContext pc,Ref other) throws PageException {
074                    if(other instanceof LNumber){
075                            return literal.booleanValue()==((LBoolean)other).literal.booleanValue();
076                    }
077                    return RefUtil.eeq(pc,this,other);
078            }
079    
080    }