@Autowired public EnvironmentSnapshotCacheImpl(ApplicationContext applicationContext, EngineProperties engineProperties) { Integer maxSequenceCacheSize = engineProperties.getEnvironmentCacheMaxsize(); Period period = new Period(engineProperties.getEnvironmentCacheVerifyPeriod()); environmentInitializer = applicationContext.getBean("Pipeline", EnvironmentInitializer.class); conditionEngineRepositoryCache = CacheBuilder.newBuilder() .maximumSize(maxSequenceCacheSize) .expireAfterWrite(period.toStandardDuration().getMillis(), TimeUnit.MILLISECONDS) .build( new CacheLoader<Long, EnvironmentSnapshot>() { public EnvironmentSnapshot load(Long sequenceId) throws Exception { try(CorePolicyLogger traceInfo = new CorePolicyLogger("EnvironmentSnapshot:load")) { EnvironmentSnapshotImpl environmentSnapshot = new EnvironmentSnapshotImpl(); environmentSnapshot.setCollectionSequenceId(sequenceId); environmentSnapshot = environmentInitializer.initialize(environmentSnapshot); return environmentSnapshot; } } } ); }
@Override public String toString(){ // Get a string to represent our internal property state. Multimap<String, String> entries = new CaseInsensitiveKeyMultimap<>(); entries.put("engine.mode", getMode()); entries.put("engine.regexcache.maxsize", String.valueOf(getRegexCacheMaxsize())); entries.put("engine.regexcache.expiryhours", String.valueOf(getRegexCacheExpiryHours())); entries.put("engine.environmentcache.maxage", String.valueOf(getEnvironmentCacheMaxage())); entries.put("engine.environmentcache.maxsize", String.valueOf(getEnvironmentCacheMaxsize())); entries.put("engine.environmentcache.expiryhours", String.valueOf(getEnvironmentCacheExpiryHours())); entries.put("engine.environmentcache.expiry", String.valueOf(getEnvironmentCacheExpiry())); entries.put("engine.environmentcache.verifyperiod", getEnvironmentCacheVerifyPeriod()); entries.put("engine.environmentcache.location", getEnvironmentCacheLocation()); entries.put("engine.environmentcache.mode", getEnvironmentCacheMode()); entries.put("engine.regextimeout", String.valueOf(getRegexTimeout())); return StringHelper.mapToHtml(entries); }
public PolicyWorkerFactory(Codec codec, DataStore dataStore, PolicyWorkerConfiguration config) { this.codec = codec; this.dataStore = dataStore; this.resultQueue = config.getResultQueue(); this.workerIdentifier = config.getWorkerIdentifier(); this.workerThreads = config.getWorkerThreads(); this.configuration = config; applicationContext = new CorePolicyApplicationContext(); createBeanDefinition(WorkerResponseHolder.class, "WorkerResponseHolder", "thread"); createBeanDefinition(WorkerRequestHolder.class, "WorkerRequestHolder", "thread"); applicationContext.refresh(); taskDataConverter = new TaskDataConverter(); apiProvider = new ApiProvider(applicationContext); EngineProperties engineProperties = applicationContext.getBean(EngineProperties.class); Period period = new Period(engineProperties.getEnvironmentCacheVerifyPeriod()); workflowCache = CacheBuilder.newBuilder().expireAfterWrite(period.toStandardDuration().getMillis(), TimeUnit.MILLISECONDS) .build(new CacheLoader<Long, SequenceWorkflow>() { @Override public SequenceWorkflow load(Long key) throws Exception { logger.warn("Loading workflow from database, id: {}", key); return getWorkflow(key, apiProvider.getWorkflowApi()); } }); if (config.getRegisterHandlers()) { new PolicyHandlerSetup(applicationContext).checkBasePolicies(); } }