001 /** 002 * 003 * Copyright 2003-2004 The Apache Software Foundation 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 018 // 019 // This source code implements specifications defined by the Java 020 // Community Process. In order to remain compliant with the specification 021 // DO NOT add / change / or delete method signatures! 022 // 023 024 package javax.resource.spi.security; 025 026 import java.io.Serializable; 027 import java.util.Arrays; 028 import javax.resource.spi.ManagedConnectionFactory; 029 030 /** 031 * 032 * 033 * 034 * @version $Rev: 46019 $ $Date: 2004-09-14 02:56:06 -0700 (Tue, 14 Sep 2004) $ 035 */ 036 public final class PasswordCredential implements Serializable { 037 private String userName; 038 private char[] password; 039 private ManagedConnectionFactory mcf; 040 041 public PasswordCredential(String userName, char[] password) { 042 this.userName = userName; 043 this.password = (char[]) password.clone(); 044 } 045 046 public String getUserName() { 047 return userName; 048 } 049 050 public char[] getPassword() { 051 return (char[]) password.clone(); 052 } 053 054 public ManagedConnectionFactory getManagedConnectionFactory() { 055 return mcf; 056 } 057 058 public void setManagedConnectionFactory(ManagedConnectionFactory mcf) { 059 this.mcf = mcf; 060 } 061 062 public boolean equals(Object o) { 063 if (this == o) return true; 064 if (!(o instanceof PasswordCredential)) return false; 065 066 final PasswordCredential credential = (PasswordCredential) o; 067 068 if (!Arrays.equals(password, credential.password)) return false; 069 if (!userName.equals(credential.userName)) return false; 070 071 return true; 072 } 073 074 public int hashCode() { 075 //@todo fix this 076 int result = userName.hashCode(); 077 for (int i=0; i<password.length; i++) { 078 result *= password[i]; 079 } 080 return result; 081 } 082 }