Author: schulte
Date: Fri Dec 11 18:01:19 2015
New Revision: 1719483

URL: http://svn.apache.org/viewvc?rev=1719483&view=rev
Log:
[DOXIA-532] Support for server side includes.

o Updated to handle comments starting with a '#' character to represent SSI 
expressions.


Modified:
    
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/markup/Markup.java
    
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java
    
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/RandomAccessSink.java
    
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/SinkAdapter.java
    
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/XhtmlBaseSink.java
    
maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/parser/XhtmlBaseParserTest.java
    
maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/SinkEventTestingSink.java
    
maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/TextSink.java
    
maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/WellformednessCheckingSink.java
    
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
    
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
    
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptParserTest.java
    
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/resources/test/comments.apt
    
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookSink.java
    
maven/doxia/doxia/trunk/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java
    
maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java
    
maven/doxia/doxia/trunk/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java

Modified: 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/markup/Markup.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/markup/Markup.java?rev=1719483&r1=1719482&r2=1719483&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/markup/Markup.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/markup/Markup.java
 Fri Dec 11 18:01:19 2015
@@ -80,4 +80,8 @@ public interface Markup
 
     /** semicolon character: ';' */
     char SEMICOLON = ';';
+
+    /** hash character: '#' */
+    char HASH = '#';
+
 }

Modified: 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java?rev=1719483&r1=1719482&r2=1719483&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java
 Fri Dec 11 18:01:19 2015
@@ -260,7 +260,7 @@ public abstract class AbstractXmlParser
             }
             else if ( eventType == XmlPullParser.COMMENT )
             {
-                handleComment( parser, sink );
+                handleCommentOrSsi( parser, sink );
             }
             else if ( eventType == XmlPullParser.ENTITY_REF )
             {
@@ -359,6 +359,31 @@ public abstract class AbstractXmlParser
     }
 
     /**
+     * Decides whether a comment is a SSI directive and delegates to the
+     * corresponding method.
+     *
+     * @param parser A parser, not null.
+     * @param sink the sink to receive the events. Not null.
+     *
+     * @throws org.codehaus.plexus.util.xml.pull.XmlPullParserException if 
there's a problem parsing the model
+     * @since 1.7
+     */
+    private void handleCommentOrSsi( XmlPullParser parser, Sink sink )
+        throws XmlPullParserException
+    {
+        final String text = getText( parser ).trim();
+
+        if ( text.indexOf( HASH ) == 0 )
+        {
+            handleSsi( parser, sink );
+        }
+        else
+        {
+            handleComment( parser, sink );
+        }
+    }
+
+    /**
      * Handles comments.
      *
      * <p>This is a default implementation, all data are emitted as comment
@@ -375,6 +400,23 @@ public abstract class AbstractXmlParser
     }
 
     /**
+     * Handles SSI directives.
+     *
+     * <p>This is a default implementation, all data are emitted as SSI
+     * events into the specified sink.</p>
+     *
+     * @param parser A parser, not null.
+     * @param sink the sink to receive the events. Not null.
+     * @throws org.codehaus.plexus.util.xml.pull.XmlPullParserException if 
there's a problem parsing the model
+     * @since 1.7
+     */
+    protected void handleSsi( XmlPullParser parser, Sink sink )
+        throws XmlPullParserException
+    {
+        sink.ssi( getText( parser ).trim().substring( 1 ) );
+    }
+
+    /**
      * Handles entities.
      *
      * <p>This is a default implementation, all entities are resolved and 
emitted as text

Modified: 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/RandomAccessSink.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/RandomAccessSink.java?rev=1719483&r1=1719482&r2=1719483&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/RandomAccessSink.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/RandomAccessSink.java
 Fri Dec 11 18:01:19 2015
@@ -726,6 +726,15 @@ public class RandomAccessSink
         currentSink.section_( level );
     }
 
+    /**
+     * {@inheritDoc}
+     * @since 1.7
+     */
+    public void ssi( final String directive )
+    {
+        currentSink.ssi( directive );
+    }
+
     /** {@inheritDoc} */
     public void table()
     {

Modified: 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/SinkAdapter.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/SinkAdapter.java?rev=1719483&r1=1719482&r2=1719483&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/SinkAdapter.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/SinkAdapter.java
 Fri Dec 11 18:01:19 2015
@@ -212,6 +212,15 @@ public class SinkAdapter
         // nop
     }
 
+    /**
+     * {@inheritDoc}
+     * @since 1.7
+     */
+    public void ssi( final String directive )
+    {
+        // nop
+    }
+
     /** {@inheritDoc} */
     public void table()
     {

Modified: 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/XhtmlBaseSink.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/XhtmlBaseSink.java?rev=1719483&r1=1719482&r2=1719483&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/XhtmlBaseSink.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/XhtmlBaseSink.java
 Fri Dec 11 18:01:19 2015
@@ -1904,6 +1904,22 @@ public class XhtmlBaseSink
     }
 
     /**
+     * {@inheritDoc}
+     * @sine 1.7
+     */
+    @Override
+    public void ssi( final String directive )
+    {
+        final StringBuilder buf = new StringBuilder( directive.length() + 9 );
+
+        buf.append( LESS_THAN ).append( BANG ).append( MINUS ).append( MINUS 
).append( HASH );
+        buf.append( directive );
+        buf.append( SPACE ).append( MINUS ).append( MINUS ).append( 
GREATER_THAN );
+
+        write( buf.toString() );
+    }
+
+    /**
      * Add an unknown event.
      * This can be used to generate html tags for which no corresponding sink 
event exists.
      *

Modified: 
maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/parser/XhtmlBaseParserTest.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/parser/XhtmlBaseParserTest.java?rev=1719483&r1=1719482&r2=1719483&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/parser/XhtmlBaseParserTest.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/parser/XhtmlBaseParserTest.java
 Fri Dec 11 18:01:19 2015
@@ -597,13 +597,14 @@ public class XhtmlBaseParserTest
     public void testSpecial()
         throws Exception
     {
-        String text = "<p><!-- a pagebreak: --><!-- PB -->&nbsp;&#160;<unknown 
/></p>";
+        String text = "<p><!-- a pagebreak: --><!-- PB --><!--#echo 
var=\"code\" -->&nbsp;&#160;<unknown /></p>";
         parser.parse( text, sink );
         Iterator<SinkEventElement> it = sink.getEventList().iterator();
 
         assertEquals( "paragraph", it.next().getName() );
         assertEquals( "comment", it.next().getName() );
         assertEquals( "pageBreak", it.next().getName() );
+        assertEquals( "ssi", it.next().getName() );
         assertEquals( "nonBreakingSpace", it.next().getName() );
         assertEquals( "nonBreakingSpace", it.next().getName() );
         // unknown events are not reported by the base parser

Modified: 
maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/SinkEventTestingSink.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/SinkEventTestingSink.java?rev=1719483&r1=1719482&r2=1719483&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/SinkEventTestingSink.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/SinkEventTestingSink.java
 Fri Dec 11 18:01:19 2015
@@ -236,6 +236,15 @@ public class SinkEventTestingSink
         addEvent( "figure_" );
     }
 
+    /**
+     * {@inheritDoc}
+     * @since 1.7
+     */
+    public void ssi( final String directive )
+    {
+        addEvent( "ssi" );
+    }
+
     /** {@inheritDoc} */
     public void table()
     {

Modified: 
maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/TextSink.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/TextSink.java?rev=1719483&r1=1719482&r2=1719483&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/TextSink.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/TextSink.java
 Fri Dec 11 18:01:19 2015
@@ -222,6 +222,15 @@ public class TextSink
         writeln( "end:figure" );
     }
 
+    /**
+     * {@inheritDoc}
+     * @since 1.7
+     */
+    public void ssi( final String directive )
+    {
+        writeln( "ssi:" + directive );
+    }
+
     /** {@inheritDoc} */
     public void table()
     {

Modified: 
maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/WellformednessCheckingSink.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/WellformednessCheckingSink.java?rev=1719483&r1=1719482&r2=1719483&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/WellformednessCheckingSink.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/WellformednessCheckingSink.java
 Fri Dec 11 18:01:19 2015
@@ -218,6 +218,15 @@ public class WellformednessCheckingSink
         checkWellformedness( "figure" );
     }
 
+    /**
+     * {@inheritDoc}
+     * @since 1.7
+     */
+    public void ssi( final String directive )
+    {
+        // ignore
+    }
+
     /** {@inheritDoc} */
     public void table()
     {

Modified: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java?rev=1719483&r1=1719482&r2=1719483&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
 Fri Dec 11 18:01:19 2015
@@ -112,6 +112,9 @@ public class AptParser
     /** Comment event id. */
     private static final int COMMENT_BLOCK = 17;
 
+    /** SSI event id. */
+    private static final int SSI_BLOCK = 18;
+
     /** String representations of event ids */
     private static final String TYPE_NAMES[] = {
         "TITLE",
@@ -131,7 +134,8 @@ public class AptParser
         "PG_BREAK",
         "LIST_BREAK",
         "MACRO",
-        "COMMENT_BLOCK" };
+        "COMMENT_BLOCK",
+        "SSI_BLOCK" };
 
     /** An array of 85 spaces. */
     protected static final char[] SPACES;
@@ -218,8 +222,8 @@ public class AptParser
             // Lookahead block.
             nextBlock( /*first*/true );
 
-            // traverse comments
-            while ( ( block != null ) && ( block.getType() == COMMENT_BLOCK ) )
+            // traverse comments and SSI directives
+            while ( ( block != null ) && ( block.getType() == COMMENT_BLOCK || 
block.getType() == SSI_BLOCK ) )
             {
                 block.traverse();
                 nextBlock( /*first*/true );
@@ -1368,7 +1372,10 @@ public class AptParser
             case COMMENT:
                 if ( charAt( line, length, i + 1 ) == COMMENT )
                 {
-                    block = new Comment( line.substring( i + 2 ).trim() );
+                    block = charAt( line, length, i + 2 ) == HASH
+                                ? new SSI( line.substring( i + 3 ).trim() )
+                                : new Comment( line.substring( i + 2 ).trim() 
);
+
                 }
                 break;
             default:
@@ -2235,6 +2242,30 @@ public class AptParser
         }
     }
 
+    /** A SSI Block. */
+    private class SSI
+        extends Block
+    {
+        /**
+         * Constructor.
+         *
+         * @param line the SSI directive.
+         * @throws AptParseException AptParseException
+         */
+        public SSI( String line )
+            throws AptParseException
+        {
+            super( SSI_BLOCK, 0, line );
+        }
+
+        /** {@inheritDoc} */
+        public void traverse()
+            throws AptParseException
+        {
+            AptParser.this.sink.ssi( text );
+        }
+    }
+
     /** A Verbatim Block. */
     private class Verbatim
         extends Block

Modified: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java?rev=1719483&r1=1719482&r2=1719483&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
 Fri Dec 11 18:01:19 2015
@@ -912,6 +912,15 @@ public class AptSink
 
     /**
      * {@inheritDoc}
+     * @since 1.7
+     */
+    public void ssi( final String directive )
+    {
+        rawText( ( startFlag ? "" : EOL ) + COMMENT + COMMENT + HASH + SPACE + 
directive );
+    }
+
+    /**
+     * {@inheritDoc}
      *
      * Unkown events just log a warning message but are ignored otherwise.
      * @see 
org.apache.maven.doxia.sink.Sink#unknown(String,Object[],SinkEventAttributes)

Modified: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptParserTest.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptParserTest.java?rev=1719483&r1=1719482&r2=1719483&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptParserTest.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptParserTest.java
 Fri Dec 11 18:01:19 2015
@@ -101,14 +101,20 @@ public class AptParserTest
         assertTrue( macro.indexOf( "<modelVersion\\>4.0.0\\</modelVersion\\>" 
) != -1 );
     }
 
-    /** @throws Exception  */
+    /** @throws Exception */
     public void testCommentsBeforeTitle()
         throws Exception
     {
         String comments = parseFileToAptSink( "test/comments" );
 
-        assertEquals( 0, comments.indexOf( "~~ comments before title" + EOL + 
"~~ like a license header, for example"
-            + EOL + " -----" + EOL + " Test DOXIA-379" ) );
+        assertEquals( 0, comments.indexOf( "~~ " + EOL
+                                               + "~~ comments before title" + 
EOL
+                                               + "~~ like a license header, 
for example" + EOL
+                                               + "~~# " + EOL
+                                               + "~~# echo var=\"code\"" + EOL
+                                               + " -----" + EOL
+                                               + " Test DOXIA-379" ) );
+
     }
 
     /** @throws Exception  */

Modified: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/resources/test/comments.apt
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/resources/test/comments.apt?rev=1719483&r1=1719482&r2=1719483&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/resources/test/comments.apt
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/resources/test/comments.apt
 Fri Dec 11 18:01:19 2015
@@ -1,5 +1,8 @@
+~~
 ~~ comments before title
 ~~ like a license header, for example
+~~#
+~~# echo var="code"
  -----
  Test DOXIA-379
  -----

Modified: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookSink.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookSink.java?rev=1719483&r1=1719482&r2=1719483&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookSink.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookSink.java
 Fri Dec 11 18:01:19 2015
@@ -1589,6 +1589,21 @@ public class DocBookSink
 
     /**
      * {@inheritDoc}
+     * @since 1.7
+     */
+    public void ssi( final String directive )
+    {
+        final StringBuilder buf = new StringBuilder( directive.length() + 10 );
+
+        buf.append( LESS_THAN ).append( BANG ).append( MINUS ).append( MINUS 
).append( HASH ).append( SPACE );
+        buf.append( directive );
+        buf.append( SPACE ).append( MINUS ).append( MINUS ).append( 
GREATER_THAN );
+
+        write( buf.toString() );
+    }
+
+    /**
+     * {@inheritDoc}
      *
      * Unknown events just log a warning message but are ignored otherwise.
      * @see 
org.apache.maven.doxia.sink.Sink#unknown(String,Object[],SinkEventAttributes)

Modified: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java?rev=1719483&r1=1719482&r2=1719483&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java
 Fri Dec 11 18:01:19 2015
@@ -408,6 +408,26 @@ public class FmlParser
         }
     }
 
+    /**
+     * {@inheritDoc}
+     * @sine 1.7
+     */
+    protected void handleSsi( XmlPullParser parser, Sink sink )
+        throws XmlPullParserException
+    {
+        final String directive = parser.getText().trim().substring( 1 );
+
+        if ( buffer != null )
+        {
+            buffer.append( LESS_THAN ).append( BANG ).append( MINUS ).append( 
MINUS ).append( HASH ).append( SPACE )
+                .append( directive ).append( SPACE ).append( MINUS ).append( 
MINUS ).append( GREATER_THAN );
+        }
+        else
+        {
+            sink.ssi( directive );
+        }
+    }
+
     /** {@inheritDoc} */
     protected void handleEntity( XmlPullParser parser, Sink sink )
         throws XmlPullParserException

Modified: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java?rev=1719483&r1=1719482&r2=1719483&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java
 Fri Dec 11 18:01:19 2015
@@ -1393,6 +1393,21 @@ public class FoSink
     }
 
     /**
+     * {@inheritDoc}
+     * @since 1.7
+     */
+    public void ssi( final String directive )
+    {
+        final StringBuilder buf = new StringBuilder( directive.length() + 10 );
+
+        buf.append( LESS_THAN ).append( BANG ).append( MINUS ).append( MINUS 
).append( HASH ).append( SPACE );
+        buf.append( directive );
+        buf.append( SPACE ).append( MINUS ).append( MINUS ).append( 
GREATER_THAN );
+
+        write( buf.toString() );
+    }
+
+    /**
      * Writes the beginning of a FO document.
      */
     public void beginDocument()

Modified: 
maven/doxia/doxia/trunk/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java?rev=1719483&r1=1719482&r2=1719483&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java
 Fri Dec 11 18:01:19 2015
@@ -1345,6 +1345,14 @@ public interface Sink
     void comment( String comment );
 
     /**
+     * Add a SSI directive.
+     *
+     * @param directive The directive to write.
+     * @since 1.7
+     */
+    void ssi( String directive );
+
+    /**
      * Add an unknown event. This may be used by parsers to notify a general 
Sink about
      * an event that doesn't fit into any event defined by the Sink API.
      * Depending on the parameters, a Sink may decide whether or not to 
process the event,


Reply via email to