Package org.geoserver.security.file

Source Code of org.geoserver.security.file.UserGroupFileWatcher

/* (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.security.file;

import java.io.File;
import java.io.IOException;

import org.geoserver.platform.resource.Resource;
import org.geoserver.security.GeoServerUserGroupService;
import org.geoserver.security.event.UserGroupLoadedEvent;
import org.geoserver.security.event.UserGroupLoadedListener;

/**
* Watches a file storing user/group information
* and triggers a load on an external file change.
*
* @author christian
*
*/
public class UserGroupFileWatcher extends FileWatcher implements UserGroupLoadedListener {

   
    public UserGroupFileWatcher(Resource resource,GeoServerUserGroupService service) {
        super(resource);
        this.service=service;
        checkAndConfigure();
    }
    public UserGroupFileWatcher(File file,GeoServerUserGroupService service) {
        super(file);
        this.service=service;
        checkAndConfigure();
    }   
    public UserGroupFileWatcher(Resource resource,GeoServerUserGroupService service, long lastModified) {
        super(resource);
        this.service=service;
        this.lastModified=lastModified;
        checkAndConfigure();
    }
    public UserGroupFileWatcher(File file,GeoServerUserGroupService service, long lastModified) {
        super(file);
        this.service=service;
        this.lastModified=lastModified;
        checkAndConfigure();
    }

   
    protected GeoServerUserGroupService service;
   
    public synchronized GeoServerUserGroupService getService() {
        return service;
    }

    public synchronized void setService(GeoServerUserGroupService service) {
        this.service = service;
    }

    /**
     * triggers a load on {@link #service}
     */
    @Override
    protected void doOnChange() {
        GeoServerUserGroupService theService = getService();
        try {
            if (theService!=null)
                theService.load();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
   
    @Override
    public String toString() {
        StringBuffer buff = new StringBuffer();
        String serviceName = service==null ? "UNKNOWN" : service.getName();
        
        buff.append("FileWatcher for ").append(serviceName);
        buff.append(", ").append(getFileInfo());
        return buff.toString();
    }

    /**
     * Another method to avoid reloads if this object
     * is registered
     * @see GeoServerUserGroupService#registerUserGroupLoadedListener(UserGroupLoadedListener)
     */
    @Override
    public void usersAndGroupsChanged(UserGroupLoadedEvent event) {
        // avoid unnecessary reloads
        setLastModified(resource.lastmodified());
        LOGGER.info("Adjusted last modified for file: " +path);
    }

}
TOP

Related Classes of org.geoserver.security.file.UserGroupFileWatcher

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.