Package org.apache.james.user.lib

Source Code of org.apache.james.user.lib.UserManagement

/****************************************************************
* Licensed to the Apache Software Foundation (ASF) under one   *
* or more contributor license agreements.  See the NOTICE file *
* distributed with this work for additional information        *
* regarding copyright ownership.  The ASF licenses this file   *
* to you under the Apache License, Version 2.0 (the            *
* "License"); you may not use this file except in compliance   *
* with the License.  You may obtain a copy of the License at   *
*                                                              *
*   http://www.apache.org/licenses/LICENSE-2.0                 *
*                                                              *
* Unless required by applicable law or agreed to in writing,   *
* software distributed under the License is distributed on an  *
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
* KIND, either express or implied.  See the License for the    *
* specific language governing permissions and limitations      *
* under the License.                                           *
****************************************************************/




package org.apache.james.user.lib;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.annotation.Resource;
import javax.management.NotCompliantMBeanException;
import javax.management.StandardMBean;

import org.apache.james.user.api.JamesUser;
import org.apache.james.user.api.User;
import org.apache.james.user.api.UserManagementMBean;
import org.apache.james.user.api.UsersRepository;
import org.apache.james.user.api.UsersStore;

public class UserManagement extends StandardMBean implements UserManagementMBean {
   
    /**
     * The administered UsersRepository
     */
    private UsersRepository localUsers;
    private UsersStore usersStore;

    @Resource(name="localusersrepository")
    public void setUsersRepository(UsersRepository localUsers) {
        this.localUsers = localUsers;
    }
   
    @Resource(name="usersstore")
    public void setUsersStore(UsersStore usersStore) {
        this.usersStore = usersStore;
    }

   
    public UserManagement() throws NotCompliantMBeanException {
        super(UserManagementMBean.class);
    }


    private JamesUser getJamesUser(String userName, String repositoryName) {
        User baseuser = getUserRepository(repositoryName).getUserByName(userName);
        if (baseuser == null) throw new IllegalArgumentException("user not found: " + userName);
        if (! (baseuser instanceof JamesUser ) ) throw new IllegalArgumentException("user is not of type JamesUser: " + userName);

        return (JamesUser) baseuser;
    }

    private UsersRepository getUserRepository(String repositoryName) {
        if (repositoryName == null) return localUsers; // return default

        if (usersStore == null) throw new IllegalArgumentException("cannot access user repository named " + repositoryName);

        UsersRepository repository = usersStore.getRepository(repositoryName);
        if (repository == null) throw new IllegalArgumentException("user repository does not exist: " + repositoryName);
       
        return repository;
    }

    /**
     * @see org.apache.james.user.api.UserManagementMBean#addUser(java.lang.String, java.lang.String, java.lang.String)
     */
    public boolean addUser(String userName, String password, String repositoryName) {
        return getUserRepository(repositoryName).addUser(userName, password);
    }

    /**
     * @see org.apache.james.user.api.UserManagementMBean#deleteUser(java.lang.String, java.lang.String)
     */
    public boolean deleteUser(String userName, String repositoryName) {
        UsersRepository users = getUserRepository(repositoryName);
        if (!users.contains(userName)) return false;
        users.removeUser(userName);
        return true;
    }

    /**
     * @see org.apache.james.user.api.UserManagementMBean#verifyExists(java.lang.String, java.lang.String)
     */
    public boolean verifyExists(String userName, String repositoryName) {
        UsersRepository users = getUserRepository(repositoryName);
        return users.contains(userName);
    }

    /**
     * @see org.apache.james.user.api.UserManagementMBean#countUsers(java.lang.String)
     */
    public long countUsers(String repositoryName) {
        UsersRepository users = getUserRepository(repositoryName);
        return users.countUsers();
    }

    /**
     * @see org.apache.james.user.api.UserManagementMBean#listAllUsers(java.lang.String)
     */
    public String[] listAllUsers(String repositoryName) {
        List<String> userNames = new ArrayList<String>();
        UsersRepository users = getUserRepository(repositoryName);
        for (Iterator<String> it = users.list(); it.hasNext();) {
            userNames.add(it.next());
        }
        return (String[])userNames.toArray(new String[]{});
    }

    /**
     * @see org.apache.james.user.api.UserManagementMBean#setPassword(java.lang.String, java.lang.String, java.lang.String)
     */
    public boolean setPassword(String userName, String password, String repositoryName) {
        UsersRepository users = getUserRepository(repositoryName);
        User user = users.getUserByName(userName);
        if (user == null) throw new IllegalArgumentException("user not found: " + userName);
        return user.setPassword(password);
    }

    /**
     * @see org.apache.james.user.api.UserManagementMBean#unsetAlias(java.lang.String, java.lang.String)
     */
    public boolean unsetAlias(String userName, String repositoryName) {
        JamesUser user = getJamesUser(userName, null);
        if (!user.getAliasing()) return false;
       
        user.setAliasing(false);
        getUserRepository(repositoryName).updateUser(user);
        return true;
    }

    /**
     * @see org.apache.james.user.api.UserManagementMBean#getAlias(java.lang.String, java.lang.String)
     */
    public String getAlias(String userName, String repositoryName) {
        JamesUser user = getJamesUser(userName, null);
        if (!user.getAliasing()) return null;
        return user.getAlias();
    }

    /**
     * @see org.apache.james.user.api.UserManagementMBean#unsetForwardAddress(java.lang.String, java.lang.String)
     */
    public boolean unsetForwardAddress(String userName, String repositoryName) {
        JamesUser user = getJamesUser(userName, null);

        if (!user.getForwarding()) return false;
       
        user.setForwarding(false);
        getUserRepository(repositoryName).updateUser(user);
        return true;
    }

    /**
     * @see org.apache.james.user.api.UserManagementMBean#getForwardAddress(java.lang.String, java.lang.String)
     */
    public String getForwardAddress(String userName, String repositoryName) {
        JamesUser user = getJamesUser(userName, null);
        if (!user.getForwarding()) return null;
        return user.getForwardingDestination().toString();
    }

    /**
     * @see org.apache.james.user.api.UserManagementMBean#getUserRepositoryNames()
     */
    public List<String> getUserRepositoryNames() {
        List<String> result = new ArrayList<String>();
        if (usersStore == null) return result;
       
        Iterator<String> repositoryNames = usersStore.getRepositoryNames();
        while (repositoryNames.hasNext()) {
            String name = repositoryNames.next();
            result.add(name);
        }
        return result;
    }

}
TOP

Related Classes of org.apache.james.user.lib.UserManagement

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.