/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.catalog;
import java.util.List;
import org.geoserver.config.ConfigurationListenerAdapter;
import org.geoserver.config.GeoServer;
import org.geoserver.config.GeoServerInfo;
import org.geoserver.config.GeoServerInitializer;
import org.geoserver.config.GeoServerReinitializer;
import org.geoserver.util.EntityResolverProvider;
/**
* Initializes parameters of the {@link ResourcePool} class from configuration.
*
* @author Justin Deoliveira, OpenGeo
*
*/
public class ResourcePoolInitializer implements GeoServerReinitializer {
GeoServer gs;
EntityResolverProvider resolverProvider;
public ResourcePoolInitializer(EntityResolverProvider resolverProvider) {
this.resolverProvider = resolverProvider;
}
public void initialize(GeoServer geoServer) throws Exception {
this.gs = geoServer;
final GeoServerInfo global = geoServer.getGlobal();
final int cacheSize = global.getFeatureTypeCacheSize();
if (cacheSize > 0) {
gs.getCatalog().getResourcePool().setFeatureTypeCacheSize(cacheSize);
}
geoServer.addListener(new ConfigurationListenerAdapter() {
@Override
public void handleGlobalChange(GeoServerInfo global, List<String> propertyNames,
List<Object> oldValues, List<Object> newValues) {
int i = propertyNames.indexOf( "featureTypeCacheSize" );
if (i > -1) {
Number featureTypeCacheSize = (Number) newValues.get(i);
gs.getCatalog().getResourcePool().setFeatureTypeCacheSize(featureTypeCacheSize.intValue());
}
gs.getCatalog().getResourcePool().setCoverageExecutor(global.getCoverageAccess().getThreadPoolExecutor());
}
});
gs.getCatalog().getResourcePool().setEntityResolverProvider(resolverProvider);
}
}