Код: Выделить всё
public class ImageService {
public ImageService() {
}
public List getBufferedImages(List imageBytesArrays) {
return imageBytesArrays.parallelStream()
.map(bytes -> {
try {
return getBufferedImageOrThrow(bytes);
} catch (IOException e) {
throw new RuntimeException(e);
}
})
.collect(Collectors.toList());
}
public BufferedImage getBufferedImageOrThrow(byte[] imageAsByteArray) throws IOException {
try (ByteArrayInputStream imageAsInputStream = new ByteArrayInputStream(imageAsByteArray)) {
BufferedImage bufferedImage = ImageIO.read(imageAsInputStream);
if (bufferedImage == null) {
throw new IOException("Failed to create BufferedImage object from image");
}
return bufferedImage;
}
}
Код: Выделить всё
@ExtendWith(MockitoExtension.class)
public class ImageServiceTest {
private static final Object lock = new Object();
@Test
void shouldHandleImagesWithParallelStream() {
try (MockedStatic imageIOMockedStatic = mockStatic(ImageIO.class)) {
imageIOMockedStatic
.when(() -> ImageIO.read(any(ByteArrayInputStream.class)))
.thenAnswer(invocation -> {
synchronized (lock) {
return new BufferedImage(10, 10, 1);
}
});
List imageBytesArrays = getTestBytesArrays();
ImageService imageService = new ImageService();
List bufferedImages = imageService.getBufferedImages(imageBytesArrays);
bufferedImages.forEach(Assertions::assertNotNull);
}
}
private List getTestBytesArrays() {
List imageBytesArrays = new ArrayList();
imageBytesArrays.add(new byte[]{1, 2, 3});
imageBytesArrays.add(new byte[]{4, 5, 6});
imageBytesArrays.add(new byte[]{7, 8, 9});
imageBytesArrays.add(new byte[]{10, 11, 12});
imageBytesArrays.add(new byte[]{13, 14, 15});
imageBytesArrays.add(new byte[]{16, 17, 18});
return imageBytesArrays;
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... el-streams