Mercurial > hg > tomcat-userconfig
changeset 2:d11df03af52a
Fixed version of HomeUserDatabase.
author | Mikhail Kryshen <mikhail@kryshen.net> |
---|---|
date | Fri, 30 Oct 2009 03:54:56 +0300 |
parents | bd283605f2ae |
children | 3ab011b6e6e8 |
files | src/kryshen/catalina/startup/HomesUserDatabase.java |
diffstat | 1 files changed, 145 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/kryshen/catalina/startup/HomesUserDatabase.java Fri Oct 30 03:54:56 2009 +0300 @@ -0,0 +1,145 @@ +/* + * 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 kryshen.catalina.startup; + + +import java.io.File; +import java.util.Hashtable; +import java.util.Enumeration; +import org.apache.catalina.startup.*; + + +/** + * Concrete implementation of the <strong>UserDatabase</code> interface + * considers all directories in a directory whose pathname is specified + * to our constructor to be "home" directories for those users. + * + * @author Craig R. McClanahan + * @version $Revision: 467222 $ $Date: 2006-10-24 05:17:11 +0200 (Tue, 24 Oct 2006) $ + */ + +public final class HomesUserDatabase + implements UserDatabase { + + + // --------------------------------------------------------- Constructors + + + /** + * Initialize a new instance of this user database component. + */ + public HomesUserDatabase() { + + super(); + + } + + + // --------------------------------------------------- Instance Variables + + + /** + * The set of home directories for all defined users, keyed by username. + */ + private Hashtable homes = new Hashtable(); + + + /** + * The UserConfig listener with which we are associated. + */ + private UserConfig userConfig = null; + + + // ----------------------------------------------------------- Properties + + + /** + * Return the UserConfig listener with which we are associated. + */ + public UserConfig getUserConfig() { + + return (this.userConfig); + + } + + + /** + * Set the UserConfig listener with which we are associated. + * + * @param userConfig The new UserConfig listener + */ + public void setUserConfig(UserConfig userConfig) { + + this.userConfig = userConfig; + init(); + + } + + + // ------------------------------------------------------- Public Methods + + + /** + * Return an absolute pathname to the home directory for the specified user. + * + * @param user User for which a home directory should be retrieved + */ + public String getHome(String user) { + + return ((String) homes.get(user)); + + } + + + /** + * Return an enumeration of the usernames defined on this server. + */ + public Enumeration getUsers() { + + return (homes.keys()); + + } + + + // ------------------------------------------------------ Private Methods + + + /** + * Initialize our set of users and home directories. + */ + private void init() { + + String homeBase = userConfig.getHomeBase(); + File homeBaseDir = new File(homeBase); + if (!homeBaseDir.exists() || !homeBaseDir.isDirectory()) + return; + String homeBaseFiles[] = homeBaseDir.list(); + + for (int i = 0; i < homeBaseFiles.length; i++) { + File homeDir = new File(homeBaseDir, homeBaseFiles[i]); + if (!homeDir.isDirectory() || !homeDir.canExecute()) + continue; + homes.put(homeBaseFiles[i], homeDir.toString()); + } + + + } + + +}