rwaldhoff 01/08/03 09:55:31
Modified: httpclient/src/java/org/apache/commons/httpclient
Header.java NameValuePair.java
Log:
* avoiding null pointer exception in equals() when name or value is null
* adding hashCode method
* no-arg constructor explictly calls two-arg constructor
Revision Changes Path
1.2 +28 -27
jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/Header.java
Index: Header.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/Header.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Header.java 2001/04/25 18:42:50 1.1
+++ Header.java 2001/08/03 16:55:31 1.2
@@ -1,13 +1,13 @@
/*
- * $Header:
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/Header.java,v
1.1 2001/04/25 18:42:50 remm Exp $
- * $Revision: 1.1 $
- * $Date: 2001/04/25 18:42:50 $
+ * $Header:
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/Header.java,v
1.2 2001/08/03 16:55:31 rwaldhoff Exp $
+ * $Revision: 1.2 $
+ * $Date: 2001/08/03 16:55:31 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 1999 The Apache Software Foundation. All rights
+ * Copyright (c) 1999 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -15,7 +15,7 @@
* are met:
*
* 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
+ * notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
@@ -23,15 +23,15 @@
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
- * any, must include the following acknowlegement:
- * "This product includes software developed by the
+ * any, must include the following acknowlegement:
+ * "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
- * from this software without prior written permission. For written
+ * from this software without prior written permission. For written
* permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache"
@@ -59,7 +59,7 @@
*
* [Additional notices, if required by prior licensing conditions]
*
- */
+ */
package org.apache.commons.httpclient;
@@ -73,47 +73,48 @@
/**
* Header class.
- *
+ *
* @author <a href="mailto:[EMAIL PROTECTED]">Remy Maucherat</a>
*/
public class Header extends NameValuePair {
-
-
+
+
// ----------------------------------------------------------- Constructors
-
-
+
+
/**
* Default constructor.
*/
public Header() {
+ this(null,null);
}
-
-
+
+
/**
* Constructor.
*/
public Header(String name, String value) {
-
+
super(name, value);
-
+
}
-
-
+
+
// ----------------------------------------------------- Instance Variables
-
-
+
+
// ------------------------------------------------------------- Properties
-
-
+
+
// --------------------------------------------------------- Public Methods
-
-
+
+
/**
* Get a String representation of the header.
*/
public String toString() {
return (name + ": " + value + "\r\n");
}
-
-
+
+
}
1.3 +32 -62
jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/NameValuePair.java
Index: NameValuePair.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/NameValuePair.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- NameValuePair.java 2001/07/27 22:53:53 1.2
+++ NameValuePair.java 2001/08/03 16:55:31 1.3
@@ -1,60 +1,13 @@
/*
+ * $Header:
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/NameValuePair.java,v
1.3 2001/08/03 16:55:31 rwaldhoff Exp $
+ * $Revision: 1.3 $
+ * $Date: 2001/08/03 16:55:31 $
* ====================================================================
+ * Copyright (C) The Apache Software Foundation. All rights reserved.
*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- * any, must include the following acknowlegement:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowlegement may appear in the software itself,
- * if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
- * Foundation" must not be used to endorse or promote products derived
- * from this software without prior written permission. For written
- * permission, please contact [EMAIL PROTECTED]
- *
- * 5. Products derived from this software may not be called "Apache"
- * nor may "Apache" appear in their names without prior written
- * permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- * [Additional notices, if required by prior licensing conditions]
- *
+ * This software is published under the terms of the Apache Software License
+ * version 1.1, a copy of which has been included with this distribution in
+ * the LICENSE file.
*/
package org.apache.commons.httpclient;
@@ -62,20 +15,19 @@
import java.io.Serializable;
/**
- * Simple Name Value Pair class.
+ * A simple class encapsulating a name/value pair.
*
* @author <a href="mailto:[EMAIL PROTECTED]">B.C. Holmes</a>
*/
public class NameValuePair implements Serializable {
-
// ----------------------------------------------------------- Constructors
-
/**
* Default constructor.
*/
public NameValuePair() {
+ this(null,null);
}
/**
@@ -100,7 +52,6 @@
*/
protected String value = null;
-
// ------------------------------------------------------------- Properties
/**
@@ -142,25 +93,44 @@
return value;
}
-
// --------------------------------------------------------- Public Methods
/**
- * Get a String representation of the header.
+ * Get a String representation of this pair.
*/
public String toString() {
return ("name=" + name + ", " + "value=" + value);
}
+ /**
+ * Test if the given <i>object</i> is equal to me.
+ * In this implementation, an <i>object</i> is
+ * equal to me iff it has the same runtime
+ * type and the <i>name</i> and <i>value</i> attributes
+ * are both <tt>equal</tt> (or <tt>==</tt>).
+ *
+ * @param object the {@link Object} to compare to
+ */
public boolean equals(Object object) {
if (this == object) {
return true;
} else if (this.getClass().equals(object.getClass())) {
NameValuePair pair = (NameValuePair) object;
- return (this.name.equals(pair.name) &&
- this.value.equals(pair.value));
+ return ((null == name ? null == pair.name : name.equals(pair.name))
+ && (null == value ? null == pair.value :
value.equals(pair.value)));
} else {
return false;
}
+ }
+
+ /**
+ * Returns a hash code for this object such that
+ * if <tt>a.{@link #equals equals}(b)</tt> then
+ * <tt>a.hashCode() == b.hashCode()</tt>.
+ */
+ public int hashCode() {
+ return (this.getClass().hashCode() ^
+ (null == name ? 0 : name.hashCode()) ^
+ (null == value ? 0 : value.hashCode()));
}
}