Hi Ajit,
The current changes look fine,
In addition please check, if similar change is required when SampleModel is
MultiPixelPackedSampleModel in the same createWritableRaster() method.
Thanks,
Ambarish
From: Ajit Ghaisas
Sent: Monday, March 07, 2016 1:51 PM
To: [email protected]; Sergey Bylokhov; Semyon Sadetsky; Ambarish Rapte
Subject: [9] Review-request for 6353518: Creation of a WritableRaster with a
custom DataBuffer causes erroneous Exception
Hi,
Bug : https://bugs.openjdk.java.net/browse/JDK-6353518
Issue : (Text from bug description)
An attempt to create a WritableRaster via
Raster.createWritableRaster(SampleModel sm, DataBuffer db, Point location)
using a custom DataBuffer causes an erroneous RasterFormatException.
Apparently the reason for this bug is that IntegerComponentRaster insists on
being passed an instance of DataBufferInt rather than just a DataBuffer with a
DataType of TYPE_INT.
This is quite annoying since DataBufferInt is declared final and thus cannot be
extended.
Fix :
The last line of Raster.createWritableRaster() method already has a way to
handle generic case if the input does not match any of the cases in switch
statements in that method.
The fact that " *InterleavedRaster() constructors throw exception if
DataBuffer passed to them does not match the expected type" was ignored
earlier.
This fix adds a check of "DataBuffer type" before creating respective
*InterleavedRaster() objects.
It constructs the SunWritableRaster in case DataBuffer type does not match any
data specific DataBuffer classes (DataBufferByte, DataBufferUShort,
DataBufferInt)
Request to review webrev containing this fix :
http://cr.openjdk.java.net/~arapte/ajit/6353518/webrev.00/
Regards,
Ajit