AbstractPluggableAuthenticator.java

/*
 * This software was designed and created by Jason Carroll.
 * Copyright (c) 2002, 2003, 2004 Jason Carroll.
 * The author can be reached at jcarroll@cowsultants.com
 * ITracker website: http://www.cowsultants.com
 * ITracker forums: http://www.cowsultants.com/phpBB/index.php
 *
 * This program is free software; you can redistribute it and/or modify
 * it only under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

package org.itracker.services.authentication;

import org.itracker.services.ConfigurationService;
import org.itracker.services.UserService;
import org.itracker.services.exceptions.AuthenticatorException;
import org.itracker.core.AuthenticationConstants;

import java.util.Map;

// TODO: Rewrite Javadocs here: we don't have session beans or EJBs anymore

/**
 * This class provides a skeleton implementation of the PluggableAuthenticator interface.
 * It can be extended to provide a new authentication module for ITracker reducing the amount
 * of effort to implement the PluggableAuthenticator interface.
 */
public abstract class AbstractPluggableAuthenticator
        implements PluggableAuthenticator, AuthenticationConstants {

    //    private final Logger logger;
    private UserService userService = null;
    private ConfigurationService configurationService = null;


    /**
     * This method is called after creating a new instance of the Authenticator.  It supplies
     * some default EJB objects that the authenticator can use.
     */
    public void initialize(Map<?, ?> values) {
        if (values != null) {
            Object userService = values.get("userService");
            Object configurationService = values.get("configurationService");

            if (userService instanceof UserService) {
                this.userService = (UserService) userService;
            }
            if (configurationService instanceof ConfigurationService) {
                this.configurationService = (ConfigurationService) configurationService;
            }
        }
    }

    /**
     * Returns a UserService session bean that can be used to call needed methods such
     * as retrieving a user.
     *
     * @return userService
     * @throws AuthenticatorException an exception if an error occur
     */
    public UserService getUserService() throws AuthenticatorException {
        if (userService == null || !(userService instanceof UserService)) {
            throw new AuthenticatorException(AuthenticatorException.SYSTEM_ERROR);
        }

        return userService;
    }

    /**
     * Returns an ConfigurationService session bean that can be used to retreive properties
     * that have been set in the system.  These properties can be used to provide any
     * needed configuration for the authenticator.
     *
     * @return configurationService
     * @throws AuthenticatorException an exception if an error occur
     */
    public ConfigurationService getConfigurationService() throws AuthenticatorException {
        if (configurationService == null || !(configurationService instanceof ConfigurationService)) {
            throw new AuthenticatorException(AuthenticatorException.SYSTEM_ERROR);
        }

        return configurationService;
    }

}