Package org.geoserver.config

Source Code of org.geoserver.config.LockProviderInitializer

package org.geoserver.config;

import java.util.List;

import org.geoserver.logging.LoggingUtils;
import org.geoserver.platform.GeoServerExtensions;
import org.geoserver.platform.resource.GlobalLockProvider;
import org.geoserver.platform.resource.LockProvider;
import org.geoserver.platform.resource.MemoryLockProvider;

/**
* Initializes LockProvider based on configuration settings.
* <p>
*
* @author Jody Garnett (Boundless)
*
*/
public class LockProviderInitializer implements GeoServerInitializer {

    ConfigurationListenerAdapter listener = new ConfigurationListenerAdapter() {
        @Override
        public void handleGlobalChange(GeoServerInfo global, List<String> propertyNames,
                List<Object> oldValues, List<Object> newValues) {
            boolean reload = false;
            String lockProviderName = null;
            if ( propertyNames.contains( "lockProviderName") ) {
                lockProviderName = (String) newValues.get( propertyNames.indexOf( "lockProviderName" ) );
                reload = true;
            }
            if( reload ){
                try {
                    setLockProvider( lockProviderName );
                }
                catch (Exception e) {
                    throw new RuntimeException( e );
                }
            }
           
        }
    };
   
    @Override
    public void initialize(GeoServer geoServer) throws Exception {
        // Consider moving earlier to make use of the requested LockProvider during initial configuration
        String lockProviderName = geoServer.getGlobal().getLockProviderName();
        setLockProvider(lockProviderName);
       
        geoServer.addListener( listener);
    }
   
    public static void setLockProvider( String lockProviderName ){
        LockProvider delegate;
        if( lockProviderName == null ){
            delegate = new MemoryLockProvider();
        } else {
            Object provider = GeoServerExtensions.bean(lockProviderName);
            if( provider == null ){
                throw new IllegalStateException("Could not find "+lockProviderName+" lock provider in spring application context");
            }
            else if (!(provider instanceof LockProvider)){
                throw new IllegalStateException("Found "+lockProviderName+"("+provider.getClass().getName()+") in application context, but it was not a LockProvider");
            }
            delegate = (LockProvider) provider;           
        }
        GlobalLockProvider lockProvider = (GlobalLockProvider) GeoServerExtensions.bean("lockProvider");
        if( lockProvider.getDelegate() != delegate ){
            lockProvider.setDelegate( delegate );
        }
    }
}
TOP

Related Classes of org.geoserver.config.LockProviderInitializer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.