/** * Method responsible for adding content files to underlying Infinispan cache. It will add given * content file(s) for given merchant store in the cache. Following steps will be performed in * order to add files * * <pre> * 1. Validate form data * 2. Get Merchant Store based on merchant Id. * 3. Call {@link InputContentFile} to add file(s). * </pre> * * @param contentImages * @param bindingResult * @param model * @param request * @return * @throws Exception */ @PreAuthorize("hasRole('CONTENT')") @RequestMapping(value = "/admin/content/static/saveFiles.html", method = RequestMethod.POST) public String saveFiles( @ModelAttribute(value = "contentFiles") @Valid final ContentFiles contentFiles, final BindingResult bindingResult, final Model model, final HttpServletRequest request) throws Exception { this.setMenu(model, request); if (bindingResult.hasErrors()) { LOGGER.info("Found {} Validation errors", bindingResult.getErrorCount()); return ControllerConstants.Tiles.ContentFiles.contentFiles; } final List<InputContentFile> contentFilesList = new ArrayList<InputContentFile>(); final MerchantStore store = (MerchantStore) request.getAttribute(Constants.ADMIN_STORE); if (CollectionUtils.isNotEmpty(contentFiles.getFile())) { LOGGER.info( "Saving {} content files for merchant {}", contentFiles.getFile().size(), store.getId()); for (final MultipartFile multipartFile : contentFiles.getFile()) { if (!multipartFile.isEmpty()) { ByteArrayInputStream inputStream = new ByteArrayInputStream(multipartFile.getBytes()); InputContentFile cmsContentImage = new InputContentFile(); cmsContentImage.setFileName(multipartFile.getOriginalFilename()); cmsContentImage.setFileContentType(FileContentType.STATIC_FILE); cmsContentImage.setFile(inputStream); contentFilesList.add(cmsContentImage); } } if (CollectionUtils.isNotEmpty(contentFilesList)) { contentService.addContentFiles(store.getCode(), contentFilesList); } else { // show error message on UI } } return ControllerConstants.Tiles.ContentFiles.contentFiles; }