Package org.geoserver.cluster.impl.handlers.configuration

Source Code of org.geoserver.cluster.impl.handlers.configuration.JMSLoggingHandler

/* (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.cluster.impl.handlers.configuration;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang.NullArgumentException;
import org.geoserver.cluster.events.ToggleSwitch;
import org.geoserver.config.GeoServer;
import org.geoserver.config.LoggingInfo;

import com.thoughtworks.xstream.XStream;

/**
* JMS Handler is used to synchronize
*
*
* @author Carlo Cancellieri - carlo.cancellieri@geo-solutions.it
*
*/
public class JMSLoggingHandler extends JMSConfigurationHandler<LoggingInfo> {
    private final GeoServer geoServer;

    private final ToggleSwitch producer;

    public JMSLoggingHandler(GeoServer geo, XStream xstream, Class clazz, ToggleSwitch producer) {
        super(xstream, clazz);
        this.geoServer = geo;
        this.producer = producer;
    }

    @Override
    protected void omitFields(final XStream xstream) {
        // omit not serializable fields
        // NOTHING TO DO
    }

    @Override
    public boolean synchronize(LoggingInfo info) throws Exception {
        if (info == null) {
            throw new NullArgumentException("Incoming object is null");
        }
        try {
            // LOCALIZE service
            final LoggingInfo localObject = geoServer.getLogging();
            // overwrite local object members with new incoming settings
            BeanUtils.copyProperties(localObject, info);

            // disable the message producer to avoid recursion
            producer.disable();

            // save the localized object
            geoServer.save(localObject);

        } catch (Exception e) {
            if (LOGGER.isLoggable(java.util.logging.Level.SEVERE))
                LOGGER.severe(this.getClass() + " is unable to synchronize the incoming event: "
                        + info);
            throw e;
        } finally {
            // enable message the producer
            producer.enable();
        }
        return true;

    }

}
TOP

Related Classes of org.geoserver.cluster.impl.handlers.configuration.JMSLoggingHandler

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.