/** it's called in cycle and when base image 0 doesn't exists than there is forewer loop. */
 private FileResponse getNoImageStream(ResizeRequest request) throws IOException {
   String extension = noImage.getExtension();
   if (extension == null) {
     extension = getFileExtension(noImage.getIdFile());
     if (extension == null) {
       throw new IOException("NoImage is not defined");
     }
   }
   FileDescriptor descriptor =
       new FileDescriptor(noImage.getIdFile(), request.getCode(), extension);
   if (isExists(descriptor)) {
     File file = getFileForDescription(descriptor);
     return new FileResponse(noImage.getIdFile(), file, extension, getContentType(extension));
   } else {
     FileDescriptor mainFile = new FileDescriptor(noImage.getIdFile(), null, extension);
     if (isExists(mainFile)) {
       // try to resize original image
       OutputStream os = getFileWithSameExtensionAsMain(noImage.getIdFile(), request.getCode());
       getImageResizer().resize(getFileForId(noImage.getIdFile(), ""), os, request);
       os.close();
       if (!isExists(descriptor)) {
         // load default image
         logger.debug("file " + descriptor + " wasn't found, default will be loaded");
         throw new IOException("NoImage is not defined");
       }
       File file = getFileForDescription(descriptor);
       return new FileResponse(noImage.getIdFile(), file, extension, getContentType(extension));
     } else {
       // load default image
       logger.debug("file " + descriptor + " wasn't found, default will be loaded");
       throw new IOException("NoImage is not defined");
     }
   }
 }
 @Override
 public FileResponse getImage(ImageRequest imageRequest) throws IOException {
   FileResponse out =
       getImageStream(imageRequest.getIdImage(), imageRequest.getExtension(), imageRequest);
   if (out.getIdFile() == noImage.getIdFile() && imageRequest.getExtension() != null) {
     /** Image wasn't found with extension. Let's try it again without extension. */
     ImageRequest copy = new ImageRequest(imageRequest.getIdImage());
     copy.setWidth(imageRequest.getWidth());
     copy.setHeight(imageRequest.getHeight());
     copy.setKeepAspectRatio(imageRequest.isKeepAspectRatio());
     out = getImageStream(imageRequest.getIdImage(), null, copy);
     if (out.getIdFile() != noImage.getIdFile()) {
       logger.warn(
           "image '"
               + imageRequest.getIdImage()
               + "' should have extension '"
               + out.getExtension()
               + "' instead of '"
               + imageRequest.getExtension()
               + "'");
     }
   }
   return out;
 }