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