001    package com.softwarementors.extjs.djn.config;
002    
003    import com.softwarementors.extjs.djn.StringUtils;
004    import com.softwarementors.extjs.djn.gson.DefaultGsonBuilderConfigurator;
005    import com.softwarementors.extjs.djn.gson.GsonBuilderConfigurator;
006    import com.softwarementors.extjs.djn.servlet.RegistryConfigurator;
007    
008    public class GlobalConfiguration {
009      public static final boolean DEFAULT_DEBUG_VALUE = false;
010      public static final Class<? extends GsonBuilderConfigurator> DEFAULT_GSON_BUILDER_CONFIGURATOR_CLASS = DefaultGsonBuilderConfigurator.class;
011      private String providersUrl;
012      private boolean debug;
013      private Class<? extends GsonBuilderConfigurator> gsonBuilderConfiguratorClass;
014      private Class<? extends RegistryConfigurator> registryConfiguratorClass;
015      private boolean batchRequestsMultithreadingEnabled;
016      private int batchRequestsMinThreadsPoolSize;
017      private int batchRequestsMaxThreadsPoolSize; 
018      private int batchRequestsThreadKeepAliveSeconds;
019      private int batchRequestsMaxThreadsPerRequest;
020      private boolean minify;
021      
022      public static final int MIN_BATCH_REQUESTS_MIN_THREAD_POOL_SIZE = 0;
023      public static final int MIN_BATCH_REQUESTS_MAX_THREAD_POOL_SIZE = 1;
024      public static final int MIN_BATCH_REQUESTS_MAX_THREADS_PER_REQUEST = 1;
025      public static final int MIN_BATCH_REQUESTS_THREAD_KEEP_ALIVE_SECONDS = 0;
026    
027      public static final boolean DEFAULT_BATCH_REQUESTS_MULTITHREADING_ENABLED_VALUE = true;
028      public static final int DEFAULT_BATCH_REQUESTS_MAX_THREADS_PER_REQUEST = 8;
029      public static final int DEFAULT_BATCH_REQUESTS_MIN_THREAD_POOL_SIZE = DEFAULT_BATCH_REQUESTS_MAX_THREADS_PER_REQUEST * 2;
030      public static final int DEFAULT_BATCH_REQUESTS_MAX_THREAD_POOL_SIZE = DEFAULT_BATCH_REQUESTS_MAX_THREADS_PER_REQUEST * 10;
031      public static final int DEFAULT_BATCH_REQUESTS_THREAD_KEEP_ALIVE_SECONDS = 60;
032      public static final boolean DEFAULT_MINIFY_VALUE = true;
033    
034      public GlobalConfiguration( String providersUrl, boolean debug, Class<? extends GsonBuilderConfigurator> gsonBuilderConfiguratorClass, 
035          Class<? extends RegistryConfigurator> registryConfiguratorClass,
036          boolean minify,
037          boolean batchRequestsMultithreadingEnabled, int batchRequestsMinThreadsPoolSize, int batchRequestsMaxThreadsPoolSize, 
038          int batchRequestsThreadKeepAliveSeconds, int batchRequestsMaxThreadsPerRequest) 
039      {
040        assert !StringUtils.isEmpty( providersUrl );
041        assert batchRequestsMinThreadsPoolSize >= MIN_BATCH_REQUESTS_MIN_THREAD_POOL_SIZE;
042        assert batchRequestsMaxThreadsPoolSize >= MIN_BATCH_REQUESTS_MAX_THREAD_POOL_SIZE;
043        assert batchRequestsThreadKeepAliveSeconds >= MIN_BATCH_REQUESTS_THREAD_KEEP_ALIVE_SECONDS;
044        assert batchRequestsMaxThreadsPerRequest >= MIN_BATCH_REQUESTS_MAX_THREADS_PER_REQUEST;
045        assert batchRequestsMinThreadsPoolSize <= batchRequestsMaxThreadsPoolSize;
046        
047        this.providersUrl = providersUrl;
048        this.debug = debug;
049        this.minify = minify;
050        this.gsonBuilderConfiguratorClass = gsonBuilderConfiguratorClass;
051        this.registryConfiguratorClass = registryConfiguratorClass;
052            
053        this.batchRequestsMultithreadingEnabled = batchRequestsMultithreadingEnabled;
054        this.batchRequestsMinThreadsPoolSize = batchRequestsMinThreadsPoolSize;
055        this.batchRequestsMaxThreadsPoolSize = batchRequestsMaxThreadsPoolSize; 
056        this.batchRequestsThreadKeepAliveSeconds = batchRequestsThreadKeepAliveSeconds;
057        this.batchRequestsMaxThreadsPerRequest = batchRequestsMaxThreadsPerRequest; 
058        
059      }
060      
061      public String getProvidersUrl() {
062        return this.providersUrl;
063      }
064      
065      public boolean getDebug() {
066        return this.debug;
067      }
068    
069      public Class<? extends GsonBuilderConfigurator> getGsonBuilderConfiguratorClass() {
070        return this.gsonBuilderConfiguratorClass;
071      }
072      
073      public boolean getMinify() {
074        return this.minify;
075      }
076    
077      public boolean getBatchRequestsMultithreadingEnabled() {
078        return this.batchRequestsMultithreadingEnabled;
079      }
080    
081      public int getBatchRequestsMinThreadsPoolSize() {
082        return this.batchRequestsMinThreadsPoolSize;
083      }
084    
085      public int getBatchRequestsMaxThreadsPoolSize() {
086        return this.batchRequestsMaxThreadsPoolSize;
087      }
088    
089      public int getBatchRequestsThreadKeepAliveSeconds() {
090        return this.batchRequestsThreadKeepAliveSeconds;
091      }
092    
093      public int getBatchRequestsMaxThreadsPerRequest() {
094        return this.batchRequestsMaxThreadsPerRequest;
095      }
096      
097      public Class<? extends RegistryConfigurator> getRegistryConfiguratorClass() {
098        return this.registryConfiguratorClass;
099      }
100    
101      public boolean hasCustomRegistryConfigurationClass() {
102        return this.registryConfiguratorClass != null;
103      }
104    }