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    import railo.runtime.type.util.KeyConstants;
017    
018    /**
019     * Implements the CFML Function createGuid
020     */
021    public final class GetRailoId implements Function {
022    
023        private static final Collection.Key SECURITY_KEY = KeyImpl.intern("securityKey");
024    
025            public static Struct call(PageContext pc ) throws PageException {
026                    Struct sct=new StructImpl();
027                Struct web=new StructImpl();
028                Struct server=new StructImpl();
029                ConfigWeb config = pc.getConfig();
030            
031                    web.set(SECURITY_KEY, ((ConfigImpl)config).getSecurityKey());
032                    web.set(KeyConstants._id, config.getId());
033                    sct.set(KeyConstants._web, web);
034            
035            if(config instanceof ConfigWebImpl){
036                    ConfigWebImpl cwi = (ConfigWebImpl)config;
037                    server.set(SECURITY_KEY, cwi.getServerSecurityKey());
038                    server.set(KeyConstants._id, cwi.getServerId());
039                    sct.set(KeyConstants._server, server);
040            }
041            
042            sct.set(KeyConstants._request, Caster.toString(pc.getId()));
043            return  sct;
044        }
045        
046    }