Bug 42386 - NullPointerException when painting GraphicsNode onto Graphics2D impl with no associated DeviceConfiguration (i.e. SVGGraphics2D)
NullPointerException when painting GraphicsNode onto Graphics2D impl with no ...
Status: RESOLVED FIXED
Product: Batik - Now in Jira
Classification: Unclassified
Component: GVT
1.7
All All
: P2 normal
: ---
Assigned To: Batik Developer's Mailing list
:
Depends on:
Blocks: 42387
  Show dependency tree
 
Reported: 2007-05-10 10:17 UTC by Thomas Behr
Modified: 2007-09-26 21:11 UTC (History)
0 users



Attachments
bug fix: added relevant null checking (61.82 KB, patch)
2007-05-10 10:22 UTC, Thomas Behr
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Thomas Behr 2007-05-10 10:17:44 UTC
When painting org.apache.batik.gvt.GraphicsNode uses utility class 
org.apache.batik.ext.awt.image.GraphicsUtil. This utility fails to check for 
null return values from Graphics2D.getDeviceConfiguration in at least two 
places.

Steps two reproduce:
Create a GraphicsNode from a SVGDocument, paint onto SVGGraphics2D (or any 
other Graphics2D impl whose getDeviceConfiguration returns null)


java.lang.NullPointerException
	at 
org.apache.batik.ext.awt.image.GraphicsUtil.getDestination(GraphicsUtil.java:498)
	at 
org.apache.batik.ext.awt.image.GraphicsUtil.getDestinationColorModel(GraphicsUtil.java:511)
	at 
org.apache.batik.ext.awt.image.GraphicsUtil.getDestinationColorSpace(GraphicsUtil.java:533)
	at 
org.apache.batik.ext.awt.image.GraphicsUtil.drawImage(GraphicsUtil.java:131)
	at 
org.apache.batik.ext.awt.image.GraphicsUtil.drawImage(GraphicsUtil.java:451)
	at 
org.apache.batik.gvt.AbstractGraphicsNode.paint(AbstractGraphicsNode.java:522)
	at 
org.apache.batik.gvt.CompositeGraphicsNode.primitivePaint(CompositeGraphicsNode.java:159)
	at 
org.apache.batik.gvt.AbstractGraphicsNode.paint(AbstractGraphicsNode.java:488)
	at 
org.apache.batik.gvt.CompositeGraphicsNode.primitivePaint(CompositeGraphicsNode.java:159)
	at 
org.apache.batik.gvt.CanvasGraphicsNode.primitivePaint(CanvasGraphicsNode.java:158)
	at 
org.apache.batik.gvt.AbstractGraphicsNode.paint(AbstractGraphicsNode.java:488)
	at 
org.apache.batik.gvt.CompositeGraphicsNode.primitivePaint(CompositeGraphicsNode.java:159)
	at 
org.apache.batik.gvt.AbstractGraphicsNode.paint(AbstractGraphicsNode.java:488)
Comment 1 Thomas Behr 2007-05-10 10:22:15 UTC
Created attachment 20163 [details]
bug fix: added relevant null checking

Although this fixes the NPE, it would probably be a good idea to change
SVGGraphics2D's implementation of getDeviceConfiguration
Comment 2 Cameron McCormack 2007-09-26 21:11:49 UTC
Hi Thomas.

Yes there should be checks in there, I think.  I'm not sure what behaviour makes
sense for a GraphicsConfiguration on SVGGraphics2D, since it doesn't work on a
raster image.  So for now I'll leave getDeviceConfiguration() returning null. 
I've added the null checks into GraphicsUtil.

BTW I met your colleague Michael Kaufmann last week when he was visiting us at
Monash Uni.