View Javadoc

1   /*
2    * Copyright 2002,2004 The Apache Software Foundation.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package org.apache.commons.jelly.tags.http;
18  
19  import java.net.MalformedURLException;
20  import org.apache.commons.httpclient.HttpMethod;
21  import org.apache.commons.httpclient.NameValuePair;
22  import org.apache.commons.httpclient.methods.PostMethod;
23  
24  
25  /***
26   * A http post
27   *
28   * @author  dion
29   */
30  public class PostTag extends HttpTagSupport {
31  
32      /*** the post method */
33      private PostMethod _postMethod;
34  
35      /*** Creates a new instance of PostTag */
36      public PostTag() {
37      }
38  
39      /***
40       * Return a {@link HttpUrlMethod method} to be used for post'ing
41       *
42       * @return a HttpUrlMethod implementation
43       * @throws MalformedURLException when the {@link getUrl() url} or
44       * {@link #getPath() path} is invalid
45       */
46      protected HttpMethod getHttpMethod() throws MalformedURLException {
47          if (_postMethod == null) {
48              _postMethod = new PostMethod(getResolvedUrl());
49          }
50          return _postMethod;
51      }
52  
53      /***
54       * Set the current parameters on the url method ready for processing
55       *
56       * This method <strong>must</strong> be called after
57       *  {@link getHttpUrlMethod}
58       */
59      protected void setParameters(HttpMethod method) {
60          NameValuePair nvp = null;
61          for (int index = 0; index < getParameters().size(); index++) {
62              NameValuePair parameter = (NameValuePair) getParameters().
63                  get(index);
64              ((PostMethod) method).addParameter(parameter);
65          }
66      }
67      
68      public void doTag(org.apache.commons.jelly.XMLOutput xmlOutput) throws org.apache.commons.jelly.JellyTagException {
69          super.doTag(xmlOutput);
70          _postMethod = null;
71      }
72  
73  }