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  package org.apache.commons.jelly.tags.core;
17  
18  import org.apache.commons.jelly.JellyTagException;
19  import org.apache.commons.jelly.TagSupport;
20  import org.apache.commons.jelly.XMLOutput;
21  import org.xml.sax.helpers.DefaultHandler;
22  
23  
24  /*** A tag which executes its body but passing no output.
25   *  <p>
26   * Using this tag will still take the time to perform toString on each object
27   * returned to the output (but this toString value is discarded.
28   * A future version should go more internally so that this is avoided.
29   *
30   * @author <a href="mailto:paul@activemath.org">Paul Libbrecht</a>
31   * @version $Revision: 155420 $
32    */
33  public class MuteTag extends TagSupport {
34  
35      /***
36       * Create an instance
37       */
38      public MuteTag() {
39      }
40  
41      /***
42       * Invoke the body and produce no output.
43       * @param output tag output, which is ignored.
44       */
45      public void doTag(XMLOutput output) throws JellyTagException {
46          super.invokeBody(new MuteXMLOutput());
47      }
48  
49      /***
50       * An XMLOutput which really outputs nothing, in particular, avoids calling
51       * toString() in objects returned...
52       */
53      static class MuteXMLOutput extends XMLOutput {
54          public MuteXMLOutput() {
55              super(new DefaultHandler());
56          }
57         
58          /***
59           * Do nothing, not even invoke the toString!
60           */
61          public void objectData(Object o) {
62          }
63      } // class MuteXMLOutput
64  } // class TagSupport