private List<Resource> sanitize(Resource[] resources) throws IOException {
		List<Resource> filtered = new ArrayList<>();

		for (Resource resource : resources) {
			// Sanitize file paths (and force use of FSR, which is WritableResource)
			if (resource instanceof UrlResource && resource.getURL().getProtocol().equals("file")
					|| resource instanceof FileSystemResource) {
				resource = new FileSystemResource(resource.getFile().getCanonicalFile());
			}

			String fileName = resource.getFilename();
			if (!fileName.startsWith(".") &&
					(!fileName.contains(".") ||
							fileName.endsWith(ARCHIVE_AS_FILE_EXTENSION) ||
							fileName.endsWith(HASH_EXTENSION))) {
				filtered.add(resource);
			}
		}
		return filtered;
	}
Whether to require the presence of a hash file for archives. Helps preventing half-uploaded archives from being
picked up.
spring-xd-dirt/src/main/java/org/springframework/xd/dirt/module/ResourceModuleRegistry.java