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 article()
75      {
76          writeln( "begin:article" );
77      }
78  
79      @Override
80      public void article_()
81      {
82          writeln( "end:article" );
83      }
84  
85      @Override
86      public void navigation()
87      {
88          writeln( "begin:navigation" );
89      }
90  
91      @Override
92      public void navigation_()
93      {
94          writeln( "end:navigation" );
95      }
96  
97      @Override
98      public void sidebar()
99      {
100         writeln( "begin:sidebar" );
101     }
102 
103     @Override
104     public void sidebar_()
105     {
106         writeln( "end:sidebar" );
107     }
108 
109     @Override
110     public void section1()
111     {
112         write( "begin:section1" );
113     }
114 
115     @Override
116     public void section1_()
117     {
118         writeln( "end:section1" );
119     }
120 
121     @Override
122     public void section2()
123     {
124         write( "begin:section2" );
125     }
126 
127     @Override
128     public void section2_()
129     {
130         writeln( "end:section2" );
131     }
132 
133     @Override
134     public void section3()
135     {
136         write( "begin:section3" );
137     }
138 
139     @Override
140     public void section3_()
141     {
142         writeln( "end:section3" );
143     }
144 
145     @Override
146     public void section4()
147     {
148         write( "begin:section4" );
149     }
150 
151     @Override
152     public void section4_()
153     {
154         writeln( "end:section4" );
155     }
156 
157     @Override
158     public void section5()
159     {
160         write( "begin:section5" );
161     }
162 
163     @Override
164     public void section5_()
165     {
166         writeln( "end:section5" );
167     }
168 
169     @Override
170     public void section6()
171     {
172         write( "begin:section6" );
173     }
174 
175     @Override
176     public void section6_()
177     {
178         writeln( "end:section6" );
179     }
180 
181     @Override
182     public void list()
183     {
184         writeln( "begin:list" );
185     }
186 
187     @Override
188     public void list_()
189     {
190         writeln( "end:list" );
191     }
192 
193     @Override
194     public void listItem()
195     {
196         write( "begin:listItem" );
197     }
198 
199     @Override
200     public void listItem_()
201     {
202         writeln( "end:listItem" );
203     }
204 
205     @Override
206     public void numberedList( int numbering )
207     {
208         writeln( "begin:numberedList, numbering: " + numbering );
209     }
210 
211     @Override
212     public void numberedList_()
213     {
214         writeln( "end:numberedList" );
215     }
216 
217     @Override
218     public void numberedListItem()
219     {
220         write( "begin:numberedListItem" );
221     }
222 
223     @Override
224     public void numberedListItem_()
225     {
226         writeln( "end:numberedListItem" );
227     }
228 
229     @Override
230     public void definitionList()
231     {
232         writeln( "begin:definitionList" );
233     }
234 
235     @Override
236     public void definitionList_()
237     {
238         writeln( "end:definitionList" );
239     }
240 
241     @Override
242     public void definitionListItem()
243     {
244         write( "begin:definitionListItem" );
245     }
246 
247     @Override
248     public void definitionListItem_()
249     {
250         writeln( "end:definitionListItem" );
251     }
252 
253     @Override
254     public void definition()
255     {
256         write( "begin:definition" );
257     }
258 
259     @Override
260     public void definition_()
261     {
262         writeln( "end:definition" );
263     }
264 
265     @Override
266     public void figure()
267     {
268         write( "begin:figure" );
269     }
270 
271     @Override
272     public void figure_()
273     {
274         writeln( "end:figure" );
275     }
276 
277     @Override
278     public void table()
279     {
280         writeln( "begin:table" );
281     }
282 
283     @Override
284     public void table_()
285     {
286         writeln( "end:table" );
287     }
288 
289     @Override
290     public void tableRows( int[] justification, boolean grid )
291     {
292         writeln( "begin:tableRows" );
293     }
294 
295     @Override
296     public void tableRows_()
297     {
298         writeln( "end:tableRows" );
299     }
300 
301     @Override
302     public void tableRow()
303     {
304         write( "begin:tableRow" );
305     }
306 
307     @Override
308     public void tableRow_()
309     {
310         writeln( "end:tableRow" );
311     }
312 
313     @Override
314     public void title()
315     {
316         write( "begin:title" );
317     }
318 
319     @Override
320     public void title_()
321     {
322         writeln( "end:title" );
323     }
324 
325     @Override
326     public void author()
327     {
328         write( "begin:author" );
329     }
330 
331     @Override
332     public void author_()
333     {
334         writeln( "end:author" );
335     }
336 
337     @Override
338     public void date()
339     {
340         write( "begin:date" );
341     }
342 
343     @Override
344     public void date_()
345     {
346         writeln( "end:date" );
347     }
348 
349     @Override
350     public void sectionTitle()
351     {
352         write( "begin:sectionTitle" );
353     }
354 
355     @Override
356     public void sectionTitle_()
357     {
358         writeln( "end:sectionTitle" );
359     }
360 
361     @Override
362     public void sectionTitle1()
363     {
364         write( "begin:sectionTitle1" );
365     }
366 
367     @Override
368     public void sectionTitle1_()
369     {
370         writeln( "end:sectionTitle1" );
371     }
372 
373     @Override
374     public void sectionTitle2()
375     {
376         write( "begin:sectionTitle2" );
377     }
378 
379     @Override
380     public void sectionTitle2_()
381     {
382         writeln( "end:sectionTitle2" );
383     }
384 
385     @Override
386     public void sectionTitle3()
387     {
388         write( "begin:sectionTitle3" );
389     }
390 
391     @Override
392     public void sectionTitle3_()
393     {
394         writeln( "end:sectionTitle3" );
395     }
396 
397     @Override
398     public void sectionTitle4()
399     {
400         write( "begin:sectionTitle4" );
401     }
402 
403     @Override
404     public void sectionTitle4_()
405     {
406         writeln( "end:sectionTitle4" );
407     }
408 
409     @Override
410     public void sectionTitle5()
411     {
412         write( "begin:sectionTitle5" );
413     }
414 
415     @Override
416     public void sectionTitle5_()
417     {
418         writeln( "end:sectionTitle5" );
419     }
420 
421     @Override
422     public void sectionTitle6()
423     {
424         write( "begin:sectionTitle6" );
425     }
426 
427     @Override
428     public void sectionTitle6_()
429     {
430         writeln( "end:sectionTitle6" );
431     }
432 
433     @Override
434     public void header()
435     {
436         write( "begin:header" );
437     }
438 
439     @Override
440     public void header_()
441     {
442         writeln( "end:header" );
443     }
444 
445     @Override
446     public void content()
447     {
448         write( "begin:content" );
449     }
450 
451     @Override
452     public void content_()
453     {
454         writeln( "end:content" );
455     }
456 
457     @Override
458     public void footer()
459     {
460         write( "begin:footer" );
461     }
462 
463     @Override
464     public void footer_()
465     {
466         writeln( "end:footer" );
467     }
468 
469     @Override
470     public void paragraph()
471     {
472         write( "begin:paragraph" );
473     }
474 
475     @Override
476     public void paragraph_()
477     {
478         writeln( "end:paragraph" );
479     }
480 
481     @Override
482     public void data( String value )
483     {
484         write( "begin:data, value: " + value );
485     }
486 
487     @Override
488     public void data_()
489     {
490         writeln( "end:data" );
491     }
492 
493     @Override
494     public void time( String datetime )
495     {
496         write( "begin:time, datetime: " + datetime );
497     }
498 
499     @Override
500     public void time_()
501     {
502         writeln( "end:time" );
503     }
504 
505     @Override
506     public void address()
507     {
508         write( "begin:address" );
509     }
510 
511     @Override
512     public void address_()
513     {
514         writeln( "end:address" );
515     }
516 
517     @Override
518     public void blockquote()
519     {
520         write( "begin:blockquote" );
521     }
522 
523     @Override
524     public void blockquote_()
525     {
526         writeln( "end:blockquote" );
527     }
528 
529     @Override
530     public void division()
531     {
532         write( "begin:division" );
533     }
534 
535     @Override
536     public void division_()
537     {
538         writeln( "end:division" );
539     }
540 
541     @Override
542     public void verbatim( boolean boxed )
543     {
544         write( "begin:verbatim, boxed: " + boxed );
545     }
546 
547     @Override
548     public void verbatim_()
549     {
550         writeln( "end:verbatim" );
551     }
552 
553     @Override
554     public void definedTerm()
555     {
556         write( "begin:definedTerm" );
557     }
558 
559     @Override
560     public void definedTerm_()
561     {
562         writeln( "end:definedTerm" );
563     }
564 
565     @Override
566     public void figureCaption()
567     {
568         write( "begin:figureCaption" );
569     }
570 
571     @Override
572     public void figureCaption_()
573     {
574         writeln( "end:figureCaption" );
575     }
576 
577     @Override
578     public void tableCell()
579     {
580         write( "begin:tableCell" );
581     }
582 
583     @Override
584     public void tableCell( String width )
585     {
586         write( "begin:tableCell, width: " + width );
587     }
588 
589     @Override
590     public void tableCell_()
591     {
592         writeln( "end:tableCell" );
593     }
594 
595     @Override
596     public void tableHeaderCell()
597     {
598         write( "begin:tableHeaderCell" );
599     }
600 
601     @Override
602     public void tableHeaderCell( String width )
603     {
604         write( "begin:tableHeaderCell, width: " + width );
605     }
606 
607     @Override
608     public void tableHeaderCell_()
609     {
610         writeln( "end:tableHeaderCell" );
611     }
612 
613     @Override
614     public void tableCaption()
615     {
616         write( "begin:tableCaption" );
617     }
618 
619     @Override
620     public void tableCaption_()
621     {
622         writeln( "end:tableCaption" );
623     }
624 
625     @Override
626     public void figureGraphics( String name )
627     {
628         write( "figureGraphics, name: " + name );
629     }
630 
631     @Override
632     public void horizontalRule()
633     {
634         write( "horizontalRule" );
635     }
636 
637     @Override
638     public void pageBreak()
639     {
640         write( "pageBreak" );
641     }
642 
643     @Override
644     public void anchor( String name )
645     {
646         write( "begin:anchor, name: " + name  );
647     }
648 
649     @Override
650     public void anchor_()
651     {
652         writeln( "end:anchor" );
653     }
654 
655     @Override
656     public void link( String name )
657     {
658         write( "begin:link, name: " + name  );
659     }
660 
661     @Override
662     public void link_()
663     {
664         writeln( "end:link" );
665     }
666 
667     @Override
668     public void inline()
669     {
670         write( "begin:inline" );
671     }
672 
673     @Override
674     public void inline_()
675     {
676         writeln( "end:inline" );
677     }
678 
679     @Override
680     public void italic()
681     {
682         write( "begin:italic" );
683     }
684 
685     @Override
686     public void italic_()
687     {
688         writeln( "end:italic" );
689     }
690 
691     @Override
692     public void bold()
693     {
694         write( "begin:bold" );
695     }
696 
697     @Override
698     public void bold_()
699     {
700         writeln( "end:bold" );
701     }
702 
703     @Override
704     public void monospaced()
705     {
706         write( "begin:monospaced" );
707     }
708 
709     @Override
710     public void monospaced_()
711     {
712         writeln( "end:monospaced" );
713     }
714 
715     @Override
716     public void lineBreak()
717     {
718         write( "lineBreak" );
719     }
720 
721     @Override
722     public void lineBreakOpportunity()
723     {
724         write( "lineBreakOpportunity" );
725     }
726 
727     @Override
728     public void nonBreakingSpace()
729     {
730         write( "nonBreakingSpace" );
731     }
732 
733     @Override
734     public void text( String text )
735     {
736         write( "text: " + text );
737     }
738 
739     @Override
740     public void rawText( String text )
741     {
742         write( "rawText: " + text );
743     }
744 
745     @Override
746     public void comment( String comment )
747     {
748         write( "comment: " + comment );
749     }
750 
751     @Override
752     public void flush()
753     {
754         try
755         {
756             out.flush();
757         }
758         catch ( IOException e )
759         {
760             getLog().warn( "Could not flush sink: " + e.getMessage(), e );
761         }
762     }
763 
764     @Override
765     public void close()
766     {
767         try
768         {
769             out.close();
770         }
771         catch ( IOException e )
772         {
773             getLog().warn( "Could not close sink: " + e.getMessage(), e );
774         }
775     }
776 
777     @Override
778     public void head( SinkEventAttributes attributes )
779     {
780         head();
781     }
782 
783     @Override
784     public void title( SinkEventAttributes attributes )
785     {
786         title();
787     }
788 
789     @Override
790     public void author( SinkEventAttributes attributes )
791     {
792         author();
793     }
794 
795     @Override
796     public void date( SinkEventAttributes attributes )
797     {
798         date();
799     }
800 
801     @Override
802     public void body( SinkEventAttributes attributes )
803     {
804         body();
805     }
806 
807     @Override
808     public void article( SinkEventAttributes attributes )
809     {
810         article();
811     }
812 
813     @Override
814     public void navigation( SinkEventAttributes attributes )
815     {
816         navigation();
817     }
818 
819     @Override
820     public void sidebar( SinkEventAttributes attributes )
821     {
822         sidebar();
823     }
824 
825     @Override
826     public void section( int level, SinkEventAttributes attributes )
827     {
828         write( "begin:section" + level );
829     }
830 
831     @Override
832     public void section_( int level )
833     {
834         writeln( "end:section" + level );
835     }
836 
837     @Override
838     public void sectionTitle( int level, SinkEventAttributes attributes )
839     {
840         write( "begin:sectionTitle" + level );
841     }
842 
843     @Override
844     public void sectionTitle_( int level )
845     {
846         writeln( "end:sectionTitle" + level );
847     }
848 
849     @Override
850     public void header( SinkEventAttributes attributes )
851     {
852         header();
853     }
854 
855     @Override
856     public void content( SinkEventAttributes attributes )
857     {
858         content();
859     }
860 
861     @Override
862     public void footer( SinkEventAttributes attributes )
863     {
864         footer();
865     }
866 
867     @Override
868     public void list( SinkEventAttributes attributes )
869     {
870         list();
871     }
872 
873     @Override
874     public void listItem( SinkEventAttributes attributes )
875     {
876         listItem();
877     }
878 
879     @Override
880     public void numberedList( int numbering, SinkEventAttributes attributes )
881     {
882         numberedList( numbering );
883     }
884 
885     @Override
886     public void numberedListItem( SinkEventAttributes attributes )
887     {
888         numberedListItem();
889     }
890 
891     @Override
892     public void definitionList( SinkEventAttributes attributes )
893     {
894         definitionList();
895     }
896 
897     @Override
898     public void definitionListItem( SinkEventAttributes attributes )
899     {
900         definitionListItem();
901     }
902 
903     @Override
904     public void definition( SinkEventAttributes attributes )
905     {
906         definition();
907     }
908 
909     @Override
910     public void definedTerm( SinkEventAttributes attributes )
911     {
912         definedTerm();
913     }
914 
915     @Override
916     public void figure( SinkEventAttributes attributes )
917     {
918         write( "begin:figure" + SinkUtils.getAttributeString( attributes ) );
919     }
920 
921     @Override
922     public void figureCaption( SinkEventAttributes attributes )
923     {
924         figureCaption();
925     }
926 
927     @Override
928     public void figureGraphics( String src, SinkEventAttributes attributes )
929     {
930         figureGraphics( src );
931     }
932 
933     @Override
934     public void table( SinkEventAttributes attributes )
935     {
936         table();
937     }
938 
939     @Override
940     public void tableRow( SinkEventAttributes attributes )
941     {
942         tableRow();
943     }
944 
945     @Override
946     public void tableCell( SinkEventAttributes attributes )
947     {
948         tableCell();
949     }
950 
951     @Override
952     public void tableHeaderCell( SinkEventAttributes attributes )
953     {
954         tableHeaderCell();
955     }
956 
957     @Override
958     public void tableCaption( SinkEventAttributes attributes )
959     {
960         tableCaption();
961     }
962 
963     @Override
964     public void paragraph( SinkEventAttributes attributes )
965     {
966         paragraph();
967     }
968 
969     @Override
970     public void data( String value, SinkEventAttributes attributes )
971     {
972         data( value );
973     }
974 
975     @Override
976     public void time( String datetime, SinkEventAttributes attributes )
977     {
978         time( datetime );
979     }
980 
981     @Override
982     public void address( SinkEventAttributes attributes )
983     {
984         address();
985     }
986 
987     @Override
988     public void blockquote( SinkEventAttributes attributes )
989     {
990         blockquote();
991     }
992 
993     @Override
994     public void division( SinkEventAttributes attributes )
995     {
996         division();
997     }
998 
999     @Override
1000     public void verbatim( SinkEventAttributes attributes )
1001     {
1002         boolean boxed = false;
1003 
1004         if ( attributes != null && attributes.isDefined( SinkEventAttributes.DECORATION ) )
1005         {
1006             boxed = "boxed".equals(
1007                 attributes.getAttribute( SinkEventAttributes.DECORATION ).toString() );
1008         }
1009 
1010         verbatim( boxed );
1011     }
1012 
1013     @Override
1014     public void horizontalRule( SinkEventAttributes attributes )
1015     {
1016         horizontalRule();
1017     }
1018 
1019     @Override
1020     public void anchor( String name, SinkEventAttributes attributes )
1021     {
1022         anchor( name );
1023     }
1024 
1025     @Override
1026     public void link( String name, SinkEventAttributes attributes )
1027     {
1028         link( name );
1029     }
1030 
1031     @Override
1032     public void inline( SinkEventAttributes attributes )
1033     {
1034         inline();
1035     }
1036 
1037     @Override
1038     public void lineBreak( SinkEventAttributes attributes )
1039     {
1040         lineBreak();
1041     }
1042 
1043     @Override
1044     public void lineBreakOpportunity( SinkEventAttributes attributes )
1045     {
1046         lineBreakOpportunity();
1047     }
1048 
1049     @Override
1050     public void text( String text, SinkEventAttributes attributes )
1051     {
1052         text( text );
1053     }
1054 
1055     @Override
1056     public void unknown( String name, Object[] requiredParams, SinkEventAttributes attributes )
1057     {
1058         write( "unknown: " + name );
1059     }
1060 
1061     /**
1062      * Writes the given string + EOL.
1063      *
1064      * @param text The text to write.
1065      */
1066     private void write( String text )
1067     {
1068         try
1069         {
1070             out.write( text + EOL );
1071         }
1072         catch ( IOException e )
1073         {
1074             getLog().warn( "Could not write to sink: " + e.getMessage(), e );
1075         }
1076     }
1077 
1078     /**
1079      * Writes the given string + two EOLs.
1080      *
1081      * @param text The text to write.
1082      */
1083     private void writeln( String text )
1084     {
1085         write( text );
1086         write( EOL );
1087     }
1088 }