Package org.geoserver.security.web.role

Source Code of org.geoserver.security.web.role.RoleChoice

/* (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.web.role;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.markup.html.form.ChoiceRenderer;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.model.IModel;
import org.geoserver.security.config.SecurityRoleServiceConfig;
import org.geoserver.security.impl.GeoServerRole;
import org.geoserver.web.GeoServerApplication;
import org.geotools.util.logging.Logging;

/**
* Choice widget for roles from a specific role service configuration.
*
* @author Justin Deoliveira, OpenGeo
*
*/
public class RoleChoice extends DropDownChoice<String> {

  static Logger LOGGER = Logging.getLogger("org.geoserver.security");
 
    public RoleChoice(String id, IModel<? extends SecurityRoleServiceConfig> configModel) {
        super(id, new RoleChoiceNameModel(configModel), new RoleChoiceRenderer());
    }

    static class RoleChoiceNameModel implements IModel<List<String>> {

        IModel<? extends SecurityRoleServiceConfig> configModel;

        RoleChoiceNameModel(IModel<? extends SecurityRoleServiceConfig> configModel) {
            this.configModel = configModel;
        }

        @Override
        public List<String> getObject() {
            SecurityRoleServiceConfig config = configModel.getObject();
            List<String> roleNames = new ArrayList<String>();
            if (config.getId() != null) {
                try {
                    for (GeoServerRole role : GeoServerApplication.get().getSecurityManager()
                            .loadRoleService(config.getName()).getRoles()) {
                        roleNames.add(role.getAuthority());
                    }
                } catch (IOException e) {
                  // catch exception, otherwise role service
                  // configuration page cannot be opened
                  LOGGER.log(Level.WARNING,e.getMessage(),e);
                    //throw new WicketRuntimeException(e);
                }
            }
            return roleNames;
        }

        @Override
        public void detach() {
        }

        @Override
        public void setObject(List<String> object) {
            throw new UnsupportedOperationException();
        }
    }

    static class RoleChoiceRenderer extends ChoiceRenderer<String> {
        @Override
        public Object getDisplayValue(String object) {
            return object;
        }
        @Override
        public String getIdValue(String object, int index) {
            return object;
        }
    }
}
TOP

Related Classes of org.geoserver.security.web.role.RoleChoice

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.