001    
002    package railo.runtime.functions.other;
003    
004    
005    import railo.runtime.PageContext;
006    import railo.runtime.config.ConfigImpl;
007    import railo.runtime.config.ConfigWeb;
008    import railo.runtime.config.ConfigWebImpl;
009    import railo.runtime.exp.PageException;
010    import railo.runtime.ext.function.Function;
011    import railo.runtime.op.Caster;
012    import railo.runtime.type.Collection;
013    import railo.runtime.type.KeyImpl;
014    import railo.runtime.type.Struct;
015    import railo.runtime.type.StructImpl;
016    
017    /**
018     * Implements the Cold Fusion Function createGuid
019     */
020    public final class GetRailoId implements Function {
021    
022        private static final Collection.Key SECURITY_KEY = KeyImpl.intern("securityKey");
023        private static final Collection.Key WEB = KeyImpl.intern("web");
024        private static final Collection.Key REQUEST = KeyImpl.intern("request");
025    
026            public static Struct call(PageContext pc ) throws PageException {
027                    Struct sct=new StructImpl();
028                Struct web=new StructImpl();
029                Struct server=new StructImpl();
030                ConfigWeb config = pc.getConfig();
031            
032                    web.set(SECURITY_KEY, ((ConfigImpl)config).getSecurityKey());
033                    web.set(KeyImpl.ID, config.getId());
034                    sct.set(WEB, web);
035            
036            if(config instanceof ConfigWebImpl){
037                    ConfigWebImpl cwi = (ConfigWebImpl)config;
038                    server.set(SECURITY_KEY, cwi.getServerSecurityKey());
039                    server.set(KeyImpl.ID, cwi.getServerId());
040                    sct.set(KeyImpl.SERVER, server);
041            }
042            
043            sct.set(REQUEST, Caster.toString(pc.getId()));
044            return  sct;
045        }
046        
047    }