} else {
if (sourceData.size() > maxCompressedDataLength) {
// Determine the best algorithm
COMPRESSOR_TYPE[] comps = COMPRESSOR_TYPE.getCompressorsArray(compressordescriptor, pre1254);
for (COMPRESSOR_TYPE comp : comps) {
ArrayBucket compressedData;
try {
compressedData = (ArrayBucket) comp.compress(
sourceData, new ArrayBucketFactory(), Long.MAX_VALUE, maxCompressedDataLength);
} catch (CompressionOutputSizeException e) {
continue;
}
if (compressedData.size() <= maxCompressedDataLength) {
compressionAlgorithm = comp.metadataID;
sourceLength = sourceData.size();
try {
cbuf = BucketTools.toByteArray(compressedData);
// FIXME provide a method in ArrayBucket