[ http://jira.codehaus.org/browse/DOXIA-387?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=219098#action_219098 ]
Robert Scholte commented on DOXIA-387: -------------------------------------- I have to dive a bit more into this. It seems like a lot of files have been moved. First let me explain it with a concrete example. Although I need this for the dashboard-m-p, for the explanation the surefire-report-m-p will work as well. A surefire is divided into 3 sections: Summary, Package List and Test Cases. Every next section contains more detail than it's previous. Since you can only build the page from start to end, you have to iterate over all entries once per section. With the RandomAccessSink you only have to iterate once over these entries and directly write to it's specific sectionsink. Code would look like this: {code} //prepare RandomAccessSink structure RandomAccessSink baseSink = new RandomAccessSink(); //some arguments required here, at least a SinkFactory Sink summarySink = baseSink.addSink(); baseSink.horizontalRule(); // some divider-stuff Sink packageListSink= baseSink.addSink(); baseSink.horizontalRule(); // some divider-stuff Sink testCasesSink = baseSink.addSink(); //get packageList Iterator while ( packageListIter.hasNext() ) { writePackageList(packageListSink, packageListIter.next() ) //get testCases Iterator while ( testCasesIter.hasNext() ) { writeTestCases(testCasesSink , testCasesIter.next() ) } } {code} > Add RandomAccessSink > -------------------- > > Key: DOXIA-387 > URL: http://jira.codehaus.org/browse/DOXIA-387 > Project: Maven Doxia > Issue Type: New Feature > Components: Sink API > Affects Versions: 1.1.2 > Reporter: Robert Scholte > Priority: Minor > Attachments: randomaccesssink.patch > > > In some cases components have to write to different parts of a page. With the > current implementation you can only keep appending the page. > I've attached a new class, with which it should be possible to add subsinks > to which you can write at any time. > Code might look like this > {code} > baseSink.text("Hello World"); > Sink top = baseSink.addSink(); > baseSink.horizontalRule(); > Sink content = baseSink.addSink(); > baseSink.text("So long, farewell"); > {code} > After flushing the basesink, subsinks will flush to the basesink. > Closing the basesink will close al subsinks as well. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira