nl_tokens: {
pl_tokens: @ Override protected List < ConfigIssue > init ( ) { // Validate configuration values and open any required resources. List < ConfigIssue > issues = super . init ( ) ; if ( issues . isEmpty ( ) ) { jdbcUtil = UtilsProvider . getJdbcUtil ( ) ; } errorRecordHandler = new DefaultErrorRecordHandler ( getContext ( ) ) ; Processor . Context context = getContext ( ) ; queryEval = getContext ( ) . createELEval ( "query" ) ; issues = hikariConfigBean . validateConfigs ( context , issues ) ; if ( context . getRunnerId ( ) == 0 ) { if ( issues . isEmpty ( ) && null == dataSource ) { try { dataSource = jdbcUtil . createDataSourceForRead ( hikariConfigBean ) ; context . getStageRunnerSharedMap ( ) . put ( "jdbcLookupProcessor.dataSource" , dataSource ) ; } catch ( StageException e ) { issues . add ( context . createConfigIssue ( Groups . JDBC . name ( ) , CONNECTION_STRING , JdbcErrors . JDBC_00 , e . toString ( ) ) ) ; } } } else { dataSource = ( HikariDataSource ) context . getStageRunnerSharedMap ( ) . get ( "jdbcLookupProcessor.dataSource" ) ; } if ( issues . isEmpty ( ) ) { this . defaultValue = calculateDefault ( context , issues ) ; } if ( issues . isEmpty ( ) ) { cache = buildCache ( ) ; cacheCleaner = new CacheCleaner ( cache , "JdbcLookupProcessor" , 10 * 60 * 1000 ) ; if ( cacheConfig . enabled ) { preprocessThreads = Math . <mask> ( hikariConfigBean . minIdle , Runtime . getRuntime ( ) . availableProcessors ( ) - 1 ) ; preprocessThreads = Math . max ( preprocessThreads , 1 ) ; } } if ( context . getRunnerId ( ) == 0 ) { if ( issues . isEmpty ( ) && generationExecutor == null ) { generationExecutor = new SafeScheduledExecutorService ( hikariConfigBean . maximumPoolSize , "JDBC Lookup Cache Warmer" ) ; context . getStageRunnerSharedMap ( ) . put ( "jdbcLookupProcessor.generationExecutor" , generationExecutor ) ; } } else { generationExecutor = ( SafeScheduledExecutorService ) context . getStageRunnerSharedMap ( ) . get ( "jdbcLookupProcessor.generationExecutor" ) ; } // If issues is not empty, the UI will inform the user of each configuration issue in the list. return issues ; }