View Javadoc

1   package org.apache.maven.doxia.module.confluence.parser;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import java.util.List;
23  
24  import org.apache.maven.doxia.sink.Sink;
25  
26  /**
27   * <p>Abstract AbstractFatherBlock class.</p>
28   *
29   * @version $Id: AbstractFatherBlock.java 1090706 2011-04-09 23:15:28Z hboutemy $
30   */
31  public abstract class AbstractFatherBlock
32      implements Block
33  {
34      private List<Block> blocks;
35  
36      /**
37       * <p>before.</p>
38       *
39       * @param sink the Sink to receive events.
40       */
41      public abstract void before( Sink sink );
42  
43      /**
44       * <p>after.</p>
45       *
46       * @param sink the Sink to receive events.
47       */
48      public abstract void after( Sink sink );
49  
50      /**
51       * <p>Constructor for AbstractFatherBlock.</p>
52       *
53       * @param childBlocks the child blocks.
54       */
55      public AbstractFatherBlock( List<Block> childBlocks )
56      {
57          if ( childBlocks == null )
58          {
59              throw new IllegalArgumentException( "argument can't be null" );
60          }
61  
62          this.blocks = childBlocks;
63      }
64  
65      /** {@inheritDoc} */
66      public void traverse(  Sink sink )
67      {
68          before( sink );
69  
70          for ( Block block : blocks )
71          {
72              block.traverse( sink );
73          }
74  
75          after( sink );
76      }
77  
78      /**
79       * <p>Getter for the field <code>blocks</code>.</p>
80       *
81       * @return a {@link java.util.List} object.
82       */
83      public List<Block> getBlocks()
84      {
85          return blocks;
86      }
87  }