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 }