View Javadoc
1   /*
2     (C) Copyright IBM Corp. 2006, 2010
3   
4     THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE
5     ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE
6     CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
7   
8     You can obtain a current copy of the Eclipse Public License from
9     http://www.opensource.org/licenses/eclipse-1.0.php
10  
11    @author : Endre Bak, ebak@de.ibm.com
12   * 
13   * Change History
14   * Flag       Date        Prog         Description
15   *-------------------------------------------------------------------------------------------------
16   *            2006-04-25  ebak         Initial commit
17   *            2006-04-27  wolfalex     Full implementation 
18   * 2003590    2008-06-30  blaschke-oss Change licensing from CPL to EPL
19   * 2524131    2009-01-21  raman_arora  Upgrade client to JDK 1.5 (Phase 1)
20   * 2899859    2009-11-18  blaschke-oss javax.wbem.client missing JSR48 credential/principal APIs
21   * 2959264    2010-02-25  blaschke-oss Sync up javax.client.* javadoc with JSR48 1.0.0
22   */
23  package org.metricshub.wbem.javax.wbem.client;
24  
25  /*-
26   * ╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲
27   * WBEM Java Client
28   * ჻჻჻჻჻჻
29   * Copyright 2023 - 2025 MetricsHub
30   * ჻჻჻჻჻჻
31   * Licensed under the Apache License, Version 2.0 (the "License");
32   * you may not use this file except in compliance with the License.
33   * You may obtain a copy of the License at
34   *
35   *      http://www.apache.org/licenses/LICENSE-2.0
36   *
37   * Unless required by applicable law or agreed to in writing, software
38   * distributed under the License is distributed on an "AS IS" BASIS,
39   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
40   * See the License for the specific language governing permissions and
41   * limitations under the License.
42   * ╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱
43   */
44  
45  import java.security.Principal;
46  
47  //Sync'd against JSR48 1.0.0 javadoc (build 1.5.0_10) on Wed Jan 20 02:20:59 EST 2010
48  /**
49   * <code>UserPrincipal</code> implements a Principal identity for a client user
50   * identity that authenticates with a username and password. In other words, it
51   * represents the user's login identity on the remote system.
52   * <code>UserPrincipal</code> includes the username and optionally the host
53   * information for which the username is used to authenticate.
54   */
55  public class UserPrincipal implements Principal {
56  	private String iUserName;
57  
58  	private String iHostName;
59  
60  	/**
61  	 * This constructor accepts the user name.
62  	 *
63  	 * @param pUserName
64  	 *            The user login name.
65  	 * @throws IllegalArgumentException
66  	 *             If the <codepUuserName</code> is <code>null</code>.
67  	 */
68  	public UserPrincipal(String pUserName) throws IllegalArgumentException {
69  		if (pUserName == null) throw new IllegalArgumentException("userName is null!");
70  		this.iUserName = pUserName;
71  	}
72  
73  	/**
74  	 * This constructor accepts the user name and host name.
75  	 *
76  	 * @param pUserName
77  	 *            The user login name.
78  	 * @param pHostName
79  	 *            The host name for this principal.
80  	 * @throws IllegalArgumentException
81  	 *             If the <code>pUserName</code> is <code>null</code>.
82  	 */
83  	public UserPrincipal(String pUserName, String pHostName) throws IllegalArgumentException {
84  		if (pUserName == null) throw new IllegalArgumentException("userName is null!");
85  		this.iUserName = pUserName;
86  		this.iHostName = pHostName;
87  	}
88  
89  	/**
90  	 * The <code>equals</code> method checks if the specified object is the same
91  	 * principal as this object. The principals are equal if the specified
92  	 * object is an instance of <code>UserPrincipal</code> and the user name and
93  	 * authentication host name are the same.
94  	 *
95  	 * @param pOtherPrincipal
96  	 *            <code>Principal</code> instance to compare for equality.
97  	 * @return <code>true</code> if the object are equal; <code>false</code>
98  	 *         otherwise.
99  	 */
100 	@Override
101 	public boolean equals(Object pOtherPrincipal) {
102 		if (!(pOtherPrincipal instanceof UserPrincipal)) return false;
103 		UserPrincipal that = (UserPrincipal) pOtherPrincipal;
104 		return (
105 			(this.iUserName == null ? that.iUserName == null : this.iUserName.equalsIgnoreCase(that.iUserName)) &&
106 			(this.iHostName == null ? that.iHostName == null : this.iHostName.equalsIgnoreCase(that.iHostName))
107 		);
108 	}
109 
110 	/**
111 	 * Return the host name associated with this principal.
112 	 *
113 	 * @return The host name.
114 	 */
115 	public String getHostName() {
116 		return this.iHostName;
117 	}
118 
119 	/**
120 	 * Return the name of this principal identity; that is, return the login
121 	 * name.
122 	 *
123 	 * @return The name of this principal identity.
124 	 * @see java.security.Principal#getName()
125 	 */
126 	public String getName() {
127 		return this.iUserName;
128 	}
129 
130 	/**
131 	 * Return the principal's login user name.
132 	 *
133 	 * @return The user login name.
134 	 */
135 	public String getUserName() {
136 		return this.iUserName;
137 	}
138 
139 	/**
140 	 * The <code>hashCode</code> method returns an integer hash code to
141 	 * represent this principal. It can be used to test for non-equality, or as
142 	 * an index key in a hash table.
143 	 *
144 	 * @return An integer hash code representing the principal.
145 	 */
146 	@Override
147 	public int hashCode() {
148 		return this.iUserName != null ? this.iUserName.hashCode() : 0;
149 	}
150 
151 	/**
152 	 * The <code>toString</code> method returns a string representation of the
153 	 * principal suitable for displaying in messages. It should not be used for
154 	 * making authorization checks, however.
155 	 *
156 	 * @return A printable string form of the principal identity.
157 	 */
158 	@Override
159 	public String toString() {
160 		return this.iUserName;
161 	}
162 }