Coverage Report - org.apache.maven.doxia.sink.RandomAccessSink
 
Classes in this File Line Coverage Branch Coverage Complexity
RandomAccessSink
13%
40/296
83%
5/6
1,039
 
 1  
 package org.apache.maven.doxia.sink;
 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.io.ByteArrayOutputStream;
 23  
 import java.io.File;
 24  
 import java.io.FileOutputStream;
 25  
 import java.io.IOException;
 26  
 import java.io.OutputStream;
 27  
 import java.util.ArrayList;
 28  
 import java.util.List;
 29  
 
 30  
 import org.apache.maven.doxia.logging.Log;
 31  
 
 32  
 /**
 33  
  * The RandomAccessSink provides the ability to create a {@link Sink} with hooks.
 34  
  * A page can be prepared by first creating its structure and specifying the positions of these hooks.
 35  
  * After specifying the structure, the page can be filled with content from one or more models.
 36  
  * These hooks can prevent you to have to loop over the model multiple times to build the page as desired. 
 37  
  * 
 38  
  * @author Robert Scholte
 39  
  * @since 1.3
 40  
  */
 41  
 public class RandomAccessSink
 42  
     implements Sink
 43  
 {
 44  
     private SinkFactory sinkFactory;
 45  
 
 46  
     private String encoding;
 47  
 
 48  
     private OutputStream coreOutputStream;
 49  
 
 50  
     private Sink coreSink;
 51  
 
 52  4
     private List<Sink> sinks = new ArrayList<Sink>();
 53  
 
 54  4
     private List<ByteArrayOutputStream> outputStreams = new ArrayList<ByteArrayOutputStream>();
 55  
 
 56  
     private Sink currentSink;
 57  
 
 58  
     public RandomAccessSink( SinkFactory sinkFactory, OutputStream stream )
 59  
         throws IOException
 60  0
     {
 61  0
         this.sinkFactory = sinkFactory;
 62  0
         this.coreOutputStream = stream;
 63  0
         this.coreSink = this.currentSink = sinkFactory.createSink( stream );
 64  0
     }
 65  
 
 66  
     public RandomAccessSink( SinkFactory sinkFactory, OutputStream stream, String encoding )
 67  
         throws IOException
 68  4
     {
 69  4
         this.sinkFactory = sinkFactory;
 70  4
         this.coreOutputStream = stream;
 71  4
         this.encoding = encoding;
 72  4
         this.coreSink = this.currentSink = sinkFactory.createSink( stream, encoding );
 73  4
     }
 74  
 
 75  
     public RandomAccessSink( SinkFactory sinkFactory, File outputDirectory, String outputName )
 76  
         throws IOException
 77  0
     {
 78  0
         this.sinkFactory = sinkFactory;
 79  0
         this.coreOutputStream = new FileOutputStream( new File( outputDirectory, outputName ) );
 80  0
         this.coreSink = this.currentSink = sinkFactory.createSink( coreOutputStream );
 81  0
     }
 82  
 
 83  
     public RandomAccessSink( SinkFactory sinkFactory, File outputDirectory, String outputName, String encoding )
 84  
         throws IOException
 85  0
     {
 86  0
         this.sinkFactory = sinkFactory;
 87  0
         this.coreOutputStream = new FileOutputStream( new File( outputDirectory, outputName ) );
 88  0
         this.encoding = encoding;
 89  0
         this.coreSink = this.currentSink = sinkFactory.createSink( coreOutputStream, encoding );
 90  0
     }
 91  
 
 92  
     /**
 93  
      * By calling this method a sink reference is added at the current position. You can write to both the new sink
 94  
      * reference and the original sink. After flushing all sinks will be flushed in the right order.
 95  
      * 
 96  
      * @return a subsink reference you can write to
 97  
      */
 98  
     public Sink addSinkHook()
 99  
     {
 100  4
         Sink subSink = null;
 101  
         try
 102  
         {
 103  4
             ByteArrayOutputStream subOut = new ByteArrayOutputStream();
 104  4
             ByteArrayOutputStream newOut = new ByteArrayOutputStream();
 105  
 
 106  4
             outputStreams.add( subOut );
 107  4
             outputStreams.add( newOut );
 108  
 
 109  4
             if ( encoding != null )
 110  
             {
 111  4
                 subSink = sinkFactory.createSink( subOut, encoding );
 112  4
                 currentSink = sinkFactory.createSink( newOut, encoding );
 113  
             }
 114  
             else
 115  
             {
 116  0
                 subSink = sinkFactory.createSink( subOut );
 117  0
                 currentSink = sinkFactory.createSink( newOut );
 118  
             }
 119  4
             sinks.add( subSink );
 120  4
             sinks.add( currentSink );
 121  
         }
 122  0
         catch ( IOException e )
 123  
         {
 124  
             // IOException can only be caused by our own ByteArrayOutputStream
 125  4
         }
 126  4
         return subSink;
 127  
     }
 128  
 
 129  
     /** {@inheritDoc} */
 130  
     public void anchor( String name )
 131  
     {
 132  2
         currentSink.anchor( name );
 133  2
     }
 134  
 
 135  
     /** {@inheritDoc} */
 136  
     public void anchor( String name, SinkEventAttributes attributes )
 137  
     {
 138  0
         currentSink.anchor( name, attributes );
 139  0
     }
 140  
 
 141  
     /** {@inheritDoc} */
 142  
     public void anchor_()
 143  
     {
 144  2
         currentSink.anchor_();
 145  2
     }
 146  
 
 147  
     /** {@inheritDoc} */
 148  
     public void author()
 149  
     {
 150  0
         currentSink.author();
 151  0
     }
 152  
 
 153  
     /** {@inheritDoc} */
 154  
     public void author( SinkEventAttributes attributes )
 155  
     {
 156  0
         currentSink.author( attributes );
 157  0
     }
 158  
 
 159  
     /** {@inheritDoc} */
 160  
     public void author_()
 161  
     {
 162  0
         currentSink.author_();
 163  0
     }
 164  
 
 165  
     /** {@inheritDoc} */
 166  
     public void body()
 167  
     {
 168  0
         currentSink.body();
 169  0
     }
 170  
 
 171  
     /** {@inheritDoc} */
 172  
     public void body( SinkEventAttributes attributes )
 173  
     {
 174  0
         currentSink.body( attributes );
 175  0
     }
 176  
 
 177  
     /** {@inheritDoc} */
 178  
     public void body_()
 179  
     {
 180  0
         currentSink.body_();
 181  0
     }
 182  
 
 183  
     /** {@inheritDoc} */
 184  
     public void bold()
 185  
     {
 186  0
         currentSink.bold();
 187  0
     }
 188  
 
 189  
     /** {@inheritDoc} */
 190  
     public void bold_()
 191  
     {
 192  0
         currentSink.bold_();
 193  0
     }
 194  
 
 195  
     /**
 196  
      * Close all sinks
 197  
      */
 198  
     public void close()
 199  
     {
 200  4
         for ( Sink sink  : sinks )
 201  
         {
 202  
             // sink is responsible for closing it's stream
 203  8
             sink.close();
 204  
         }
 205  4
         coreSink.close();
 206  4
     }
 207  
 
 208  
     /** {@inheritDoc} */
 209  
     public void comment( String comment )
 210  
     {
 211  0
         currentSink.comment( comment );
 212  0
     }
 213  
 
 214  
     /** {@inheritDoc} */
 215  
     public void date()
 216  
     {
 217  0
         currentSink.date();
 218  0
     }
 219  
 
 220  
     /** {@inheritDoc} */
 221  
     public void date( SinkEventAttributes attributes )
 222  
     {
 223  0
         currentSink.date( attributes );
 224  0
     }
 225  
 
 226  
     /** {@inheritDoc} */
 227  
     public void date_()
 228  
     {
 229  0
         currentSink.date_();
 230  0
     }
 231  
 
 232  
     /** {@inheritDoc} */
 233  
     public void definedTerm()
 234  
     {
 235  0
         currentSink.definedTerm();
 236  0
     }
 237  
 
 238  
     /** {@inheritDoc} */
 239  
     public void definedTerm( SinkEventAttributes attributes )
 240  
     {
 241  0
         currentSink.definedTerm( attributes );
 242  0
     }
 243  
 
 244  
     /** {@inheritDoc} */
 245  
     public void definedTerm_()
 246  
     {
 247  0
         currentSink.definedTerm_();
 248  0
     }
 249  
 
 250  
     /** {@inheritDoc} */
 251  
     public void definition()
 252  
     {
 253  0
         currentSink.definition();
 254  0
     }
 255  
 
 256  
     /** {@inheritDoc} */
 257  
     public void definition( SinkEventAttributes attributes )
 258  
     {
 259  0
         currentSink.definition( attributes );
 260  0
     }
 261  
 
 262  
     /** {@inheritDoc} */
 263  
     public void definitionList()
 264  
     {
 265  0
         currentSink.definitionList();
 266  0
     }
 267  
 
 268  
     /** {@inheritDoc} */
 269  
     public void definitionList( SinkEventAttributes attributes )
 270  
     {
 271  0
         currentSink.definitionList( attributes );
 272  0
     }
 273  
 
 274  
     /** {@inheritDoc} */
 275  
     public void definitionListItem()
 276  
     {
 277  0
         currentSink.definitionListItem();
 278  0
     }
 279  
 
 280  
     /** {@inheritDoc} */
 281  
     public void definitionListItem( SinkEventAttributes attributes )
 282  
     {
 283  0
         currentSink.definitionListItem( attributes );
 284  0
     }
 285  
 
 286  
     /** {@inheritDoc} */
 287  
     public void definitionListItem_()
 288  
     {
 289  0
         currentSink.definitionListItem_();
 290  0
     }
 291  
 
 292  
     /** {@inheritDoc} */
 293  
     public void definitionList_()
 294  
     {
 295  0
         currentSink.definitionList_();
 296  0
     }
 297  
 
 298  
     /** {@inheritDoc} */
 299  
     public void definition_()
 300  
     {
 301  0
         currentSink.definition_();
 302  0
     }
 303  
 
 304  
     /** {@inheritDoc} */
 305  
     public void figure()
 306  
     {
 307  0
         currentSink.figure();
 308  0
     }
 309  
 
 310  
     /** {@inheritDoc} */
 311  
     public void figure( SinkEventAttributes attributes )
 312  
     {
 313  0
         currentSink.figure( attributes );
 314  0
     }
 315  
 
 316  
     /** {@inheritDoc} */
 317  
     public void figureCaption()
 318  
     {
 319  0
         currentSink.figureCaption();
 320  0
     }
 321  
 
 322  
     /** {@inheritDoc} */
 323  
     public void figureCaption( SinkEventAttributes attributes )
 324  
     {
 325  0
         currentSink.figureCaption( attributes );
 326  0
     }
 327  
 
 328  
     /** {@inheritDoc} */
 329  
     public void figureCaption_()
 330  
     {
 331  0
         currentSink.figureCaption_();
 332  0
     }
 333  
 
 334  
     /** {@inheritDoc} */
 335  
     public void figureGraphics( String name )
 336  
     {
 337  0
         currentSink.figureGraphics( name );
 338  0
     }
 339  
 
 340  
     /** {@inheritDoc} */
 341  
     public void figureGraphics( String src, SinkEventAttributes attributes )
 342  
     {
 343  0
         currentSink.figureGraphics( src, attributes );
 344  0
     }
 345  
 
 346  
     /** {@inheritDoc} */
 347  
     public void figure_()
 348  
     {
 349  0
         currentSink.figure_();
 350  0
     }
 351  
 
 352  
     /**
 353  
      * Flush all sinks
 354  
      */
 355  
     public void flush()
 356  
     {
 357  12
         for ( int i = 0; i < sinks.size(); i++ )
 358  
         {
 359  
             // first flush to get complete buffer
 360  
             // sink is responsible for flushing it's stream
 361  8
             Sink sink = sinks.get( i );
 362  8
             sink.flush();
 363  
 
 364  8
             ByteArrayOutputStream stream = outputStreams.get( i );
 365  
             try
 366  
             {
 367  8
                 coreOutputStream.write( stream.toByteArray() );
 368  
             }
 369  0
             catch ( IOException e )
 370  
             {
 371  
                 // @todo
 372  8
             }
 373  
         }
 374  4
         coreSink.flush();
 375  4
     }
 376  
 
 377  
     /** {@inheritDoc} */
 378  
     public void head()
 379  
     {
 380  0
         currentSink.head();
 381  0
     }
 382  
 
 383  
     /** {@inheritDoc} */
 384  
     public void head( SinkEventAttributes attributes )
 385  
     {
 386  0
         currentSink.head( attributes );
 387  0
     }
 388  
 
 389  
     /** {@inheritDoc} */
 390  
     public void head_()
 391  
     {
 392  0
         currentSink.head_();
 393  0
     }
 394  
 
 395  
     /** {@inheritDoc} */
 396  
     public void horizontalRule()
 397  
     {
 398  2
         currentSink.horizontalRule();
 399  2
     }
 400  
 
 401  
     /** {@inheritDoc} */
 402  
     public void horizontalRule( SinkEventAttributes attributes )
 403  
     {
 404  0
         currentSink.horizontalRule( attributes );
 405  0
     }
 406  
 
 407  
     /** {@inheritDoc} */
 408  
     public void italic()
 409  
     {
 410  0
         currentSink.italic();
 411  0
     }
 412  
 
 413  
     /** {@inheritDoc} */
 414  
     public void italic_()
 415  
     {
 416  0
         currentSink.italic_();
 417  0
     }
 418  
 
 419  
     /** {@inheritDoc} */
 420  
     public void lineBreak()
 421  
     {
 422  0
         currentSink.lineBreak();
 423  0
     }
 424  
 
 425  
     /** {@inheritDoc} */
 426  
     public void lineBreak( SinkEventAttributes attributes )
 427  
     {
 428  0
         currentSink.lineBreak( attributes );
 429  0
     }
 430  
 
 431  
     /** {@inheritDoc} */
 432  
     public void link( String name )
 433  
     {
 434  0
         currentSink.link( name );
 435  0
     }
 436  
 
 437  
     /** {@inheritDoc} */
 438  
     public void link( String name, SinkEventAttributes attributes )
 439  
     {
 440  0
         currentSink.link( name, attributes );
 441  0
     }
 442  
 
 443  
     /** {@inheritDoc} */
 444  
     public void link_()
 445  
     {
 446  0
         currentSink.link_();
 447  0
     }
 448  
 
 449  
     /** {@inheritDoc} */
 450  
     public void list()
 451  
     {
 452  0
         currentSink.list();
 453  0
     }
 454  
 
 455  
     /** {@inheritDoc} */
 456  
     public void list( SinkEventAttributes attributes )
 457  
     {
 458  0
         currentSink.list( attributes );
 459  0
     }
 460  
 
 461  
     /** {@inheritDoc} */
 462  
     public void listItem()
 463  
     {
 464  0
         currentSink.listItem();
 465  0
     }
 466  
 
 467  
     /** {@inheritDoc} */
 468  
     public void listItem( SinkEventAttributes attributes )
 469  
     {
 470  0
         currentSink.listItem( attributes );
 471  0
     }
 472  
 
 473  
     /** {@inheritDoc} */
 474  
     public void listItem_()
 475  
     {
 476  0
         currentSink.listItem_();
 477  0
     }
 478  
 
 479  
     /** {@inheritDoc} */
 480  
     public void list_()
 481  
     {
 482  0
         currentSink.list_();
 483  0
     }
 484  
 
 485  
     /** {@inheritDoc} */
 486  
     public void monospaced()
 487  
     {
 488  0
         currentSink.monospaced();
 489  0
     }
 490  
 
 491  
     /** {@inheritDoc} */
 492  
     public void monospaced_()
 493  
     {
 494  0
         currentSink.monospaced_();
 495  0
     }
 496  
 
 497  
     /** {@inheritDoc} */
 498  
     public void nonBreakingSpace()
 499  
     {
 500  0
         currentSink.nonBreakingSpace();
 501  0
     }
 502  
 
 503  
     /** {@inheritDoc} */
 504  
     public void numberedList( int numbering )
 505  
     {
 506  0
         currentSink.numberedList( numbering );
 507  0
     }
 508  
 
 509  
     /** {@inheritDoc} */
 510  
     public void numberedList( int numbering, SinkEventAttributes attributes )
 511  
     {
 512  0
         currentSink.numberedList( numbering, attributes );
 513  0
     }
 514  
 
 515  
     /** {@inheritDoc} */
 516  
     public void numberedListItem()
 517  
     {
 518  0
         currentSink.numberedListItem();
 519  0
     }
 520  
 
 521  
     /** {@inheritDoc} */
 522  
     public void numberedListItem( SinkEventAttributes attributes )
 523  
     {
 524  0
         currentSink.numberedListItem( attributes );
 525  0
     }
 526  
 
 527  
     /** {@inheritDoc} */
 528  
     public void numberedListItem_()
 529  
     {
 530  0
         currentSink.numberedListItem_();
 531  0
     }
 532  
 
 533  
     /** {@inheritDoc} */
 534  
     public void numberedList_()
 535  
     {
 536  0
         currentSink.numberedList_();
 537  0
     }
 538  
 
 539  
     /** {@inheritDoc} */
 540  
     public void pageBreak()
 541  
     {
 542  0
         currentSink.pageBreak();
 543  0
     }
 544  
 
 545  
     /** {@inheritDoc} */
 546  
     public void paragraph()
 547  
     {
 548  0
         currentSink.paragraph();
 549  0
     }
 550  
 
 551  
     /** {@inheritDoc} */
 552  
     public void paragraph( SinkEventAttributes attributes )
 553  
     {
 554  0
         currentSink.paragraph( attributes );
 555  0
     }
 556  
 
 557  
     /** {@inheritDoc} */
 558  
     public void paragraph_()
 559  
     {
 560  0
         currentSink.paragraph_();
 561  0
     }
 562  
 
 563  
     /** {@inheritDoc} */
 564  
     public void rawText( String text )
 565  
     {
 566  0
         currentSink.rawText( text );
 567  0
     }
 568  
 
 569  
     /** {@inheritDoc} */
 570  
     public void section( int level, SinkEventAttributes attributes )
 571  
     {
 572  0
         currentSink.section( level, attributes );
 573  0
     }
 574  
 
 575  
     /** {@inheritDoc} */
 576  
     public void section1()
 577  
     {
 578  0
         currentSink.section1();
 579  0
     }
 580  
 
 581  
     /** {@inheritDoc} */
 582  
     public void section1_()
 583  
     {
 584  0
         currentSink.section1_();
 585  0
     }
 586  
 
 587  
     /** {@inheritDoc} */
 588  
     public void section2()
 589  
     {
 590  0
         currentSink.section2();
 591  0
     }
 592  
 
 593  
     /** {@inheritDoc} */
 594  
     public void section2_()
 595  
     {
 596  0
         currentSink.section2_();
 597  0
     }
 598  
 
 599  
     /** {@inheritDoc} */
 600  
     public void section3()
 601  
     {
 602  0
         currentSink.section3();
 603  0
     }
 604  
 
 605  
     /** {@inheritDoc} */
 606  
     public void section3_()
 607  
     {
 608  0
         currentSink.section3_();
 609  0
     }
 610  
 
 611  
     /** {@inheritDoc} */
 612  
     public void section4()
 613  
     {
 614  0
         currentSink.section4();
 615  0
     }
 616  
 
 617  
     /** {@inheritDoc} */
 618  
     public void section4_()
 619  
     {
 620  0
         currentSink.section4_();
 621  0
     }
 622  
 
 623  
     /** {@inheritDoc} */
 624  
     public void section5()
 625  
     {
 626  0
         currentSink.section5();
 627  0
     }
 628  
 
 629  
     /** {@inheritDoc} */
 630  
     public void section5_()
 631  
     {
 632  0
         currentSink.section5_();
 633  0
     }
 634  
 
 635  
     /** {@inheritDoc} */
 636  
     public void sectionTitle()
 637  
     {
 638  0
         currentSink.sectionTitle();
 639  0
     }
 640  
 
 641  
     /** {@inheritDoc} */
 642  
     public void sectionTitle( int level, SinkEventAttributes attributes )
 643  
     {
 644  0
         currentSink.sectionTitle( level, attributes );
 645  0
     }
 646  
 
 647  
     /** {@inheritDoc} */
 648  
     public void sectionTitle1()
 649  
     {
 650  0
         currentSink.sectionTitle1();
 651  0
     }
 652  
 
 653  
     /** {@inheritDoc} */
 654  
     public void sectionTitle1_()
 655  
     {
 656  0
         currentSink.sectionTitle1_();
 657  0
     }
 658  
 
 659  
     /** {@inheritDoc} */
 660  
     public void sectionTitle2()
 661  
     {
 662  0
         currentSink.sectionTitle2();
 663  0
     }
 664  
 
 665  
     /** {@inheritDoc} */
 666  
     public void sectionTitle2_()
 667  
     {
 668  0
         currentSink.sectionTitle2_();
 669  0
     }
 670  
 
 671  
     /** {@inheritDoc} */
 672  
     public void sectionTitle3()
 673  
     {
 674  0
         currentSink.sectionTitle3();
 675  0
     }
 676  
 
 677  
     /** {@inheritDoc} */
 678  
     public void sectionTitle3_()
 679  
     {
 680  0
         currentSink.sectionTitle3_();
 681  0
     }
 682  
 
 683  
     /** {@inheritDoc} */
 684  
     public void sectionTitle4()
 685  
     {
 686  0
         currentSink.sectionTitle4();
 687  0
     }
 688  
 
 689  
     /** {@inheritDoc} */
 690  
     public void sectionTitle4_()
 691  
     {
 692  0
         currentSink.sectionTitle4_();
 693  0
     }
 694  
 
 695  
     /** {@inheritDoc} */
 696  
     public void sectionTitle5()
 697  
     {
 698  0
         currentSink.sectionTitle5();
 699  0
     }
 700  
 
 701  
     /** {@inheritDoc} */
 702  
     public void sectionTitle5_()
 703  
     {
 704  0
         currentSink.sectionTitle5_();
 705  0
     }
 706  
 
 707  
     /** {@inheritDoc} */
 708  
     public void sectionTitle_()
 709  
     {
 710  0
         currentSink.sectionTitle_();
 711  0
     }
 712  
 
 713  
     /** {@inheritDoc} */
 714  
     public void sectionTitle_( int level )
 715  
     {
 716  0
         currentSink.sectionTitle_( level );
 717  0
     }
 718  
 
 719  
     /** {@inheritDoc} */
 720  
     public void section_( int level )
 721  
     {
 722  0
         currentSink.section_( level );
 723  0
     }
 724  
 
 725  
     /** {@inheritDoc} */
 726  
     public void table()
 727  
     {
 728  0
         currentSink.table();
 729  0
     }
 730  
 
 731  
     /** {@inheritDoc} */
 732  
     public void table( SinkEventAttributes attributes )
 733  
     {
 734  0
         currentSink.table( attributes );
 735  0
     }
 736  
 
 737  
     /** {@inheritDoc} */
 738  
     public void tableCaption()
 739  
     {
 740  0
         currentSink.tableCaption();
 741  0
     }
 742  
 
 743  
     /** {@inheritDoc} */
 744  
     public void tableCaption( SinkEventAttributes attributes )
 745  
     {
 746  0
         currentSink.tableCaption( attributes );
 747  0
     }
 748  
 
 749  
     /** {@inheritDoc} */
 750  
     public void tableCaption_()
 751  
     {
 752  0
         currentSink.tableCaption_();
 753  0
     }
 754  
 
 755  
     /** {@inheritDoc} */
 756  
     public void tableCell()
 757  
     {
 758  0
         currentSink.tableCell();
 759  0
     }
 760  
 
 761  
     /** {@inheritDoc} */
 762  
     public void tableCell( String width )
 763  
     {
 764  0
         currentSink.tableCell( width );
 765  0
     }
 766  
 
 767  
     /** {@inheritDoc} */
 768  
     public void tableCell( SinkEventAttributes attributes )
 769  
     {
 770  0
         currentSink.tableCell( attributes );
 771  0
     }
 772  
 
 773  
     /** {@inheritDoc} */
 774  
     public void tableCell_()
 775  
     {
 776  0
         currentSink.tableCell_();
 777  0
     }
 778  
 
 779  
     /** {@inheritDoc} */
 780  
     public void tableHeaderCell()
 781  
     {
 782  0
         currentSink.tableHeaderCell();
 783  0
     }
 784  
 
 785  
     /** {@inheritDoc} */
 786  
     public void tableHeaderCell( String width )
 787  
     {
 788  0
         currentSink.tableHeaderCell( width );
 789  0
     }
 790  
 
 791  
     /** {@inheritDoc} */
 792  
     public void tableHeaderCell( SinkEventAttributes attributes )
 793  
     {
 794  0
         currentSink.tableHeaderCell( attributes );
 795  0
     }
 796  
 
 797  
     /** {@inheritDoc} */
 798  
     public void tableHeaderCell_()
 799  
     {
 800  0
         currentSink.tableHeaderCell_();
 801  0
     }
 802  
 
 803  
     /** {@inheritDoc} */
 804  
     public void tableRow()
 805  
     {
 806  0
         currentSink.tableRow();
 807  0
     }
 808  
 
 809  
     /** {@inheritDoc} */
 810  
     public void tableRow( SinkEventAttributes attributes )
 811  
     {
 812  0
         currentSink.tableRow( attributes );
 813  0
     }
 814  
 
 815  
     /** {@inheritDoc} */
 816  
     public void tableRow_()
 817  
     {
 818  0
         currentSink.tableRow_();
 819  0
     }
 820  
 
 821  
     /** {@inheritDoc} */
 822  
     public void tableRows( int[] justification, boolean grid )
 823  
     {
 824  0
         currentSink.tableRows( justification, grid );
 825  0
     }
 826  
 
 827  
     /** {@inheritDoc} */
 828  
     public void tableRows_()
 829  
     {
 830  0
         currentSink.tableRows_();
 831  0
     }
 832  
 
 833  
     /** {@inheritDoc} */
 834  
     public void table_()
 835  
     {
 836  0
         currentSink.table_();
 837  0
     }
 838  
 
 839  
     /** {@inheritDoc} */
 840  
     public void text( String text )
 841  
     {
 842  2
         currentSink.text( text );
 843  2
     }
 844  
 
 845  
     /** {@inheritDoc} */
 846  
     public void text( String text, SinkEventAttributes attributes )
 847  
     {
 848  0
         currentSink.text( text, attributes );
 849  0
     }
 850  
 
 851  
     /** {@inheritDoc} */
 852  
     public void title()
 853  
     {
 854  0
         currentSink.title();
 855  0
     }
 856  
 
 857  
     /** {@inheritDoc} */
 858  
     public void title( SinkEventAttributes attributes )
 859  
     {
 860  0
         currentSink.title( attributes );
 861  0
     }
 862  
 
 863  
     /** {@inheritDoc} */
 864  
     public void title_()
 865  
     {
 866  0
         currentSink.title_();
 867  0
     }
 868  
 
 869  
     /** {@inheritDoc} */
 870  
     public void unknown( String name, Object[] requiredParams, SinkEventAttributes attributes )
 871  
     {
 872  0
         currentSink.unknown( name, requiredParams, attributes );
 873  0
     }
 874  
 
 875  
     /** {@inheritDoc} */
 876  
     public void verbatim( boolean boxed )
 877  
     {
 878  0
         currentSink.verbatim( boxed );
 879  0
     }
 880  
 
 881  
     /** {@inheritDoc} */
 882  
     public void verbatim( SinkEventAttributes attributes )
 883  
     {
 884  0
         currentSink.verbatim( attributes );
 885  0
     }
 886  
 
 887  
     /** {@inheritDoc} */
 888  
     public void verbatim_()
 889  
     {
 890  0
         currentSink.verbatim_();
 891  0
     }
 892  
 
 893  
     /** {@inheritDoc} */
 894  
     public void enableLogging( Log log )
 895  
     {
 896  0
         currentSink.enableLogging( log );
 897  0
     }
 898  
 }