Package org.apache.lenya.ac.impl

Source Code of org.apache.lenya.ac.impl.AbstractAccreditableManager

/*
* 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.
*
*/

/* $Id: AbstractAccreditableManager.java 499783 2007-01-25 13:33:38Z andreas $  */

package org.apache.lenya.ac.impl;

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

import org.apache.avalon.framework.container.ContainerUtil;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.avalon.framework.logger.Logger;
import org.apache.lenya.ac.AccessControlException;
import org.apache.lenya.ac.AccreditableManager;
import org.apache.lenya.ac.GroupManager;
import org.apache.lenya.ac.IPRangeManager;
import org.apache.lenya.ac.Item;
import org.apache.lenya.ac.ItemManagerListener;
import org.apache.lenya.ac.RoleManager;
import org.apache.lenya.ac.UserManager;

/**
* Abstract base class for accreditable managers.
*/
public abstract class AbstractAccreditableManager
    extends AbstractLogEnabled
    implements AccreditableManager, ItemManagerListener {
   
    /**
     * @param logger The logger.
     */
    public AbstractAccreditableManager(Logger logger) {
        ContainerUtil.enableLogging(this, logger);
    }

    private UserManager userManager = null;
    private GroupManager groupManager = null;
    private IPRangeManager ipRangeManager = null;
    private RoleManager roleManager = null;

    private List itemManagerListeners = new ArrayList();

    /**
   * Attaches an item manager listener to this accreditable manager.
   * @param listener An item manager listener.
   */
    public void addItemManagerListener(ItemManagerListener listener) {
        if (!this.itemManagerListeners.contains(listener)) {
           
            if (getLogger().isDebugEnabled()) {
                getLogger().debug("Adding listener: [" + listener + "]");
            }
           
            this.itemManagerListeners.add(listener);
        }
    }

    /**
   * Removes an item manager listener from this accreditable manager.
   * @param listener An item manager listener.
   */
    public void removeItemManagerListener(ItemManagerListener listener) {
        if (getLogger().isDebugEnabled()) {
            getLogger().debug("Removing listener: [" + listener + "]");
        }
           
        this.itemManagerListeners.remove(listener);
    }

    /**
   * Notifies the listeners that an item was added.
   * @param item The item that was added.
   * @throws AccessControlException when a notified listener threw this exception.
   */
    protected void notifyAdded(Item item) throws AccessControlException {
        List clone = new ArrayList(this.itemManagerListeners);
        for (Iterator i = clone.iterator(); i.hasNext();) {
            ItemManagerListener listener = (ItemManagerListener) i.next();
            listener.itemAdded(item);
        }
    }

    /**
   * Notifies the listeners that an item was removed.
   * @param item The item that was removed.
   * @throws AccessControlException when a notified listener threw this exception.
   */
    protected void notifyRemoved(Item item) throws AccessControlException {
        List clone = new ArrayList(this.itemManagerListeners);
        for (Iterator i = clone.iterator(); i.hasNext();) {
            ItemManagerListener listener = (ItemManagerListener) i.next();
            listener.itemRemoved(item);
        }
    }

    /**
   * @see org.apache.lenya.ac.ItemManagerListener#itemAdded(org.apache.lenya.ac.Item)
   */
    public void itemAdded(Item item) throws AccessControlException {
        if (getLogger().isDebugEnabled()) {
            getLogger().debug("Item was added: [" + item + "] - notifying listeners");
        }
        notifyAdded(item);
    }

    /**
   * @see org.apache.lenya.ac.ItemManagerListener#itemRemoved(org.apache.lenya.ac.Item)
   */
    public void itemRemoved(Item item) throws AccessControlException {
        if (getLogger().isDebugEnabled()) {
            getLogger().debug("Item was removed: [" + item + "] - notifying listeners");
        }
        notifyRemoved(item);
    }

    /**
   * @see org.apache.lenya.ac.AccreditableManager#getUserManager()
   */
    public UserManager getUserManager() throws AccessControlException {
        if (this.userManager == null) {
            this.userManager = initializeUserManager();
            this.userManager.addItemManagerListener(this);
        }
        return this.userManager;
    }

    /**
   * @see org.apache.lenya.ac.AccreditableManager#getGroupManager()
   */
    public GroupManager getGroupManager() throws AccessControlException {
        if (this.groupManager == null) {
            this.groupManager = initializeGroupManager();
            this.groupManager.addItemManagerListener(this);
        }
        return this.groupManager;
    }

    /**
   * @see org.apache.lenya.ac.AccreditableManager#getRoleManager()
   */
    public RoleManager getRoleManager() throws AccessControlException {
        if (this.roleManager == null) {
            this.roleManager = initializeRoleManager();
            this.roleManager.addItemManagerListener(this);
        }
        return this.roleManager;
    }

    /**
   * @see org.apache.lenya.ac.AccreditableManager#getIPRangeManager()
   */
    public IPRangeManager getIPRangeManager() throws AccessControlException {
        if (this.ipRangeManager == null) {
            this.ipRangeManager = initializeIPRangeManager();
            this.ipRangeManager.addItemManagerListener(this);
        }
        return this.ipRangeManager;
    }

    /**
   * Initializes the group manager.
   *
     * @return A group manager.
   * @throws AccessControlException when something went wrong.
   */
    protected abstract GroupManager initializeGroupManager() throws AccessControlException;

    /**
   * Initializes the IP range manager.
   *
     * @return An IP range manager.
   * @throws AccessControlException when something went wrong.
   */
    protected abstract IPRangeManager initializeIPRangeManager() throws AccessControlException;

    /**
   * Initializes the role manager.
   *
     * @return A role manager.
   * @throws AccessControlException when something went wrong.
   */
    protected abstract RoleManager initializeRoleManager() throws AccessControlException;

    /**
   * Initializes the user manager.
   *
     * @return A user manager.
   * @throws AccessControlException when something went wrong.
   */
    protected abstract UserManager initializeUserManager() throws AccessControlException;

}
TOP

Related Classes of org.apache.lenya.ac.impl.AbstractAccreditableManager

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.