/*
* @(#)HttpHeaderElement.java 0.3-3 06/05/2001
*
* This file is part of the HTTPClient package
* Copyright (C) 1996-2001 Ronald Tschalär
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307, USA
*
* For questions, suggestions, bug-reports, enhancement-requests etc.
* I may be contacted at:
*
* ronald@innovation.ch
*
* The HTTPClient's home page is located at:
*
* http://www.innovation.ch/java/HTTPClient/
*
*/
package HTTPClient;
/**
* This class holds a description of an http header element. It is used
* by {@link Util#parseHeader(java.lang.String) Util.parseHeader}.
*
* @see Util#parseHeader(java.lang.String)
* @see Util#getElement(java.util.Vector, java.lang.String)
* @see Util#assembleHeader(java.util.Vector)
* @version 0.3-3 06/05/2001
* @author Ronald Tschalär
*/
public class HttpHeaderElement
{
/** element name */
private String name;
/** element value */
private String value;
/** element parameters */
private NVPair[] parameters;
// Constructors
/**
* Construct an element with the given name. The value and parameters
* are set to null. This can be used when a dummy element is constructed
* for comparison or retrieval purposes.
*
* @param name the name of the element
*/
public HttpHeaderElement(String name)
{
this.name = name;
this.value = null;
parameters = new NVPair[0];
}
/**
* @param name the first token in the element
* @param value the value part, or null
* @param params the parameters
*/
public HttpHeaderElement(String name, String value, NVPair[] params)
{
this.name = name;
this.value = value;
if (params != null)
{
parameters = new NVPair[params.length];
System.arraycopy(params, 0, parameters, 0, params.length);
}
else
parameters = new NVPair[0];
}
// Methods
/**
* @return the name
*/
public String getName()
{
return name;
}
/**
* @return the value
*/
public String getValue()
{
return value;
}
/**
* @return the parameters
*/
public NVPair[] getParams()
{
return parameters;
}
/**
* Two elements are equal if they have the same name. The comparison is
* case-insensitive.
*
* @param obj the object to compare with
* @return true if obj is an HttpHeaderElement with the same
* name as this element.
*/
public boolean equals(Object obj)
{
if ((obj != null) && (obj instanceof HttpHeaderElement))
{
String other = ((HttpHeaderElement) obj).name;
return name.equalsIgnoreCase(other);
}
return false;
}
/**
* @return a string containing the HttpHeaderElement formatted as it
* would appear in a header
*/
public String toString()
{
StringBuffer buf = new StringBuffer();
appendTo(buf);
return buf.toString();
}
/**
* Append this header element to the given buffer. This is basically a
* more efficient version of toString()
for assembling
* multiple elements.
*
* @param buf the StringBuffer to append this header to
* @see #toString()
*/
public void appendTo(StringBuffer buf)
{
buf.append(name);
if (value != null)
{
if (Util.needsQuoting(value))
{
buf.append("=\"");
buf.append(Util.quoteString(value, "\\\""));
buf.append('"');
}
else
{
buf.append('=');
buf.append(value);
}
}
for (int idx=0; idx