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()));
       }
   }
  
  
  

Reply via email to