[OpenJDK 2D-Dev] [9] Review-request for 6353518: Creation of a WritableRaster with a custom DataBuffer causes erroneous Exception

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Thu Mar 10 12:48:10 UTC 2016


Hi, Ajit.
What about other cases in Raster.java, where the DataBuffer is passed as 
a parameter? Probably we can simplify the code and find all such issues 
if we changes the ByteInterleavedRaster/etc. For example:

ByteInterleavedRaster(SampleModel sampleModel,DataBuffer dataBuffer,...)
to

ByteInterleavedRaster(SampleModel sampleModel,DataBufferByte dataBuffer,...)

Because we throw an exception in such cases anyway:

if (!(dataBuffer instanceof DataBufferByte)) {
     throw new RasterFormatException("ByteInterleavedRasters must have " 
+ "byte DataBuffers");
}

And the compiler will help us, what everybody think about it?

On 09.03.16 17:38, Ajit Ghaisas wrote:
> Hi,
>
>     Modified the test and added check for MultiPixelPackedSampleModel condition.
>
>     Please review updated webrev :
>     http://cr.openjdk.java.net/~arapte/ajit/6353518/webrev.01/
>
> Regards,
> Ajit
>
> -----Original Message-----
> From: Sergey Bylokhov
> Sent: Wednesday, March 09, 2016 4:06 PM
> To: Ajit Ghaisas; awt-dev at openjdk.java.net; Semyon Sadetsky; Ambarish Rapte; 2d-dev
> Subject: Re: [9] Review-request for 6353518: Creation of a WritableRaster with a custom DataBuffer causes erroneous Exception
>
> Changes for 2d area.(cc)
>
>
> On 07.03.16 11:20, Ajit Ghaisas wrote:
>> 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
>>
>
>
> --
> Best regards, Sergey.
>


-- 
Best regards, Sergey.



More information about the 2d-dev mailing list