That's not a problem, I successfully created a class which extends
- Code: Select all
JaxbSmlPart<CTComments>
The code I'm using is :
- Code: Select all
Parts parts = pkg.getParts();
Part workSheet = parts.get( new PartName( "/xl/worksheets/sheet1.xml") );
RelationshipsPart wsRP = workSheet.getRelationshipsPart();
if( wsRP == null ){
wsRP = new RelationshipsPart();
workSheet.setRelationships( wsRP );
}
comments.setRelationshipType( "http://schema.openxmlformats.org/officeDocument/2006/relationships/comments" );
ContentTypeManager ctm = pkg.getContentTypeManager();
CTOverride ctOv = new CTOverride();
ctOv.setContentType( "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml" );
ctOv.setPartName( "/xl/comments.xml" );
URI uRI = null;
try
{
uRI = new URI("/xl/comments.xml");
}
catch (URISyntaxException e)
{
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
ctm.addOverrideContentType( uRI, ctOv);
Relationship rel = wsRP.addPart( comments, true, ctm ); // This is throwing the Null Pointer Exception
workSheet.addTargetPart( comments );
comments is an instance of my subclass of JaxbSmlPart<CTComments> (which just has the constuctor which takes a PartName).
The error I get is :
- Code: Select all
JAXB: Using Java 6 implementation.
java.lang.NullPointerException
at org.docx4j.openpackaging.parts.relationships.RelationshipsPart.addPart(RelationshipsPart.java:485)
at org.docx4j.openpackaging.parts.relationships.RelationshipsPart.addPart(RelationshipsPart.java:462)
at com.lmco.xslxout.EsSpreadSheet.save(EsSpreadSheet.java:153)
at com.lmco.ar.playground.CreateSpreadsheet.doCreate(CreateSpreadsheet.java:27)
at com.lmco.ar.playground.PlayGroundMain$4.actionPerformed(PlayGroundMain.java:125)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
I'm obviously missing something related to relationships but I'm not sure what. Could you please give me some pointers as to what to add or do differently?