Hello devs

While building the PPTX according to your code in XSSF and XWPT, I stumbled accross a problem with the recursive loading in the POIXMLDocumentPart.

While Word and Spreadsheet do not have any loops in their relations, Powerpoint defines a lot of vice-versa relationships. Example: the SlideMaster has relations to its SlideLayouts, while the SlideLayouts have a relation to their SlideMaster. The POIXMLDocument.read implementation in beta6 says: go and load your stuff (with the factory), then check your relations. If you have any, go down and load them too. As PPTX defines SlideMaster and SlideLayout , which reference each other, this ends up in a endless loop.

My proposal:
Let the POIXMLDocument manage the link between a PackagePart and its POIXMLDocumentPart element. When reading the POIXMLDocument, traverse the relations, but instatiate new POIXMLDocumentPart objects only once per PackagePart. If it already available, do nothing and return the object which is already linked to this PackagePart. As the POIXMLDocument is on the same hierarchy as the OPCPackage, as it is the single root element from that package. And the POIXMLDocumentParts are on par with PackageParts, so the hierarchy maps and the object lifecycles are congruent.

Hope I was able to describe the problem. :)

Kind regards,
Stefan Stern

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to