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