You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by ju...@apache.org on 2022/02/20 21:25:20 UTC

[jspwiki] 01/06: Refactored the org.apache.wiki.htmltowiki package,

This is an automated email from the ASF dual-hosted git repository.

juanpablo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jspwiki.git

commit 63c82a09a8bae091b8fd4b248181689c4bba2b25
Author: Juan Pablo Santos Rodríguez <ju...@gmail.com>
AuthorDate: Sun Feb 20 22:16:25 2022 +0100

    Refactored the org.apache.wiki.htmltowiki package,
    
    so it doesn't use Stack but instead a Deque. May split the package on the main module to its own module later on.
---
 .../org/apache/wiki/htmltowiki/SyntaxDecorator.java    |  4 ++--
 .../wiki/htmltowiki/XHtmlElementToWikiTranslator.java  | 18 +++++++++---------
 .../org/apache/wiki/htmltowiki/syntax/BrDecorator.java |  6 +++---
 .../apache/wiki/htmltowiki/syntax/CodeDecorator.java   | 10 +++++-----
 .../org/apache/wiki/htmltowiki/syntax/LiDecorator.java |  8 ++++----
 .../org/apache/wiki/htmltowiki/syntax/OlDecorator.java | 10 +++++-----
 .../wiki/htmltowiki/syntax/PlainTextBoldDecorator.java |  5 +----
 .../wiki/htmltowiki/syntax/PlainTextCssDecorator.java  |  5 +----
 .../syntax/PlainTextCssSpecialDecorator.java           |  5 +----
 .../wiki/htmltowiki/syntax/PlainTextDecorator.java     |  5 +----
 .../htmltowiki/syntax/PlainTextItalicDecorator.java    |  5 +----
 .../htmltowiki/syntax/PlainTextMonospaceDecorator.java | 10 +++++-----
 .../org/apache/wiki/htmltowiki/syntax/TdDecorator.java |  6 +++---
 .../wiki/htmltowiki/syntax/TextElementDecorator.java   |  6 +++---
 .../org/apache/wiki/htmltowiki/syntax/ThDecorator.java |  6 +++---
 .../org/apache/wiki/htmltowiki/syntax/UlDecorator.java | 10 +++++-----
 .../wiki/htmltowiki/syntax/WikiSyntaxDecorator.java    |  4 ++--
 .../htmltowiki/syntax/jspwiki/JSPWikiBrDecorator.java  |  4 ++--
 .../syntax/jspwiki/JSPWikiCodeDecorator.java           |  4 ++--
 .../htmltowiki/syntax/jspwiki/JSPWikiLiDecorator.java  | 14 ++++++++++----
 .../htmltowiki/syntax/jspwiki/JSPWikiOlDecorator.java  |  4 ++--
 .../syntax/jspwiki/JSPWikiPlainTextBoldDecorator.java  |  5 ++---
 .../syntax/jspwiki/JSPWikiPlainTextCssDecorator.java   |  5 ++---
 .../jspwiki/JSPWikiPlainTextCssSpecialDecorator.java   |  5 ++---
 .../jspwiki/JSPWikiPlainTextItalicDecorator.java       |  5 ++---
 .../jspwiki/JSPWikiPlainTextMonospaceDecorator.java    |  4 ++--
 .../syntax/jspwiki/JSPWikiSyntaxDecorator.java         | 16 ++++++++--------
 .../htmltowiki/syntax/jspwiki/JSPWikiTdDecorator.java  |  4 ++--
 .../htmltowiki/syntax/jspwiki/JSPWikiThDecorator.java  |  4 ++--
 .../htmltowiki/syntax/jspwiki/JSPWikiUlDecorator.java  |  4 ++--
 .../syntax/markdown/MarkdownBrDecorator.java           |  4 ++--
 .../syntax/markdown/MarkdownCodeDecorator.java         |  4 ++--
 .../syntax/markdown/MarkdownLiDecorator.java           |  6 +++---
 .../syntax/markdown/MarkdownOlDecorator.java           |  4 ++--
 .../markdown/MarkdownPlainTextBoldDecorator.java       |  5 ++---
 .../syntax/markdown/MarkdownPlainTextCssDecorator.java |  5 ++---
 .../markdown/MarkdownPlainTextCssSpecialDecorator.java |  5 ++---
 .../markdown/MarkdownPlainTextItalicDecorator.java     |  5 ++---
 .../markdown/MarkdownPlainTextMonospaceDecorator.java  |  4 ++--
 .../syntax/markdown/MarkdownSyntaxDecorator.java       | 16 ++++++++--------
 .../syntax/markdown/MarkdownTdDecorator.java           |  4 ++--
 .../syntax/markdown/MarkdownThDecorator.java           |  4 ++--
 .../syntax/markdown/MarkdownUlDecorator.java           |  4 ++--
 43 files changed, 127 insertions(+), 144 deletions(-)

diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/SyntaxDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/SyntaxDecorator.java
index 1fc4a19..150336b 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/SyntaxDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/SyntaxDecorator.java
@@ -23,8 +23,8 @@ import org.jdom2.JDOMException;
 import org.jdom2.Text;
 
 import java.io.PrintWriter;
+import java.util.Deque;
 import java.util.Map;
-import java.util.Stack;
 
 
 /**
@@ -42,7 +42,7 @@ public interface SyntaxDecorator {
      * @param config xhtml to wiki configuration object.
      * @param chain chain (in the chain of responsabilities pattern) that is expected to be called by the different xhtml decorations.
      */
-    void init( PrintWriter out, Stack< String > liStack, Stack< String > preStack, WhitespaceTrimWriter outTrimmer, XHtmlToWikiConfig config, XHtmlElementToWikiTranslator chain );
+    void init( PrintWriter out, Deque< String > liStack, Deque< String > preStack, WhitespaceTrimWriter outTrimmer, XHtmlToWikiConfig config, XHtmlElementToWikiTranslator chain );
 
     /**
      * Decorates an {@code a} element.
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/XHtmlElementToWikiTranslator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/XHtmlElementToWikiTranslator.java
index bef1843..7229fd5 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/XHtmlElementToWikiTranslator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/XHtmlElementToWikiTranslator.java
@@ -32,10 +32,11 @@ import org.jdom2.Text;
 import org.jdom2.xpath.XPathFactory;
 
 import java.io.PrintWriter;
+import java.util.ArrayDeque;
 import java.util.Arrays;
+import java.util.Deque;
 import java.util.LinkedHashMap;
 import java.util.Map;
-import java.util.Stack;
 
 
 /**
@@ -73,8 +74,8 @@ public class XHtmlElementToWikiTranslator {
         this.config = config;
         syntax = getSyntaxDecorator();
         final PrintWriter out = new PrintWriter( outTrimmer );
-        final Stack< String > liStack = new Stack<>();
-        final Stack< String > preStack = new PreStack();
+        final Deque< String > liStack = new ArrayDeque<>();
+        final Deque< String > preStack = new PreDeque();
 
         syntax.init( out, liStack, preStack, outTrimmer, config, this );
         translate( base );
@@ -358,18 +359,17 @@ public class XHtmlElementToWikiTranslator {
         return dto;
     }
 
-    private class PreStack extends Stack< String > {
+    private class PreDeque extends ArrayDeque< String > {
 
         @Override
-        public String push( final String item ) {
-            final String push = super.push( item );
+        public void addFirst( final String item ) {
+            super.addFirst( item );
             outTrimmer.setWhitespaceTrimMode( isEmpty() );
-            return push;
         }
 
         @Override
-        public synchronized String pop() {
-            final String pop = super.pop();
+        public String removeFirst() {
+            final String pop = super.removeFirst();
             outTrimmer.setWhitespaceTrimMode( isEmpty() );
             return pop;
         }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/BrDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/BrDecorator.java
index 4a4a011..dd851b0 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/BrDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/BrDecorator.java
@@ -23,7 +23,7 @@ import org.jdom2.Element;
 import org.jdom2.JDOMException;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
 
 
 /**
@@ -32,10 +32,10 @@ import java.util.Stack;
 public abstract class BrDecorator {
 
     final protected PrintWriter out;
-    final protected Stack< String > preStack;
+    final protected Deque< String > preStack;
     final protected XHtmlElementToWikiTranslator chain;
 
-    protected BrDecorator( final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
+    protected BrDecorator( final PrintWriter out, final Deque< String > preStack, final XHtmlElementToWikiTranslator chain ) {
         this.out = out;
         this.preStack = preStack;
         this.chain = chain;
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/CodeDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/CodeDecorator.java
index 1afb969..a17af6a 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/CodeDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/CodeDecorator.java
@@ -23,7 +23,7 @@ import org.jdom2.Element;
 import org.jdom2.JDOMException;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
 
 
 /**
@@ -32,10 +32,10 @@ import java.util.Stack;
 public abstract class CodeDecorator {
 
     final protected PrintWriter out;
-    final protected Stack< String > preStack;
+    final protected Deque< String > preStack;
     final protected XHtmlElementToWikiTranslator chain;
 
-    protected CodeDecorator( final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
+    protected CodeDecorator( final PrintWriter out, final Deque< String > preStack, final XHtmlElementToWikiTranslator chain ) {
         this.out = out;
         this.preStack = preStack;
         this.chain = chain;
@@ -48,9 +48,9 @@ public abstract class CodeDecorator {
      */
     public void decorate( final Element e ) throws JDOMException {
         out.print( markupCodeOpen() );
-        preStack.push( markupCodeOpen() );
+        preStack.addFirst( markupCodeOpen() );
         chain.translate( e );
-        preStack.pop();
+        preStack.removeFirst();
         out.print( markupCodeClose() );
         // NOTE: don't print a newline after the closing brackets because if the Text is inside
         // a table or list, it would break it if there was a subsequent row or list item.
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/LiDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/LiDecorator.java
index 6b1f8bd..23f49ce 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/LiDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/LiDecorator.java
@@ -23,7 +23,7 @@ import org.jdom2.Element;
 import org.jdom2.JDOMException;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
 
 
 /**
@@ -32,10 +32,10 @@ import java.util.Stack;
 public abstract class LiDecorator {
 
     final protected PrintWriter out;
-    final protected Stack< String > liStack;
+    final protected Deque< String > liStack;
     final protected XHtmlElementToWikiTranslator chain;
 
-    protected LiDecorator( final PrintWriter out, final Stack< String > liStack, final XHtmlElementToWikiTranslator chain ) {
+    protected LiDecorator( final PrintWriter out, final Deque< String > liStack, final XHtmlElementToWikiTranslator chain ) {
         this.out = out;
         this.liStack = liStack;
         this.chain = chain;
@@ -67,6 +67,6 @@ public abstract class LiDecorator {
      *
      * @return Wiki markup for a {@code LI} element.
      */
-    protected abstract String markupLi( Stack< String > liStack );
+    protected abstract String markupLi( Deque< String > liStack );
 
 }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/OlDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/OlDecorator.java
index 2310271..bf6ab79 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/OlDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/OlDecorator.java
@@ -23,7 +23,7 @@ import org.jdom2.Element;
 import org.jdom2.JDOMException;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
 
 
 /**
@@ -32,10 +32,10 @@ import java.util.Stack;
 public abstract class OlDecorator {
 
     final protected PrintWriter out;
-    final protected Stack< String > liStack;
+    final protected Deque< String > liStack;
     final protected XHtmlElementToWikiTranslator chain;
 
-    protected OlDecorator( final PrintWriter out, final Stack< String > liStack, final XHtmlElementToWikiTranslator chain ) {
+    protected OlDecorator( final PrintWriter out, final Deque< String > liStack, final XHtmlElementToWikiTranslator chain ) {
         this.out = out;
         this.liStack = liStack;
         this.chain = chain;
@@ -48,9 +48,9 @@ public abstract class OlDecorator {
      */
     public void decorate( final Element e ) throws JDOMException {
         out.println();
-        liStack.push( markupOl() );
+        liStack.addFirst( markupOl() );
         chain.translate( e );
-        liStack.pop();
+        liStack.removeFirst();
     }
 
     /**
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/PlainTextBoldDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/PlainTextBoldDecorator.java
index 609b835..b51cdc3 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/PlainTextBoldDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/PlainTextBoldDecorator.java
@@ -23,7 +23,6 @@ import org.jdom2.Element;
 import org.jdom2.JDOMException;
 
 import java.io.PrintWriter;
-import java.util.Stack;
 
 
 /**
@@ -32,13 +31,11 @@ import java.util.Stack;
 public abstract class PlainTextBoldDecorator {
 
     final protected PrintWriter out;
-    final protected Stack< String > preStack;
     final protected XHtmlElementToWikiTranslator chain;
     final protected PlainTextItalicDecorator ptid;
 
-    protected PlainTextBoldDecorator( final PlainTextItalicDecorator ptid, final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
+    protected PlainTextBoldDecorator( final PlainTextItalicDecorator ptid, final PrintWriter out, final XHtmlElementToWikiTranslator chain ) {
         this.out = out;
-        this.preStack = preStack;
         this.chain = chain;
         this.ptid = ptid;
     }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/PlainTextCssDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/PlainTextCssDecorator.java
index 5513913..c8d1a66 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/PlainTextCssDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/PlainTextCssDecorator.java
@@ -22,7 +22,6 @@ import org.apache.wiki.htmltowiki.XHtmlElementToWikiTranslator;
 import org.jdom2.JDOMException;
 
 import java.io.PrintWriter;
-import java.util.Stack;
 
 
 /**
@@ -31,13 +30,11 @@ import java.util.Stack;
 public abstract class PlainTextCssDecorator {
 
     final protected PrintWriter out;
-    final protected Stack< String > preStack;
     final protected XHtmlElementToWikiTranslator chain;
     final protected PlainTextBoldDecorator ptbd;
 
-    protected PlainTextCssDecorator( final PlainTextBoldDecorator ptbd, final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
+    protected PlainTextCssDecorator( final PlainTextBoldDecorator ptbd, final PrintWriter out, final XHtmlElementToWikiTranslator chain ) {
         this.out = out;
-        this.preStack = preStack;
         this.chain = chain;
         this.ptbd = ptbd;
     }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/PlainTextCssSpecialDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/PlainTextCssSpecialDecorator.java
index 29dc157..ac8c389 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/PlainTextCssSpecialDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/PlainTextCssSpecialDecorator.java
@@ -22,7 +22,6 @@ import org.apache.wiki.htmltowiki.XHtmlElementToWikiTranslator;
 import org.jdom2.JDOMException;
 
 import java.io.PrintWriter;
-import java.util.Stack;
 
 
 /**
@@ -31,12 +30,10 @@ import java.util.Stack;
 public abstract class PlainTextCssSpecialDecorator {
 
     final protected PrintWriter out;
-    final protected Stack< String > preStack;
     final protected XHtmlElementToWikiTranslator chain;
 
-    protected PlainTextCssSpecialDecorator( final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
+    protected PlainTextCssSpecialDecorator( final PrintWriter out, final XHtmlElementToWikiTranslator chain ) {
         this.out = out;
-        this.preStack = preStack;
         this.chain = chain;
     }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/PlainTextDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/PlainTextDecorator.java
index ae45168..1381d5d 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/PlainTextDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/PlainTextDecorator.java
@@ -22,7 +22,6 @@ import org.apache.wiki.htmltowiki.XHtmlElementToWikiTranslator;
 import org.jdom2.JDOMException;
 
 import java.io.PrintWriter;
-import java.util.Stack;
 
 
 /**
@@ -38,13 +37,11 @@ import java.util.Stack;
 public class PlainTextDecorator {
 
     final protected PrintWriter out;
-    final protected Stack< String > preStack;
     final protected XHtmlElementToWikiTranslator chain;
     final protected PlainTextCssDecorator ptcd;
 
-    public PlainTextDecorator( final PlainTextCssDecorator ptcd, final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
+    public PlainTextDecorator( final PlainTextCssDecorator ptcd, final PrintWriter out, final XHtmlElementToWikiTranslator chain ) {
         this.out = out;
-        this.preStack = preStack;
         this.chain = chain;
         this.ptcd = ptcd;
     }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/PlainTextItalicDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/PlainTextItalicDecorator.java
index 1695d9d..4946f65 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/PlainTextItalicDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/PlainTextItalicDecorator.java
@@ -23,7 +23,6 @@ import org.jdom2.Element;
 import org.jdom2.JDOMException;
 
 import java.io.PrintWriter;
-import java.util.Stack;
 
 
 /**
@@ -32,13 +31,11 @@ import java.util.Stack;
 public abstract class PlainTextItalicDecorator {
 
     final protected PrintWriter out;
-    final protected Stack< String > preStack;
     final protected XHtmlElementToWikiTranslator chain;
     final protected PlainTextMonospaceDecorator ptmd;
 
-    protected PlainTextItalicDecorator( final PlainTextMonospaceDecorator ptmd, final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
+    protected PlainTextItalicDecorator( final PlainTextMonospaceDecorator ptmd, final PrintWriter out, final XHtmlElementToWikiTranslator chain ) {
         this.out = out;
-        this.preStack = preStack;
         this.chain = chain;
         this.ptmd = ptmd;
     }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/PlainTextMonospaceDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/PlainTextMonospaceDecorator.java
index c671c0d..b188651 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/PlainTextMonospaceDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/PlainTextMonospaceDecorator.java
@@ -23,7 +23,7 @@ import org.jdom2.Element;
 import org.jdom2.JDOMException;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
 
 
 /**
@@ -32,11 +32,11 @@ import java.util.Stack;
 public abstract class PlainTextMonospaceDecorator {
 
     final protected PrintWriter out;
-    final protected Stack< String > preStack;
+    final protected Deque< String > preStack;
     final protected XHtmlElementToWikiTranslator chain;
     final protected PlainTextCssSpecialDecorator ptcsd;
 
-    protected PlainTextMonospaceDecorator( final PlainTextCssSpecialDecorator ptcsd, final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
+    protected PlainTextMonospaceDecorator( final PlainTextCssSpecialDecorator ptcsd, final PrintWriter out, final Deque< String > preStack, final XHtmlElementToWikiTranslator chain ) {
         this.out = out;
         this.preStack = preStack;
         this.chain = chain;
@@ -51,11 +51,11 @@ public abstract class PlainTextMonospaceDecorator {
     public void decorate( final XHtmlElementToWikiTranslator.ElementDecoratorData dto ) throws JDOMException {
         if( dto.monospace ) {
             out.print( markupMonospaceOpen() );
-            preStack.push( markupMonospaceOpen() );
+            preStack.addFirst( markupMonospaceOpen() );
         }
         ptcsd.decorate( dto );
         if( dto.monospace ) {
-            preStack.pop();
+            preStack.removeFirst();
             out.print( markupMonospaceClose() );
         }
     }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/TdDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/TdDecorator.java
index 5793725..561e1d0 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/TdDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/TdDecorator.java
@@ -23,7 +23,7 @@ import org.jdom2.Element;
 import org.jdom2.JDOMException;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
 
 
 /**
@@ -32,10 +32,10 @@ import java.util.Stack;
 public abstract class TdDecorator {
 
     final protected PrintWriter out;
-    final protected Stack< String > preStack;
+    final protected Deque< String > preStack;
     final protected XHtmlElementToWikiTranslator chain;
 
-    protected TdDecorator( final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
+    protected TdDecorator( final PrintWriter out, final Deque< String > preStack, final XHtmlElementToWikiTranslator chain ) {
         this.out = out;
         this.preStack = preStack;
         this.chain = chain;
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/TextElementDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/TextElementDecorator.java
index 49d0730..62b6b5f 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/TextElementDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/TextElementDecorator.java
@@ -21,7 +21,7 @@ package org.apache.wiki.htmltowiki.syntax;
 import org.jdom2.Text;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
 
 
 /**
@@ -30,9 +30,9 @@ import java.util.Stack;
 public class TextElementDecorator {
 
     final protected PrintWriter out;
-    final protected Stack< String > preStack;
+    final protected Deque< String > preStack;
 
-    public TextElementDecorator( final PrintWriter out, final Stack< String > preStack ) {
+    public TextElementDecorator( final PrintWriter out, final Deque< String > preStack ) {
         this.out = out;
         this.preStack = preStack;
     }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/ThDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/ThDecorator.java
index 0b571ad..00d588b 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/ThDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/ThDecorator.java
@@ -23,7 +23,7 @@ import org.jdom2.Element;
 import org.jdom2.JDOMException;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
 
 
 /**
@@ -32,10 +32,10 @@ import java.util.Stack;
 public abstract class ThDecorator {
 
     final protected PrintWriter out;
-    final protected Stack< String > preStack;
+    final protected Deque< String > preStack;
     final protected XHtmlElementToWikiTranslator chain;
 
-    protected ThDecorator( final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
+    protected ThDecorator( final PrintWriter out, final Deque< String > preStack, final XHtmlElementToWikiTranslator chain ) {
         this.out = out;
         this.preStack = preStack;
         this.chain = chain;
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/UlDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/UlDecorator.java
index 30a11d7..3f5267e 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/UlDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/UlDecorator.java
@@ -23,7 +23,7 @@ import org.jdom2.Element;
 import org.jdom2.JDOMException;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
 
 
 /**
@@ -32,10 +32,10 @@ import java.util.Stack;
 public abstract class UlDecorator {
 
     final protected PrintWriter out;
-    final protected Stack< String > liStack;
+    final protected Deque< String > liStack;
     final protected XHtmlElementToWikiTranslator chain;
 
-    protected UlDecorator( final PrintWriter out, final Stack< String > liStack, final XHtmlElementToWikiTranslator chain ) {
+    protected UlDecorator( final PrintWriter out, final Deque< String > liStack, final XHtmlElementToWikiTranslator chain ) {
         this.out = out;
         this.liStack = liStack;
         this.chain = chain;
@@ -48,9 +48,9 @@ public abstract class UlDecorator {
      */
     public void decorate( final Element e ) throws JDOMException {
         out.println();
-        liStack.push( markupUl() );
+        liStack.addFirst( markupUl() );
         chain.translate( e );
-        liStack.pop();
+        liStack.removeFirst();
     }
 
     /**
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/WikiSyntaxDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/WikiSyntaxDecorator.java
index 61af84d..f81536c 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/WikiSyntaxDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/WikiSyntaxDecorator.java
@@ -27,15 +27,15 @@ import org.jdom2.JDOMException;
 import org.jdom2.Text;
 
 import java.io.PrintWriter;
+import java.util.Deque;
 import java.util.Map;
-import java.util.Stack;
 
 
 /**
  * <p>Base Syntax decorator which translates to JSPWiki syntax. Delegates each kind of XHTML element to its specific
  * decorator.</p>
  * <p>This class is useful when developing a new wiki syntax decorator - just extend from it and provide the implementations of all
- * the needed Decorators on the {@link SyntaxDecorator#init(PrintWriter, Stack, Stack, WhitespaceTrimWriter, XHtmlToWikiConfig, XHtmlElementToWikiTranslator)} method</p>
+ * the needed Decorators on the {@link SyntaxDecorator#init(PrintWriter, Deque, Deque, WhitespaceTrimWriter, XHtmlToWikiConfig, XHtmlElementToWikiTranslator)} method</p>
  */
 public abstract class WikiSyntaxDecorator implements SyntaxDecorator {
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiBrDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiBrDecorator.java
index f9cd615..84c15ed 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiBrDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiBrDecorator.java
@@ -22,7 +22,7 @@ import org.apache.wiki.htmltowiki.XHtmlElementToWikiTranslator;
 import org.apache.wiki.htmltowiki.syntax.BrDecorator;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
 
 
 /**
@@ -30,7 +30,7 @@ import java.util.Stack;
  */
 class JSPWikiBrDecorator extends BrDecorator {
 
-    JSPWikiBrDecorator( final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
+    JSPWikiBrDecorator( final PrintWriter out, final Deque< String > preStack, final XHtmlElementToWikiTranslator chain ) {
         super( out, preStack, chain );
     }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiCodeDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiCodeDecorator.java
index 9e8b613..b6e377f 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiCodeDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiCodeDecorator.java
@@ -22,7 +22,7 @@ import org.apache.wiki.htmltowiki.XHtmlElementToWikiTranslator;
 import org.apache.wiki.htmltowiki.syntax.CodeDecorator;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
 
 
 /**
@@ -30,7 +30,7 @@ import java.util.Stack;
  */
 class JSPWikiCodeDecorator extends CodeDecorator {
 
-    JSPWikiCodeDecorator( final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
+    JSPWikiCodeDecorator( final PrintWriter out, final Deque< String > preStack, final XHtmlElementToWikiTranslator chain ) {
         super( out, preStack, chain );
     }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiLiDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiLiDecorator.java
index e748ea3..563371a 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiLiDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiLiDecorator.java
@@ -22,7 +22,8 @@ import org.apache.wiki.htmltowiki.XHtmlElementToWikiTranslator;
 import org.apache.wiki.htmltowiki.syntax.LiDecorator;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
+import java.util.Iterator;
 
 
 /**
@@ -30,14 +31,19 @@ import java.util.Stack;
  */
 class JSPWikiLiDecorator extends LiDecorator {
 
-    JSPWikiLiDecorator( final PrintWriter out, final Stack< String > liStack, final XHtmlElementToWikiTranslator chain ) {
+    JSPWikiLiDecorator( final PrintWriter out, final Deque< String > liStack, final XHtmlElementToWikiTranslator chain ) {
         super( out, liStack, chain );
     }
 
     /** {@inheritDoc} */
     @Override
-    protected String markupLi( final Stack< String > liStack ) {
-        return String.join( "", liStack ) + " ";
+    protected String markupLi( final Deque< String > liStack ) {
+        final StringBuilder li = new StringBuilder();
+        final Iterator< String > iterator = liStack.descendingIterator();
+        while( iterator.hasNext() ) {
+            li.append( iterator.next() );
+        }
+        return li + " ";
     }
 
 }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiOlDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiOlDecorator.java
index ab8ee68..49ebc1b 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiOlDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiOlDecorator.java
@@ -22,7 +22,7 @@ import org.apache.wiki.htmltowiki.XHtmlElementToWikiTranslator;
 import org.apache.wiki.htmltowiki.syntax.OlDecorator;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
 
 
 /**
@@ -30,7 +30,7 @@ import java.util.Stack;
  */
 class JSPWikiOlDecorator extends OlDecorator {
 
-    JSPWikiOlDecorator( final PrintWriter out, final Stack< String > liStack, final XHtmlElementToWikiTranslator chain ) {
+    JSPWikiOlDecorator( final PrintWriter out, final Deque< String > liStack, final XHtmlElementToWikiTranslator chain ) {
         super( out, liStack, chain );
     }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiPlainTextBoldDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiPlainTextBoldDecorator.java
index 52ac526..f014f6c 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiPlainTextBoldDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiPlainTextBoldDecorator.java
@@ -23,7 +23,6 @@ import org.apache.wiki.htmltowiki.syntax.PlainTextBoldDecorator;
 import org.apache.wiki.htmltowiki.syntax.PlainTextItalicDecorator;
 
 import java.io.PrintWriter;
-import java.util.Stack;
 
 
 /**
@@ -31,8 +30,8 @@ import java.util.Stack;
  */
 class JSPWikiPlainTextBoldDecorator extends PlainTextBoldDecorator {
 
-    JSPWikiPlainTextBoldDecorator( final PlainTextItalicDecorator ptid, final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
-        super( ptid, out, preStack, chain );
+    JSPWikiPlainTextBoldDecorator( final PlainTextItalicDecorator ptid, final PrintWriter out, final XHtmlElementToWikiTranslator chain ) {
+        super( ptid, out, chain );
     }
 
     /** {@inheritDoc} */
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiPlainTextCssDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiPlainTextCssDecorator.java
index 3d9cceb..1aab16c 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiPlainTextCssDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiPlainTextCssDecorator.java
@@ -23,7 +23,6 @@ import org.apache.wiki.htmltowiki.syntax.PlainTextBoldDecorator;
 import org.apache.wiki.htmltowiki.syntax.PlainTextCssDecorator;
 
 import java.io.PrintWriter;
-import java.util.Stack;
 
 
 /**
@@ -31,8 +30,8 @@ import java.util.Stack;
  */
 class JSPWikiPlainTextCssDecorator extends PlainTextCssDecorator {
 
-    JSPWikiPlainTextCssDecorator( final PlainTextBoldDecorator ptbd, final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
-        super( ptbd, out, preStack, chain );
+    JSPWikiPlainTextCssDecorator( final PlainTextBoldDecorator ptbd, final PrintWriter out, final XHtmlElementToWikiTranslator chain ) {
+        super( ptbd, out, chain );
     }
 
     /** {@inheritDoc} */
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiPlainTextCssSpecialDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiPlainTextCssSpecialDecorator.java
index 459f8c0..a7dfd89 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiPlainTextCssSpecialDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiPlainTextCssSpecialDecorator.java
@@ -22,7 +22,6 @@ import org.apache.wiki.htmltowiki.XHtmlElementToWikiTranslator;
 import org.apache.wiki.htmltowiki.syntax.PlainTextCssSpecialDecorator;
 
 import java.io.PrintWriter;
-import java.util.Stack;
 
 
 /**
@@ -30,8 +29,8 @@ import java.util.Stack;
  */
 class JSPWikiPlainTextCssSpecialDecorator extends PlainTextCssSpecialDecorator {
 
-    JSPWikiPlainTextCssSpecialDecorator( final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
-        super( out, preStack, chain );
+    JSPWikiPlainTextCssSpecialDecorator( final PrintWriter out, final XHtmlElementToWikiTranslator chain ) {
+        super( out, chain );
     }
 
     /** {@inheritDoc} */
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiPlainTextItalicDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiPlainTextItalicDecorator.java
index 2f0c307..9e23511 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiPlainTextItalicDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiPlainTextItalicDecorator.java
@@ -23,7 +23,6 @@ import org.apache.wiki.htmltowiki.syntax.PlainTextItalicDecorator;
 import org.apache.wiki.htmltowiki.syntax.PlainTextMonospaceDecorator;
 
 import java.io.PrintWriter;
-import java.util.Stack;
 
 
 /**
@@ -31,8 +30,8 @@ import java.util.Stack;
  */
 class JSPWikiPlainTextItalicDecorator extends PlainTextItalicDecorator {
 
-    JSPWikiPlainTextItalicDecorator( final PlainTextMonospaceDecorator ptmd, final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
-        super( ptmd, out, preStack, chain );
+    JSPWikiPlainTextItalicDecorator( final PlainTextMonospaceDecorator ptmd, final PrintWriter out, final XHtmlElementToWikiTranslator chain ) {
+        super( ptmd, out, chain );
     }
 
     /** {@inheritDoc} */
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiPlainTextMonospaceDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiPlainTextMonospaceDecorator.java
index 23a7c63..440bc1c 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiPlainTextMonospaceDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiPlainTextMonospaceDecorator.java
@@ -23,7 +23,7 @@ import org.apache.wiki.htmltowiki.syntax.PlainTextCssSpecialDecorator;
 import org.apache.wiki.htmltowiki.syntax.PlainTextMonospaceDecorator;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
 
 
 /**
@@ -31,7 +31,7 @@ import java.util.Stack;
  */
 class JSPWikiPlainTextMonospaceDecorator extends PlainTextMonospaceDecorator {
 
-    JSPWikiPlainTextMonospaceDecorator( final PlainTextCssSpecialDecorator ptcsd, final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
+    JSPWikiPlainTextMonospaceDecorator( final PlainTextCssSpecialDecorator ptcsd, final PrintWriter out, final Deque< String > preStack, final XHtmlElementToWikiTranslator chain ) {
         super( ptcsd, out, preStack, chain );
     }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiSyntaxDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiSyntaxDecorator.java
index 2034fbd..8200cba 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiSyntaxDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiSyntaxDecorator.java
@@ -31,7 +31,7 @@ import org.apache.wiki.htmltowiki.syntax.TrDecorator;
 import org.apache.wiki.htmltowiki.syntax.WikiSyntaxDecorator;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
 
 
 /**
@@ -42,8 +42,8 @@ public class JSPWikiSyntaxDecorator extends WikiSyntaxDecorator {
     /** {@inheritDoc} */
     @Override
     public void init( final PrintWriter out,
-                      final Stack< String > liStack,
-                      final Stack< String > preStack,
+                      final Deque< String > liStack,
+                      final Deque< String > preStack,
                       final WhitespaceTrimWriter outTrimmer,
                       final XHtmlToWikiConfig config,
                       final XHtmlElementToWikiTranslator chain ) {
@@ -51,12 +51,12 @@ public class JSPWikiSyntaxDecorator extends WikiSyntaxDecorator {
         this.outTrimmer = outTrimmer;
         this.chain = chain;
 
-        this.cssStyle = new JSPWikiPlainTextCssSpecialDecorator( out, preStack, chain );
+        this.cssStyle = new JSPWikiPlainTextCssSpecialDecorator( out, chain );
         this.pre = new JSPWikiPlainTextMonospaceDecorator( cssStyle, out, preStack, chain );
-        this.em = new JSPWikiPlainTextItalicDecorator( pre, out, preStack, chain );
-        this.strong = new JSPWikiPlainTextBoldDecorator( em, out, preStack, chain );
-        this.css = new JSPWikiPlainTextCssDecorator( strong, out, preStack, chain );
-        this.plainText = new PlainTextDecorator( css, out, preStack, chain );
+        this.em = new JSPWikiPlainTextItalicDecorator( pre, out, chain );
+        this.strong = new JSPWikiPlainTextBoldDecorator( em, out, chain );
+        this.css = new JSPWikiPlainTextCssDecorator( strong, out, chain );
+        this.plainText = new PlainTextDecorator( css, out, chain );
 
         this.a = new JSPWikiADecorator( out, config, chain );
         this.br = new JSPWikiBrDecorator( out, preStack, chain );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiTdDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiTdDecorator.java
index 38cdbf0..2f4778a 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiTdDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiTdDecorator.java
@@ -22,7 +22,7 @@ import org.apache.wiki.htmltowiki.XHtmlElementToWikiTranslator;
 import org.apache.wiki.htmltowiki.syntax.TdDecorator;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
 
 
 /**
@@ -30,7 +30,7 @@ import java.util.Stack;
  */
 class JSPWikiTdDecorator extends TdDecorator {
 
-    JSPWikiTdDecorator( final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
+    JSPWikiTdDecorator( final PrintWriter out, final Deque< String > preStack, final XHtmlElementToWikiTranslator chain ) {
         super( out, preStack, chain );
     }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiThDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiThDecorator.java
index 343c115..95a71a0 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiThDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiThDecorator.java
@@ -22,7 +22,7 @@ import org.apache.wiki.htmltowiki.XHtmlElementToWikiTranslator;
 import org.apache.wiki.htmltowiki.syntax.ThDecorator;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
 
 
 /**
@@ -30,7 +30,7 @@ import java.util.Stack;
  */
 class JSPWikiThDecorator extends ThDecorator {
 
-    JSPWikiThDecorator( final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
+    JSPWikiThDecorator( final PrintWriter out, final Deque< String > preStack, final XHtmlElementToWikiTranslator chain ) {
         super( out, preStack, chain );
     }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiUlDecorator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiUlDecorator.java
index 8010c34..244a4ee 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiUlDecorator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/syntax/jspwiki/JSPWikiUlDecorator.java
@@ -22,7 +22,7 @@ import org.apache.wiki.htmltowiki.XHtmlElementToWikiTranslator;
 import org.apache.wiki.htmltowiki.syntax.UlDecorator;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
 
 
 /**
@@ -30,7 +30,7 @@ import java.util.Stack;
  */
 class JSPWikiUlDecorator extends UlDecorator {
 
-    JSPWikiUlDecorator( final PrintWriter out, final Stack< String > liStack, final XHtmlElementToWikiTranslator chain ) {
+    JSPWikiUlDecorator( final PrintWriter out, final Deque< String > liStack, final XHtmlElementToWikiTranslator chain ) {
         super( out, liStack, chain );
     }
 
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownBrDecorator.java b/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownBrDecorator.java
index 9f25eb9..fa16244 100644
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownBrDecorator.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownBrDecorator.java
@@ -24,7 +24,7 @@ import org.apache.wiki.htmltowiki.XHtmlElementToWikiTranslator;
 import org.apache.wiki.htmltowiki.syntax.BrDecorator;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
 
 
 /**
@@ -34,7 +34,7 @@ class MarkdownBrDecorator extends BrDecorator {
 
     private static final String INDENTATION_UNIT = StringUtils.repeat( WhitespaceTrimWriter.NO_TRIMMED_SPACE, 2 );
 
-    MarkdownBrDecorator( final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
+    MarkdownBrDecorator( final PrintWriter out, final Deque< String > preStack, final XHtmlElementToWikiTranslator chain ) {
         super( out, preStack, chain );
     }
 
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownCodeDecorator.java b/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownCodeDecorator.java
index 8ba0c1f..c5f66e7 100644
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownCodeDecorator.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownCodeDecorator.java
@@ -22,7 +22,7 @@ import org.apache.wiki.htmltowiki.XHtmlElementToWikiTranslator;
 import org.apache.wiki.htmltowiki.syntax.CodeDecorator;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
 
 
 /**
@@ -30,7 +30,7 @@ import java.util.Stack;
  */
 class MarkdownCodeDecorator extends CodeDecorator {
 
-    MarkdownCodeDecorator( final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
+    MarkdownCodeDecorator( final PrintWriter out, final Deque< String > preStack, final XHtmlElementToWikiTranslator chain ) {
         super( out, preStack, chain );
     }
 
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownLiDecorator.java b/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownLiDecorator.java
index 37b600c..c0aad88 100644
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownLiDecorator.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownLiDecorator.java
@@ -24,7 +24,7 @@ import org.apache.wiki.htmltowiki.XHtmlElementToWikiTranslator;
 import org.apache.wiki.htmltowiki.syntax.LiDecorator;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
 
 
 /**
@@ -34,13 +34,13 @@ class MarkdownLiDecorator extends LiDecorator {
 
     private static final String INDENTATION_UNIT = StringUtils.repeat( WhitespaceTrimWriter.NO_TRIMMED_SPACE, 4 );
 
-    MarkdownLiDecorator( final PrintWriter out, final Stack< String > liStack, final XHtmlElementToWikiTranslator chain ) {
+    MarkdownLiDecorator( final PrintWriter out, final Deque< String > liStack, final XHtmlElementToWikiTranslator chain ) {
         super( out, liStack, chain );
     }
 
     /** {@inheritDoc} */
     @Override
-    protected String markupLi( final Stack< String > liStack ) {
+    protected String markupLi( final Deque< String > liStack ) {
         final String liIndentation = StringUtils.repeat( INDENTATION_UNIT, liStack.size() - 1 );
         return liIndentation + liStack.peek() + " ";
     }
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownOlDecorator.java b/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownOlDecorator.java
index 0ebecdf..4967b32 100644
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownOlDecorator.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownOlDecorator.java
@@ -22,7 +22,7 @@ import org.apache.wiki.htmltowiki.XHtmlElementToWikiTranslator;
 import org.apache.wiki.htmltowiki.syntax.OlDecorator;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
 
 
 /**
@@ -30,7 +30,7 @@ import java.util.Stack;
  */
 class MarkdownOlDecorator extends OlDecorator {
 
-    MarkdownOlDecorator( final PrintWriter out, final Stack< String > liStack, final XHtmlElementToWikiTranslator chain ) {
+    MarkdownOlDecorator( final PrintWriter out, final Deque< String > liStack, final XHtmlElementToWikiTranslator chain ) {
         super( out, liStack, chain );
     }
 
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownPlainTextBoldDecorator.java b/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownPlainTextBoldDecorator.java
index ef42958..6c60c1f 100644
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownPlainTextBoldDecorator.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownPlainTextBoldDecorator.java
@@ -23,7 +23,6 @@ import org.apache.wiki.htmltowiki.syntax.PlainTextBoldDecorator;
 import org.apache.wiki.htmltowiki.syntax.PlainTextItalicDecorator;
 
 import java.io.PrintWriter;
-import java.util.Stack;
 
 
 /**
@@ -31,8 +30,8 @@ import java.util.Stack;
  */
 class MarkdownPlainTextBoldDecorator extends PlainTextBoldDecorator {
 
-    MarkdownPlainTextBoldDecorator( final PlainTextItalicDecorator ptid, final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
-        super( ptid, out, preStack, chain );
+    MarkdownPlainTextBoldDecorator( final PlainTextItalicDecorator ptid, final PrintWriter out, final XHtmlElementToWikiTranslator chain ) {
+        super( ptid, out, chain );
     }
 
     /** {@inheritDoc} */
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownPlainTextCssDecorator.java b/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownPlainTextCssDecorator.java
index 0cbc675..018013e 100644
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownPlainTextCssDecorator.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownPlainTextCssDecorator.java
@@ -23,7 +23,6 @@ import org.apache.wiki.htmltowiki.syntax.PlainTextBoldDecorator;
 import org.apache.wiki.htmltowiki.syntax.PlainTextCssDecorator;
 
 import java.io.PrintWriter;
-import java.util.Stack;
 
 
 /**
@@ -31,8 +30,8 @@ import java.util.Stack;
  */
 class MarkdownPlainTextCssDecorator extends PlainTextCssDecorator {
 
-    MarkdownPlainTextCssDecorator( final PlainTextBoldDecorator ptbd, final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
-        super( ptbd, out, preStack, chain );
+    MarkdownPlainTextCssDecorator( final PlainTextBoldDecorator ptbd, final PrintWriter out, final XHtmlElementToWikiTranslator chain ) {
+        super( ptbd, out, chain );
     }
 
     /** {@inheritDoc} */
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownPlainTextCssSpecialDecorator.java b/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownPlainTextCssSpecialDecorator.java
index 2d7965d..57158f2 100644
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownPlainTextCssSpecialDecorator.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownPlainTextCssSpecialDecorator.java
@@ -22,7 +22,6 @@ import org.apache.wiki.htmltowiki.XHtmlElementToWikiTranslator;
 import org.apache.wiki.htmltowiki.syntax.PlainTextCssSpecialDecorator;
 
 import java.io.PrintWriter;
-import java.util.Stack;
 
 
 /**
@@ -30,8 +29,8 @@ import java.util.Stack;
  */
 class MarkdownPlainTextCssSpecialDecorator extends PlainTextCssSpecialDecorator {
 
-    MarkdownPlainTextCssSpecialDecorator( final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
-        super( out, preStack, chain );
+    MarkdownPlainTextCssSpecialDecorator( final PrintWriter out, final XHtmlElementToWikiTranslator chain ) {
+        super( out, chain );
     }
 
     /** {@inheritDoc} */
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownPlainTextItalicDecorator.java b/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownPlainTextItalicDecorator.java
index 397c41f..3f0f6ee 100644
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownPlainTextItalicDecorator.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownPlainTextItalicDecorator.java
@@ -23,7 +23,6 @@ import org.apache.wiki.htmltowiki.syntax.PlainTextItalicDecorator;
 import org.apache.wiki.htmltowiki.syntax.PlainTextMonospaceDecorator;
 
 import java.io.PrintWriter;
-import java.util.Stack;
 
 
 /**
@@ -31,8 +30,8 @@ import java.util.Stack;
  */
 class MarkdownPlainTextItalicDecorator extends PlainTextItalicDecorator {
 
-    MarkdownPlainTextItalicDecorator( final PlainTextMonospaceDecorator ptmd, final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
-        super( ptmd, out, preStack, chain );
+    MarkdownPlainTextItalicDecorator( final PlainTextMonospaceDecorator ptmd, final PrintWriter out, final XHtmlElementToWikiTranslator chain ) {
+        super( ptmd, out, chain );
     }
 
     /** {@inheritDoc} */
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownPlainTextMonospaceDecorator.java b/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownPlainTextMonospaceDecorator.java
index 4f513b0..2806f28 100644
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownPlainTextMonospaceDecorator.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownPlainTextMonospaceDecorator.java
@@ -23,7 +23,7 @@ import org.apache.wiki.htmltowiki.syntax.PlainTextCssSpecialDecorator;
 import org.apache.wiki.htmltowiki.syntax.PlainTextMonospaceDecorator;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
 
 
 /**
@@ -31,7 +31,7 @@ import java.util.Stack;
  */
 class MarkdownPlainTextMonospaceDecorator extends PlainTextMonospaceDecorator {
 
-    MarkdownPlainTextMonospaceDecorator( final PlainTextCssSpecialDecorator ptcsd, final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
+    MarkdownPlainTextMonospaceDecorator( final PlainTextCssSpecialDecorator ptcsd, final PrintWriter out, final Deque< String > preStack, final XHtmlElementToWikiTranslator chain ) {
         super( ptcsd, out, preStack, chain );
     }
 
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownSyntaxDecorator.java b/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownSyntaxDecorator.java
index 1f3f99a..6959566 100644
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownSyntaxDecorator.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownSyntaxDecorator.java
@@ -30,7 +30,7 @@ import org.apache.wiki.htmltowiki.syntax.TrDecorator;
 import org.apache.wiki.htmltowiki.syntax.WikiSyntaxDecorator;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
 
 
 /**
@@ -41,8 +41,8 @@ public class MarkdownSyntaxDecorator extends WikiSyntaxDecorator {
     /** {@inheritDoc} */
     @Override
     public void init( final PrintWriter out,
-                      final Stack< String > liStack,
-                      final Stack< String > preStack,
+                      final Deque< String > liStack,
+                      final Deque< String > preStack,
                       final WhitespaceTrimWriter outTrimmer,
                       final XHtmlToWikiConfig config,
                       final XHtmlElementToWikiTranslator chain ) {
@@ -50,12 +50,12 @@ public class MarkdownSyntaxDecorator extends WikiSyntaxDecorator {
         this.outTrimmer = outTrimmer;
         this.chain = chain;
 
-        this.cssStyle = new MarkdownPlainTextCssSpecialDecorator( out, preStack, chain );
+        this.cssStyle = new MarkdownPlainTextCssSpecialDecorator( out, chain );
         this.pre = new MarkdownPlainTextMonospaceDecorator( cssStyle, out, preStack, chain );
-        this.em = new MarkdownPlainTextItalicDecorator( pre, out, preStack, chain );
-        this.strong = new MarkdownPlainTextBoldDecorator( em, out, preStack, chain );
-        this.css = new MarkdownPlainTextCssDecorator( strong, out, preStack, chain );
-        this.plainText = new PlainTextDecorator( css, out, preStack, chain );
+        this.em = new MarkdownPlainTextItalicDecorator( pre, out, chain );
+        this.strong = new MarkdownPlainTextBoldDecorator( em, out, chain );
+        this.css = new MarkdownPlainTextCssDecorator( strong, out, chain );
+        this.plainText = new PlainTextDecorator( css, out, chain );
 
         this.a = new MarkdownADecorator( out, config, chain );
         this.br = new MarkdownBrDecorator( out, preStack, chain );
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownTdDecorator.java b/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownTdDecorator.java
index fec1e3d..69fe0fb 100644
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownTdDecorator.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownTdDecorator.java
@@ -22,7 +22,7 @@ import org.apache.wiki.htmltowiki.XHtmlElementToWikiTranslator;
 import org.apache.wiki.htmltowiki.syntax.TdDecorator;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
 
 
 /**
@@ -30,7 +30,7 @@ import java.util.Stack;
  */
 class MarkdownTdDecorator extends TdDecorator {
 
-    MarkdownTdDecorator( final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
+    MarkdownTdDecorator( final PrintWriter out, final Deque< String > preStack, final XHtmlElementToWikiTranslator chain ) {
         super( out, preStack, chain );
     }
 
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownThDecorator.java b/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownThDecorator.java
index d1efeec..aa6a4ae 100644
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownThDecorator.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownThDecorator.java
@@ -22,7 +22,7 @@ import org.apache.wiki.htmltowiki.XHtmlElementToWikiTranslator;
 import org.apache.wiki.htmltowiki.syntax.ThDecorator;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
 
 
 /**
@@ -30,7 +30,7 @@ import java.util.Stack;
  */
 class MarkdownThDecorator extends ThDecorator {
 
-    MarkdownThDecorator( final PrintWriter out, final Stack< String > preStack, final XHtmlElementToWikiTranslator chain ) {
+    MarkdownThDecorator( final PrintWriter out, final Deque< String > preStack, final XHtmlElementToWikiTranslator chain ) {
         super( out, preStack, chain );
     }
 
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownUlDecorator.java b/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownUlDecorator.java
index 60b865a..2284b48 100644
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownUlDecorator.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/htmltowiki/syntax/markdown/MarkdownUlDecorator.java
@@ -22,7 +22,7 @@ import org.apache.wiki.htmltowiki.XHtmlElementToWikiTranslator;
 import org.apache.wiki.htmltowiki.syntax.UlDecorator;
 
 import java.io.PrintWriter;
-import java.util.Stack;
+import java.util.Deque;
 
 
 /**
@@ -30,7 +30,7 @@ import java.util.Stack;
  */
 class MarkdownUlDecorator extends UlDecorator {
 
-    MarkdownUlDecorator( final PrintWriter out, final Stack< String > liStack, final XHtmlElementToWikiTranslator chain ) {
+    MarkdownUlDecorator( final PrintWriter out, final Deque< String > liStack, final XHtmlElementToWikiTranslator chain ) {
         super( out, liStack, chain );
     }