1. Project Clover database Tue Dec 20 2016 21:24:09 CET
  2. Package org.xwiki.rendering.listener.chaining

File EmptyBlockChainingListener.java

 

Coverage histogram

../../../../../img/srcFileCovDistChart10.png
0% of files have more coverage

Code metrics

2
123
54
1
469
349
56
0.46
2.28
54
1.04

Classes

Class Line # Actions
EmptyBlockChainingListener 39 123 0% 56 0
1.0100%
 

Contributing tests

This file is covered by 758 tests. .

Source view

1    /*
2    * See the NOTICE file distributed with this work for additional
3    * information regarding copyright ownership.
4    *
5    * This is free software; you can redistribute it and/or modify it
6    * under the terms of the GNU Lesser General Public License as
7    * published by the Free Software Foundation; either version 2.1 of
8    * the License, or (at your option) any later version.
9    *
10    * This software is distributed in the hope that it will be useful,
11    * but WITHOUT ANY WARRANTY; without even the implied warranty of
12    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13    * Lesser General Public License for more details.
14    *
15    * You should have received a copy of the GNU Lesser General Public
16    * License along with this software; if not, write to the Free
17    * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
18    * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
19    */
20    package org.xwiki.rendering.listener.chaining;
21   
22    import java.util.ArrayDeque;
23    import java.util.Deque;
24    import java.util.Map;
25   
26    import org.xwiki.rendering.listener.Format;
27    import org.xwiki.rendering.listener.HeaderLevel;
28    import org.xwiki.rendering.listener.ListType;
29    import org.xwiki.rendering.listener.MetaData;
30    import org.xwiki.rendering.listener.reference.ResourceReference;
31    import org.xwiki.rendering.syntax.Syntax;
32   
33    /**
34    * Allow knowing if a container block (a block which can have children) has children or not.
35    *
36    * @version $Id: b419899ce14d235955a8d3ea5d271885755b5f8d $
37    * @since 2.0M3
38    */
 
39    public class EmptyBlockChainingListener extends AbstractChainingListener
40    {
41    private Deque<Boolean> containerBlockStates = new ArrayDeque<Boolean>();
42   
 
43  106887 toggle public EmptyBlockChainingListener(ListenerChain listenerChain)
44    {
45  106886 setListenerChain(listenerChain);
46    }
47   
 
48  975 toggle public boolean isCurrentContainerBlockEmpty()
49    {
50  975 return this.containerBlockStates.peek();
51    }
52   
53    // Events
54   
55    /**
56    * {@inheritDoc}
57    *
58    * @since 3.0M2
59    */
 
60  27945 toggle @Override
61    public void beginDocument(MetaData metadata)
62    {
63  27944 startContainerBlock();
64  27947 super.beginDocument(metadata);
65    }
66   
 
67  120 toggle @Override
68    public void beginDefinitionDescription()
69    {
70  120 markNotEmpty();
71  120 startContainerBlock();
72  120 super.beginDefinitionDescription();
73    }
74   
75    /**
76    * {@inheritDoc}
77    *
78    * @since 2.0RC1
79    */
 
80  55 toggle @Override
81    public void beginDefinitionList(Map<String, String> parameters)
82    {
83  55 markNotEmpty();
84  55 startContainerBlock();
85  55 super.beginDefinitionList(parameters);
86    }
87   
 
88  115 toggle @Override
89    public void beginDefinitionTerm()
90    {
91  115 markNotEmpty();
92  115 startContainerBlock();
93  115 super.beginDefinitionTerm();
94    }
95   
 
96  1565 toggle @Override
97    public void beginGroup(Map<String, String> parameters)
98    {
99  1565 markNotEmpty();
100  1565 startContainerBlock();
101  1565 super.beginGroup(parameters);
102    }
103   
 
104  5048 toggle @Override
105    public void beginFormat(Format format, Map<String, String> parameters)
106    {
107  5048 markNotEmpty();
108  5048 startContainerBlock();
109  5048 super.beginFormat(format, parameters);
110    }
111   
112    /**
113    * {@inheritDoc}
114    *
115    * @since 2.5RC1
116    */
 
117  973 toggle @Override
118    public void beginLink(ResourceReference reference, boolean freestanding, Map<String, String> parameters)
119    {
120  973 markNotEmpty();
121  973 startContainerBlock();
122  973 super.beginLink(reference, freestanding, parameters);
123    }
124   
 
125  1508 toggle @Override
126    public void beginList(ListType type, Map<String, String> parameters)
127    {
128  1508 markNotEmpty();
129  1508 startContainerBlock();
130  1508 super.beginList(type, parameters);
131    }
132   
 
133  4616 toggle @Override
134    public void beginListItem()
135    {
136  4616 markNotEmpty();
137  4616 startContainerBlock();
138  4616 super.beginListItem();
139    }
140   
 
141  17253 toggle @Override
142    public void beginMacroMarker(String name, Map<String, String> parameters, String content, boolean isInline)
143    {
144  17253 markNotEmpty();
145  17253 startContainerBlock();
146  17253 super.beginMacroMarker(name, parameters, content, isInline);
147    }
148   
 
149  7188 toggle @Override
150    public void beginParagraph(Map<String, String> parameters)
151    {
152  7189 markNotEmpty();
153  7189 startContainerBlock();
154  7189 super.beginParagraph(parameters);
155    }
156   
 
157  19 toggle @Override
158    public void beginQuotation(Map<String, String> parameters)
159    {
160  19 markNotEmpty();
161  19 startContainerBlock();
162  19 super.beginQuotation(parameters);
163    }
164   
 
165  28 toggle @Override
166    public void beginQuotationLine()
167    {
168  28 markNotEmpty();
169  28 startContainerBlock();
170  28 super.beginQuotationLine();
171    }
172   
 
173  605 toggle @Override
174    public void beginHeader(HeaderLevel level, String id, Map<String, String> parameters)
175    {
176  605 markNotEmpty();
177  605 startContainerBlock();
178  605 super.beginHeader(level, id, parameters);
179    }
180   
 
181  78 toggle @Override
182    public void beginTable(Map<String, String> parameters)
183    {
184  78 markNotEmpty();
185  78 startContainerBlock();
186  78 super.beginTable(parameters);
187    }
188   
 
189  199 toggle @Override
190    public void beginTableRow(Map<String, String> parameters)
191    {
192  199 markNotEmpty();
193  199 startContainerBlock();
194  199 super.beginTableRow(parameters);
195    }
196   
 
197  336 toggle @Override
198    public void beginTableCell(Map<String, String> parameters)
199    {
200  336 markNotEmpty();
201  336 startContainerBlock();
202  336 super.beginTableCell(parameters);
203    }
204   
 
205  170 toggle @Override
206    public void beginTableHeadCell(Map<String, String> parameters)
207    {
208  170 markNotEmpty();
209  170 startContainerBlock();
210  170 super.beginTableHeadCell(parameters);
211    }
212   
 
213  710 toggle @Override
214    public void beginSection(Map<String, String> parameters)
215    {
216  710 markNotEmpty();
217  710 startContainerBlock();
218  710 super.beginSection(parameters);
219    }
220   
221    /**
222    * {@inheritDoc}
223    *
224    * @since 3.0M2
225    */
 
226  27944 toggle @Override
227    public void endDocument(MetaData metadata)
228    {
229  27944 super.endDocument(metadata);
230  27948 stopContainerBlock();
231    }
232   
 
233  120 toggle @Override
234    public void endDefinitionDescription()
235    {
236  120 super.endDefinitionDescription();
237  120 stopContainerBlock();
238    }
239   
240    /**
241    * {@inheritDoc}
242    *
243    * @since 2.0RC1
244    */
 
245  55 toggle @Override
246    public void endDefinitionList(Map<String, String> parameters)
247    {
248  55 super.endDefinitionList(parameters);
249  55 stopContainerBlock();
250    }
251   
 
252  115 toggle @Override
253    public void endDefinitionTerm()
254    {
255  115 super.endDefinitionTerm();
256  115 stopContainerBlock();
257    }
258   
 
259  5048 toggle @Override
260    public void endFormat(Format format, Map<String, String> parameters)
261    {
262  5048 super.endFormat(format, parameters);
263  5048 stopContainerBlock();
264    }
265   
 
266  1565 toggle @Override
267    public void endGroup(Map<String, String> parameters)
268    {
269  1565 super.endGroup(parameters);
270  1565 stopContainerBlock();
271    }
272   
273    /**
274    * {@inheritDoc}
275    *
276    * @since 2.5RC1
277    */
 
278  973 toggle @Override
279    public void endLink(ResourceReference reference, boolean freestanding, Map<String, String> parameters)
280    {
281  973 super.endLink(reference, freestanding, parameters);
282  973 stopContainerBlock();
283    }
284   
 
285  1508 toggle @Override
286    public void endList(ListType type, Map<String, String> parameters)
287    {
288  1508 super.endList(type, parameters);
289  1508 stopContainerBlock();
290    }
291   
 
292  4616 toggle @Override
293    public void endListItem()
294    {
295  4616 super.endListItem();
296  4616 stopContainerBlock();
297    }
298   
 
299  17252 toggle @Override
300    public void endMacroMarker(String name, Map<String, String> parameters, String content, boolean isInline)
301    {
302  17253 super.endMacroMarker(name, parameters, content, isInline);
303  17253 stopContainerBlock();
304    }
305   
 
306  7189 toggle @Override
307    public void endParagraph(Map<String, String> parameters)
308    {
309  7189 super.endParagraph(parameters);
310  7189 stopContainerBlock();
311    }
312   
 
313  19 toggle @Override
314    public void endQuotation(Map<String, String> parameters)
315    {
316  19 super.endQuotation(parameters);
317  19 stopContainerBlock();
318    }
319   
 
320  28 toggle @Override
321    public void endQuotationLine()
322    {
323  28 super.endQuotationLine();
324  28 stopContainerBlock();
325    }
326   
 
327  710 toggle @Override
328    public void endSection(Map<String, String> parameters)
329    {
330  710 super.endSection(parameters);
331  710 stopContainerBlock();
332    }
333   
 
334  605 toggle @Override
335    public void endHeader(HeaderLevel level, String id, Map<String, String> parameters)
336    {
337  605 super.endHeader(level, id, parameters);
338  605 stopContainerBlock();
339    }
340   
 
341  78 toggle @Override
342    public void endTable(Map<String, String> parameters)
343    {
344  78 super.endTable(parameters);
345  78 stopContainerBlock();
346    }
347   
 
348  336 toggle @Override
349    public void endTableCell(Map<String, String> parameters)
350    {
351  336 super.endTableCell(parameters);
352  336 stopContainerBlock();
353    }
354   
 
355  170 toggle @Override
356    public void endTableHeadCell(Map<String, String> parameters)
357    {
358  170 super.endTableHeadCell(parameters);
359  170 stopContainerBlock();
360    }
361   
 
362  199 toggle @Override
363    public void endTableRow(Map<String, String> parameters)
364    {
365  199 super.endTableRow(parameters);
366  199 stopContainerBlock();
367    }
368   
 
369  6715 toggle @Override
370    public void onRawText(String text, Syntax syntax)
371    {
372  6715 super.onRawText(text, syntax);
373  6715 markNotEmpty();
374    }
375   
 
376  220 toggle @Override
377    public void onEmptyLines(int count)
378    {
379  220 super.onEmptyLines(count);
380  220 markNotEmpty();
381    }
382   
 
383  16 toggle @Override
384    public void onHorizontalLine(Map<String, String> parameters)
385    {
386  16 super.onHorizontalLine(parameters);
387  16 markNotEmpty();
388    }
389   
 
390  3 toggle @Override
391    public void onId(String name)
392    {
393  3 super.onId(name);
394  3 markNotEmpty();
395    }
396   
397    /**
398    * {@inheritDoc}
399    *
400    * @since 2.5RC1
401    */
 
402  535 toggle @Override
403    public void onImage(ResourceReference reference, boolean freestanding, Map<String, String> parameters)
404    {
405  535 super.onImage(reference, freestanding, parameters);
406  535 markNotEmpty();
407    }
408   
 
409  9448 toggle @Override
410    public void onNewLine()
411    {
412  9448 super.onNewLine();
413  9448 markNotEmpty();
414    }
415   
 
416  436987 toggle @Override
417    public void onSpace()
418    {
419  436989 super.onSpace();
420  436988 markNotEmpty();
421    }
422   
 
423  363940 toggle @Override
424    public void onSpecialSymbol(char symbol)
425    {
426  363939 super.onSpecialSymbol(symbol);
427  363937 markNotEmpty();
428    }
429   
 
430  94 toggle @Override
431    public void onVerbatim(String content, boolean inline, Map<String, String> parameters)
432    {
433  94 super.onVerbatim(content, inline, parameters);
434  94 markNotEmpty();
435    }
436   
 
437  466191 toggle @Override
438    public void onWord(String word)
439    {
440  466194 super.onWord(word);
441  466193 markNotEmpty();
442    }
443   
 
444  413 toggle @Override
445    public void onMacro(String id, Map<String, String> parameters, String content, boolean inline)
446    {
447  413 super.onMacro(id, parameters, content, inline);
448  413 markNotEmpty();
449    }
450   
 
451  68533 toggle private void startContainerBlock()
452    {
453  68532 this.containerBlockStates.push(Boolean.TRUE);
454    }
455   
 
456  68529 toggle private void stopContainerBlock()
457    {
458  68532 this.containerBlockStates.pop();
459    }
460   
 
461  1325127 toggle private void markNotEmpty()
462    {
463  1325135 if (!this.containerBlockStates.isEmpty() && this.containerBlockStates.peek()) {
464  66088 this.containerBlockStates.pop();
465  66087 this.containerBlockStates.push(Boolean.FALSE);
466    }
467    }
468   
469    }