Bug 42386

Summary: NullPointerException when painting GraphicsNode onto Graphics2D impl with no associated DeviceConfiguration (i.e. SVGGraphics2D)
Product: Batik - Now in Jira Reporter: Thomas Behr <thomas.behr>
Component: GVTAssignee: Batik Developer's Mailing list <batik-dev>
Status: RESOLVED FIXED    
Severity: normal    
Priority: P2    
Version: 1.7   
Target Milestone: ---   
Hardware: All   
OS: All   
Bug Depends on:    
Bug Blocks: 42387    
Attachments: bug fix: added relevant null checking

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.