When creating a ReportDocument for example to extract data from a report or to store the documents bytes somewhere, BIRT API provides two ways. First is running 'ReportEngine.openReportDocument(String string)' with a string containing a file path. Second is running the method with A IDocArchiveReader object. Both ways are using files in the background. If however any file access is unwanted there is currently no simple way provided by API to do so.<br />
I've written a MemoryArchive Class (implements IDocArchiveWriter and IDocArchiveReader) that may be used for this purpose.<br />
<br />
I wrote an IDocArchiveReader and IDocArchiveWriter implementation that uses memory byte fields only to create a document. It passed all my tests. However, I cannot assure that everything works with it! Especially the listStreams:relativePath. String method remains untested since all my tests return an empty list here (also when using FolderArchive). So at this point I only return any stream that contains the relativePath without knowing if this is a correct behavior.<br />
<br />
The call is done like this:
MemoryArchive memoryArchive = new MemoryArchive();
runTask.run(memoryArchive);
Map<?, ?> properties = new HashMap<Object, Object>();
IReportDocument reportDocument = getReportEngine().openReportDocument(memoryArchive.getName(), memoryArchive, properties);
<br />
With this attached the source code. Do with it whatever you like. If you run into problems using it, or if it is just running fine, I would appreciate you feedback. Thank you!