NTUserPrincipal.java revision 069490a5ca2fd1988d29daf45d892f47ad665115
1076cbae4b97cfb7764321f92d8506ef38366facaGeorg Brandl/* 294ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/auth/NTUserPrincipal.java $ 394ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy * $Revision: 658430 $ 494ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy * $Date: 2008-05-20 14:04:27 -0700 (Tue, 20 May 2008) $ 594ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy * 694ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy * ==================================================================== 794ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy * 894ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy * Licensed to the Apache Software Foundation (ASF) under one or more 994ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy * contributor license agreements. See the NOTICE file distributed with 1094ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy * this work for additional information regarding copyright ownership. 1194ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy * The ASF licenses this file to You under the Apache License, Version 2.0 1294ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy * (the "License"); you may not use this file except in compliance with 1394ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy * the License. You may obtain a copy of the License at 1494ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy * 1594ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy * http://www.apache.org/licenses/LICENSE-2.0 1694ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy * 17867579972d9a1e9e077626de6d6d083e30fea110Terry Jan Reedy * Unless required by applicable law or agreed to in writing, software 1894ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy * distributed under the License is distributed on an "AS IS" BASIS, 1994ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 20c6a1c02cce3a12683cd951193c8f9ce30d79f6dcTerry Jan Reedy * See the License for the specific language governing permissions and 21c6a1c02cce3a12683cd951193c8f9ce30d79f6dcTerry Jan Reedy * limitations under the License. 22d43ffc9aba8d3a594486d2488bf3e3dfb50a43b2Terry Jan Reedy * ==================================================================== 23d43ffc9aba8d3a594486d2488bf3e3dfb50a43b2Terry Jan Reedy * 24d43ffc9aba8d3a594486d2488bf3e3dfb50a43b2Terry Jan Reedy * This software consists of voluntary contributions made by many 2594ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy * individuals on behalf of the Apache Software Foundation. For more 26c6a1c02cce3a12683cd951193c8f9ce30d79f6dcTerry Jan Reedy * information on the Apache Software Foundation, please see 27c6a1c02cce3a12683cd951193c8f9ce30d79f6dcTerry Jan Reedy * <http://www.apache.org/>. 28c6a1c02cce3a12683cd951193c8f9ce30d79f6dcTerry Jan Reedy * 29c6a1c02cce3a12683cd951193c8f9ce30d79f6dcTerry Jan Reedy */ 30c6a1c02cce3a12683cd951193c8f9ce30d79f6dcTerry Jan Reedy 31c6a1c02cce3a12683cd951193c8f9ce30d79f6dcTerry Jan Reedypackage org.apache.http.auth; 3294ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy 3394ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedyimport java.security.Principal; 3494ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedyimport java.util.Locale; 3594ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy 3694ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedyimport org.apache.http.util.LangUtils; 3794ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy 3894ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy/** NT (MS Windows specific) user principal used for HTTP authentication 3994ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy * 4094ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> 4194ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy * 4294ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy * @since 4.0 4394ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy */ 4494ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedypublic class NTUserPrincipal implements Principal { 4594ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy 4694ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy private final String username; 4794ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy private final String domain; 4894ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy private final String ntname; 4994ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy 5094ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy public NTUserPrincipal( 5194ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy final String domain, 5294ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy final String username) { 5394ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy super(); 5494ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy if (username == null) { 5594ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy throw new IllegalArgumentException("User name may not be null"); 5694ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy } 5794ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy this.username = username; 5894ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy if (domain != null) { 5994ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy this.domain = domain.toUpperCase(Locale.ENGLISH); 6094ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy } else { 6194ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy this.domain = null; 6294ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy } 6394ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy if (this.domain != null && this.domain.length() > 0) { 6494ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy StringBuilder buffer = new StringBuilder(); 6594ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy buffer.append(this.domain); 6694ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy buffer.append('/'); 6794ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy buffer.append(this.username); 6894ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy this.ntname = buffer.toString(); 6994ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy } else { 7094ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy this.ntname = this.username; 7194ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy } 7294ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy } 7394ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy 7494ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy public String getName() { 7594ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy return this.ntname; 7694ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy } 7794ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy 7894ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy public String getDomain() { 7994ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy return this.domain; 8094ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy } 8194ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy 8294ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy public String getUsername() { 8394ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy return this.username; 8494ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy } 8594ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy 8694ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy @Override 8794ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy public int hashCode() { 88076cbae4b97cfb7764321f92d8506ef38366facaGeorg Brandl int hash = LangUtils.HASH_SEED; 89076cbae4b97cfb7764321f92d8506ef38366facaGeorg Brandl hash = LangUtils.hashCode(hash, this.username); 90076cbae4b97cfb7764321f92d8506ef38366facaGeorg Brandl hash = LangUtils.hashCode(hash, this.domain); 91076cbae4b97cfb7764321f92d8506ef38366facaGeorg Brandl return hash; 922bac3b778f0a3efe374334b9694e99ed48431414Terry Jan Reedy } 936fa5bdc6e85ec48925bc0d856b134f59d01c300fTerry Jan Reedy 946fa5bdc6e85ec48925bc0d856b134f59d01c300fTerry Jan Reedy @Override 9594ee51ed9ee1df1890b9d2493a64bc484a522da2Terry Jan Reedy public boolean equals(Object o) { 96076cbae4b97cfb7764321f92d8506ef38366facaGeorg Brandl if (o == null) return false; 97076cbae4b97cfb7764321f92d8506ef38366facaGeorg Brandl if (this == o) return true; 98076cbae4b97cfb7764321f92d8506ef38366facaGeorg Brandl if (o instanceof NTUserPrincipal) { 99076cbae4b97cfb7764321f92d8506ef38366facaGeorg Brandl NTUserPrincipal that = (NTUserPrincipal) o; 100c6a1c02cce3a12683cd951193c8f9ce30d79f6dcTerry Jan Reedy if (LangUtils.equals(this.username, that.username) 101076cbae4b97cfb7764321f92d8506ef38366facaGeorg Brandl && LangUtils.equals(this.domain, that.domain)) { 102076cbae4b97cfb7764321f92d8506ef38366facaGeorg Brandl return true; 103076cbae4b97cfb7764321f92d8506ef38366facaGeorg Brandl } 104076cbae4b97cfb7764321f92d8506ef38366facaGeorg Brandl } 105076cbae4b97cfb7764321f92d8506ef38366facaGeorg Brandl return false; 106076cbae4b97cfb7764321f92d8506ef38366facaGeorg Brandl } 107076cbae4b97cfb7764321f92d8506ef38366facaGeorg Brandl 108076cbae4b97cfb7764321f92d8506ef38366facaGeorg Brandl @Override 109076cbae4b97cfb7764321f92d8506ef38366facaGeorg Brandl public String toString() { 110c6a1c02cce3a12683cd951193c8f9ce30d79f6dcTerry Jan Reedy return this.ntname; 111c6a1c02cce3a12683cd951193c8f9ce30d79f6dcTerry Jan Reedy } 112c6a1c02cce3a12683cd951193c8f9ce30d79f6dcTerry Jan Reedy 113c6a1c02cce3a12683cd951193c8f9ce30d79f6dcTerry Jan Reedy} 114c6a1c02cce3a12683cd951193c8f9ce30d79f6dcTerry Jan Reedy