in src/java/org/apache/fulcrum/parser/DefaultParserService.java [396:515]
public void configure(Configuration conf) throws ConfigurationException
{
String foldString = conf.getChild(URL_CASE_FOLDING_KEY).getValue(URLCaseFolding.NONE.name()).toLowerCase();
folding = URLCaseFolding.NONE;
getLogger().debug("Setting folding from " + foldString);
if (StringUtils.isNotEmpty(foldString))
{
try
{
folding = URLCaseFolding.valueOf(foldString.toUpperCase());
}
catch (IllegalArgumentException e)
{
getLogger().error("Got " + foldString + " from " + URL_CASE_FOLDING_KEY + " property, which is illegal!");
throw new ConfigurationException("Value " + foldString + " is illegal!", e);
}
}
parameterEncoding = conf.getChild(PARAMETER_ENCODING_KEY)
.getValue(PARAMETER_ENCODING_DEFAULT).toLowerCase();
automaticUpload = conf.getChild(AUTOMATIC_KEY).getValueAsBoolean(AUTOMATIC_DEFAULT);
useFulcrumPool = conf.getChild(FULCRUM_POOL_KEY).getValueAsBoolean(FULCRUM_POOL_DEFAULT);
if (useFulcrumPool) {
if (fulcrumPoolService == null)
{
// only for fulcrum pool, need to call internal service, if role pool service is set
throw new ConfigurationException("Fulcrum Pool is activated", new ServiceException(ParserService.ROLE,
"Fulcrum enabled Pool Service requires " +
PoolService.ROLE + " to be available"));
}
getLogger().info("Using Fulcrum Pool Service: "+ fulcrumPoolService);
} else {
// reset not used fulcrum pool
fulcrumPoolService = null;
// Define the default configuration
GenericObjectPoolConfig config = new GenericObjectPoolConfig();
config.setMaxIdle(DEFAULT_MAX_IDLE);
config.setMaxTotal(DEFAULT_POOL_CAPACITY);
// init the pool
valueParserPool
= new BaseValueParserPool(new BaseValueParserFactory(), config);
// init the pool
parameterParserPool
= new DefaultParameterParserPool(new DefaultParameterParserFactory(), config);
// init the pool
cookieParserPool
= new CookieParserPool(new CookieParserFactory(), config);
getLogger().info("Init Commons2 Pool Services.." );
getLogger().info(valueParserPool.getClass().getName());
getLogger().info(parameterParserPool.getClass().getName());
getLogger().info(cookieParserPool.getClass().getName());
}
Configuration[] poolChildren = conf.getChild(POOL_KEY).getChildren();
if (poolChildren.length > 0) {
GenericObjectPoolConfig genObjPoolConfig = new GenericObjectPoolConfig();
genObjPoolConfig.setMaxIdle(DEFAULT_MAX_IDLE);
genObjPoolConfig.setMaxTotal(DEFAULT_POOL_CAPACITY);
for (Configuration poolConf : poolChildren) {
// use common pool2 configuration names
switch (poolConf.getName()) {
case "maxTotal":
int defaultCapacity = poolConf.getValueAsInteger();
genObjPoolConfig.setMaxTotal(defaultCapacity);
break;
case "maxWaitMillis":
int maxWaitMillis = poolConf.getValueAsInteger();
genObjPoolConfig.setMaxWaitMillis(maxWaitMillis);
break;
case "blockWhenExhausted":
boolean blockWhenExhausted = poolConf.getValueAsBoolean();
genObjPoolConfig.setBlockWhenExhausted(blockWhenExhausted);
break;
case "maxIdle":
int maxIdle = poolConf.getValueAsInteger();
genObjPoolConfig.setMaxIdle(maxIdle);
break;
case "minIdle":
int minIdle = poolConf.getValueAsInteger();
genObjPoolConfig.setMinIdle(minIdle);
break;
case "testOnReturn":
boolean testOnReturn = poolConf.getValueAsBoolean();
genObjPoolConfig.setTestOnReturn(testOnReturn);
break;
case "testOnBorrow":
boolean testOnBorrow = poolConf.getValueAsBoolean();
genObjPoolConfig.setTestOnBorrow(testOnBorrow);
break;
case "testOnCreate":
boolean testOnCreate = poolConf.getValueAsBoolean();
genObjPoolConfig.setTestOnCreate(testOnCreate);
break;
default:
break;
}
}
// reinit the pools
valueParserPool.setConfig(genObjPoolConfig);
parameterParserPool.setConfig(genObjPoolConfig);
cookieParserPool.setConfig(genObjPoolConfig);
getLogger().debug(valueParserPool.toString());
getLogger().debug(parameterParserPool.toString());
getLogger().debug(cookieParserPool.toString());
}
}