/* * Copyright 2001-2008 Steven Grimm <koreth[remove] at midwinter dot com> and * Geert Bevin <gbevin[remove] at uwyn dot com> * Licensed under the Apache License, Version 2.0 (the "License") * $Id: DatabaseUsersFactory.java 3918 2008-04-14 17:35:35Z gbevin $ */ package com.uwyn.rife.authentication.credentialsmanagers; import com.uwyn.rife.authentication.CredentialsManager; import com.uwyn.rife.database.Datasource; import com.uwyn.rife.database.DbQueryManagerCache; import com.uwyn.rife.database.DbQueryManagerFactory; import com.uwyn.rife.ioc.HierarchicalProperties; import com.uwyn.rife.ioc.exceptions.MandatoryPropertyMissingException; import com.uwyn.rife.ioc.exceptions.PropertyValueException; /** * Factory for {@link DatabaseUsers} manager instances that creates singletons * based on the {@code Datasource} and an optional differentiating * identifier. * * @author Steven Grimm (koreth[remove] at midwinter dot com) * @author Geert Bevin (gbevin[remove] at uwyn dot com) * @version $Revision: 3918 $ * @since 1.0 */ public class DatabaseUsersFactory extends DbQueryManagerFactory implements CredentialsManagerFactory { /** The package name of the datasource-specific implementations */ public static final String MANAGER_PACKAGE_NAME = DatabaseUsersFactory.class.getPackage().getName()+".databasedrivers."; private static DbQueryManagerCache mCache = new DbQueryManagerCache(); /** * Return an instance of {@code DatabaseUsers} for the provided * {@code Datasource}. * * @param datasource the datasource that will be used to create the manager * @return the requested {@code DatabaseUsers} instance * @since 1.0 */ public static DatabaseUsers getInstance(Datasource datasource) { return getInstance(datasource, null); } /** * Return an instance of {@code DatabaseUsers} for the provided * {@code Datasource} and identifier. * * @param datasource the datasource that will be used to create the manager * @param identifier the identifier that will be used to differentiate the * manager when different ones are needed for the same datasource * @return the requested {@code DatabaseUsers} instance * @since 1.0 */ public static DatabaseUsers getInstance(Datasource datasource, String identifier) { if (null == identifier) identifier = ""; return (DatabaseUsers)getInstance(MANAGER_PACKAGE_NAME, mCache, datasource, identifier); } public CredentialsManager getCredentialsManager(HierarchicalProperties properties) throws PropertyValueException { if (!properties.contains("datasource")) { throw new MandatoryPropertyMissingException("datasource"); } return getInstance(properties.getValueTyped("datasource", Datasource.class), properties.getValueString("credentialsmanager_id", "")); } }