@Override public final void onInit() { Assert.state(this.remoteDirectoryExpression != null, "'remoteDirectoryExpression' must not be null"); doInit(); }
@Override protected Object doReceive(int maxFetchSize) { return doReceive(); }
/** * Set the filter to be applied to the remote files before transferring. * @param filter the file list filter. */ public void setFilter(FileListFilter<F> filter) { doSetFilter(filter); }
private void listFiles() { String remoteDirectory = this.remoteDirectoryExpression.getValue(getEvaluationContext(), String.class); F[] files = this.remoteFileTemplate.list(remoteDirectory); if (!ObjectUtils.isEmpty(files)) { files = FileUtils.purgeUnwantedElements(files, f -> f == null || isDirectory(f), this.comparator); } if (!ObjectUtils.isEmpty(files)) { int maxFetchSize = getMaxFetchSize(); List<F> filteredFiles = this.filter == null ? Arrays.asList(files) : this.filter.filterFiles(files); if (maxFetchSize > 0 && filteredFiles.size() > maxFetchSize) { rollbackFromFileToListEnd(filteredFiles, filteredFiles.get(maxFetchSize)); List<F> newList = new ArrayList<>(maxFetchSize); for (int i = 0; i < maxFetchSize; i++) { newList.add(filteredFiles.get(i)); } filteredFiles = newList; } List<AbstractFileInfo<F>> fileInfoList = asFileInfoList(filteredFiles); fileInfoList.forEach(fi -> fi.setRemoteDirectory(remoteDirectory)); this.toBeReceived.addAll(fileInfoList); } }
@Override protected Object doReceive() { AbstractFileInfo<F> file = poll(); if (file != null) { String remotePath = remotePath(file); Session<?> session = this.remoteFileTemplate.getSession(); try { return getMessageBuilderFactory() .withPayload(session.readRaw(remotePath)) .setHeader(IntegrationMessageHeaderAccessor.CLOSEABLE_RESOURCE, session) .setHeader(FileHeaders.REMOTE_DIRECTORY, file.getRemoteDirectory()) .setHeader(FileHeaders.REMOTE_FILE, file.getFilename()) .setHeader(FileHeaders.REMOTE_FILE_INFO, this.fileInfoJson ? file.toJson() : file); } catch (IOException e) { throw new MessagingException("IOException when retrieving " + remotePath, e); } } return null; }
@Override protected AbstractFileInfo<S3ObjectSummary> poll() { AbstractFileInfo<S3ObjectSummary> file = super.poll(); if (file != null) { S3Session s3Session = (S3Session) getRemoteFileTemplate().getSession(); file.setRemoteDirectory(s3Session.normalizeBucketName(file.getRemoteDirectory())); } return file; }
@Override protected AbstractFileInfo<S3ObjectSummary> poll() { AbstractFileInfo<S3ObjectSummary> file = super.poll(); if (file != null) { S3Session s3Session = (S3Session) getRemoteFileTemplate().getSession(); file.setRemoteDirectory(s3Session.normalizeBucketName(file.getRemoteDirectory())); } return file; }