Package railo.runtime.functions.system

Source Code of railo.runtime.functions.system.GetApplicationSettings

package railo.runtime.functions.system;

import java.util.Iterator;

import railo.commons.date.TimeZoneUtil;
import railo.commons.io.res.Resource;
import railo.runtime.Component;
import railo.runtime.ComponentWrap;
import railo.runtime.Mapping;
import railo.runtime.PageContext;
import railo.runtime.PageContextImpl;
import railo.runtime.config.Config;
import railo.runtime.config.ConfigImpl;
import railo.runtime.db.DataSource;
import railo.runtime.exp.PageException;
import railo.runtime.i18n.LocaleFactory;
import railo.runtime.listener.AppListenerUtil;
import railo.runtime.listener.ApplicationContextPro;
import railo.runtime.listener.JavaSettings;
import railo.runtime.listener.ModernApplicationContext;
import railo.runtime.net.s3.Properties;
import railo.runtime.op.Caster;
import railo.runtime.orm.ORMConfiguration;
import railo.runtime.type.Array;
import railo.runtime.type.ArrayImpl;
import railo.runtime.type.Collection;
import railo.runtime.type.Collection.Key;
import railo.runtime.type.KeyImpl;
import railo.runtime.type.Struct;
import railo.runtime.type.StructImpl;
import railo.runtime.type.UDF;
import railo.runtime.type.scope.Scope;
import railo.runtime.type.scope.Undefined;
import railo.runtime.type.util.ArrayUtil;
import railo.runtime.type.util.KeyConstants;
import railo.runtime.type.util.ListUtil;

public class GetApplicationSettings {
  public static Struct call(PageContext pc) {
    return call(pc, false);
  }
 
  public static Struct call(PageContext pc, boolean suppressFunctions) {
    ApplicationContextPro ac = (ApplicationContextPro) pc.getApplicationContext();
    Component cfc = null;
    if(ac instanceof ModernApplicationContext)cfc= ((ModernApplicationContext)ac).getComponent();
   
    Struct sct=new StructImpl();
    sct.setEL("applicationTimeout", ac.getApplicationTimeout());
    sct.setEL("clientManagement", Caster.toBoolean(ac.isSetClientManagement()));
    sct.setEL("clientStorage", ac.getClientstorage());
    sct.setEL("sessionStorage", ac.getSessionstorage());
    sct.setEL("customTagPaths", toArray(ac.getCustomTagMappings()));
    sct.setEL("loginStorage", AppListenerUtil.translateLoginStorage(ac.getLoginStorage()));
    sct.setEL(KeyConstants._mappings, toStruct(ac.getMappings()));
    sct.setEL(KeyConstants._name, ac.getName());
    sct.setEL("scriptProtect", AppListenerUtil.translateScriptProtect(ac.getScriptProtect()));
    sct.setEL("secureJson", Caster.toBoolean(ac.getSecureJson()));
    sct.setEL("secureJsonPrefix", ac.getSecureJsonPrefix());
    sct.setEL("sessionManagement", Caster.toBoolean(ac.isSetSessionManagement()));
    sct.setEL("sessionTimeout", ac.getSessionTimeout());
    sct.setEL("clientTimeout", ac.getClientTimeout());
    sct.setEL("setClientCookies", Caster.toBoolean(ac.isSetClientCookies()));
    sct.setEL("setDomainCookies", Caster.toBoolean(ac.isSetDomainCookies()));
    sct.setEL(KeyConstants._name, ac.getName());
    sct.setEL("localMode", ac.getLocalMode()==Undefined.MODE_LOCAL_OR_ARGUMENTS_ALWAYS?Boolean.TRUE:Boolean.FALSE);
    sct.setEL(KeyConstants._locale,LocaleFactory.toString(pc.getLocale()));
    sct.setEL(KeyConstants._timezone,TimeZoneUtil.toString(pc.getTimeZone()));
    sct.setEL("sessionType", ((PageContextImpl) pc).getSessionType()==ConfigImpl.SESSION_TYPE_CFML?"cfml":"j2ee");
    sct.setEL("serverSideFormValidation", Boolean.FALSE); // TODO impl

    sct.setEL("clientCluster", Caster.toBoolean(ac.getClientCluster()));
    sct.setEL("sessionCluster", Caster.toBoolean(ac.getSessionCluster()));
   

    sct.setEL("invokeImplicitAccessor", Caster.toBoolean(ac.getTriggerComponentDataMember()));
    sct.setEL("triggerDataMember", Caster.toBoolean(ac.getTriggerComponentDataMember()));
    sct.setEL("sameformfieldsasarray", Caster.toBoolean(ac.getSameFieldAsArray(Scope.SCOPE_FORM)));
    sct.setEL("sameurlfieldsasarray", Caster.toBoolean(ac.getSameFieldAsArray(Scope.SCOPE_URL)));
   
    Object ds = ac.getDefDataSource();
    if(ds instanceof DataSource) ds=_call((DataSource)ds);
    else ds=Caster.toString(ds,null);
    sct.setEL(KeyConstants._datasource, ds);
    sct.setEL("defaultDatasource", ds);
   
    Resource src = ac.getSource();
    if(src!=null)sct.setEL(KeyConstants._source,src.getAbsolutePath());
   
    // orm
    if(ac.isORMEnabled()){
      ORMConfiguration conf = ac.getORMConfiguration();
      if(conf!=null)sct.setEL(KeyConstants._orm, conf.toStruct());
    }
    // s3
    Properties props = ac.getS3();
    if(props!=null) {
      sct.setEL(KeyConstants._s3, props.toStruct());
    }
   
    // datasources
    DataSource[] sources = ac.getDataSources();
    if(!ArrayUtil.isEmpty(sources)){
      Struct _sources = new StructImpl(),s;
      sct.setEL(KeyConstants._datasources, _sources);
      for(int i=0;i<sources.length;i++){
        _sources.setEL(KeyImpl.init(sources[i].getName()), _call(sources[i]));
      }
     
    }
   
    //cache
    String func = ac.getDefaultCacheName(Config.CACHE_DEFAULT_FUNCTION);
    String obj = ac.getDefaultCacheName(Config.CACHE_DEFAULT_OBJECT);
    String qry = ac.getDefaultCacheName(Config.CACHE_DEFAULT_QUERY);
    String res = ac.getDefaultCacheName(Config.CACHE_DEFAULT_RESOURCE);
    String tmp = ac.getDefaultCacheName(Config.CACHE_DEFAULT_TEMPLATE);
    if(func!=null || obj!=null || qry!=null || res!=null || tmp!=null) {
      Struct cache=new StructImpl();
      sct.setEL(KeyConstants._cache, cache);
      if(func!=null)cache.setEL(KeyConstants._function, func);
      if(obj!=null)cache.setEL(KeyConstants._object, obj);
      if(qry!=null)cache.setEL(KeyConstants._query, qry);
      if(res!=null)cache.setEL(KeyConstants._resource, res);
      if(tmp!=null)cache.setEL(KeyConstants._template, tmp);
    }
   
    // java settings
    JavaSettings js = ac.getJavaSettings();
    StructImpl jsSct = new StructImpl();
    jsSct.put("loadCFMLClassPath",js.loadCFMLClassPath());
    jsSct.put("reloadOnChange",js.reloadOnChange());
    jsSct.put("watchInterval",new Double(js.watchInterval()));
    jsSct.put("watchExtensions",ListUtil.arrayToList(js.watchedExtensions(),","));
    Resource[] reses = js.getResources();
    StringBuilder sb=new StringBuilder();
    for(int i=0;i<reses.length;i++){
      if(i>0)sb.append(',');
      sb.append(reses[i].getAbsolutePath());
    }
    jsSct.put("loadCFMLClassPath",sb.toString());
    sct.put("javaSettings",jsSct);
    // REST Settings
    // MUST
   
    if(cfc!=null){
      sct.setEL(KeyConstants._component, cfc.getPageSource().getDisplayPath());
     
      try {
        ComponentWrap cw=ComponentWrap.toComponentWrap(Component.ACCESS_PRIVATE, cfc);
        Iterator<Key> it = cw.keyIterator();
        Collection.Key key;
        Object value;
            while(it.hasNext()) {
                key=it.next();
                value=cw.get(key);
                if(suppressFunctions && value instanceof UDF) continue;
                if(!sct.containsKey(key))sct.setEL(key, value);
        }
      }
      catch (PageException e) {e.printStackTrace();}
    }
    return sct;
  }

 

  private static Struct _call(DataSource source) {
    Struct s = new StructImpl();
    s.setEL(KeyConstants._class, source.getClazz().getName());
    if(source.getConnectionLimit()>=0)s.setEL(AppListenerUtil.CONNECTION_LIMIT, Caster.toDouble(source.getConnectionLimit()));
    if(source.getConnectionTimeout()!=1)s.setEL(AppListenerUtil.CONNECTION_TIMEOUT, Caster.toDouble(source.getConnectionTimeout()));
    s.setEL(AppListenerUtil.CONNECTION_STRING, source.getDsnTranslated());
    if(source.getMetaCacheTimeout() != 60000)s.setEL(AppListenerUtil.META_CACHE_TIMEOUT, Caster.toDouble(source.getMetaCacheTimeout()));
    s.setEL(KeyConstants._username, source.getUsername());
    s.setEL(KeyConstants._password, source.getPassword());
    if(source.getTimeZone()!=null)s.setEL(AppListenerUtil.TIMEZONE, source.getTimeZone().getID());
    if(source.isBlob())s.setEL(AppListenerUtil.BLOB, source.isBlob());
    if(source.isClob())s.setEL(AppListenerUtil.CLOB, source.isClob());
    if(source.isReadOnly())s.setEL(AppListenerUtil.READ_ONLY, source.isReadOnly());
    if(source.isStorage())s.setEL(AppListenerUtil.STORAGE, source.isStorage());
    return s;
  }

  private static Array toArray(Mapping[] mappings) {
    Array arr=new ArrayImpl();
    if(mappings!=null)for(int i=0;i<mappings.length;i++){
      arr.appendEL(mappings[i].getStrPhysical());
    }
    return arr;
  }

  private static Struct toStruct(Mapping[] mappings) {
    Struct sct=new StructImpl();
    if(mappings!=null)for(int i=0;i<mappings.length;i++){
      sct.setEL(KeyImpl.init(mappings[i].getVirtual()), mappings[i].getStrPhysical());
    }
    return sct;
  }
}
TOP

Related Classes of railo.runtime.functions.system.GetApplicationSettings

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.