Index: src/java/org/apache/commons/httpclient/methods/PostMethod.java =================================================================== RCS file: /home/cvspublic/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/methods/PostMethod.java,v retrieving revision 1.9 diff -u -r1.9 PostMethod.java --- src/java/org/apache/commons/httpclient/methods/PostMethod.java 24 Apr 2002 14:44:50 -0000 1.9 +++ src/java/org/apache/commons/httpclient/methods/PostMethod.java 9 Jul 2002 19:25:48 -0000 @@ -69,6 +69,7 @@ import org.apache.commons.httpclient.HttpMethodBase; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.URIUtil; +import org.apache.commons.httpclient.NameValuePair; import java.util.Iterator; import java.util.HashMap; import java.util.List; @@ -157,12 +158,10 @@ } /** - * Overrides method of {@link HttpMethodBase} - * to throw {@link IllegalStateException} if - * my request body has already been - * {@link #generateRequestBody generated} - * or {@link #setRequestBody set}. + * Add a new parameter to be used in the POST request body. * + * @param parameterName The parameter name to add. + * @param parameterValue The parameter value to add. * @throws IllegalStateException if my request body has already been generated. */ public void addParameter(String parameterName, String parameterValue) { @@ -186,6 +185,89 @@ v.add(parameterValue); parameters.put(parameterName,v); } + } + + + /** + * Add a new parameter to be used in the POST request body. + * Logs a warning if the parameter argument is null. + * + * @param parameter The parameter to add. + * @throws IllegalStateException if my request body has already been generated. + * @see #addParameter(java.lang.String,java.lang.String) + * @since 2.0 + */ + public void addParameter(NameValuePair parameter) { + if(null == parameter){ + log.warn("Attempt to addParameter(null) ignored"); + }else{ + addParameter(parameter.getName(), parameter.getValue()); + } + } + + /** + * Add a list of parameters to be used in the POST request body. + * Logs a warning if the parameters argument is null. + * + * @param parameter The array of parameters to add. + * @throws IllegalStateException if my request body has already been generated. + * @see #addParameter(org.apache.commons.httpclient.NameValuePair) + * @since 2.0 + */ + public void addParameters(NameValuePair[] parameters) { + if(null == parameters){ + log.warn("Attempt to addParameters(null) ignored"); + }else{ + for (int i=0; inot a refrence to any + * internal data members. + * + * @return If a parameter exists with the name argument, the coresponding + * NameValuePair is returned. Otherwise null. + * @since 2.0 + */ + public NameValuePair getParameter(String name){ + String value = null; + try{ + value = (String)parameters.get(name); + }catch (ClassCastException e){ + log.warn("Object of non-string type has been added as a parameter"); + value = null; + } + if (name == null || value == null){ + return null; + }else{ + return new NameValuePair(name, value); + } + } + + /** + * Gets the parameters currently added to the PostMethod. + * The returned object is new and is not a refrence to any + * internal data members. + * + * @return An array of the current parameters + * @see #getParameter(java.lang.String); + * @since 2.0 + */ + public NameValuePair[] getParameters(){ + Set keySet = parameters.keySet(); + Object[] keyArray = keySet.toArray(); + int numKeys = keyArray.length; + NameValuePair[] nvPairs = new NameValuePair[numKeys]; + Object key; + for (int i=0; i