class WorkspaceFileSystem implements WorkspaceContentAddressableStorage {

    @Override
    public List<URI> getListUriDigitalObjectFromFolder(String containerName, String folderName)
        throws ContentAddressableStorageException {
        ParametersChecker.checkParameter(ErrorMessage.CONTAINER_NAME_IS_A_MANDATORY_PARAMETER.getMessage(),
            containerName);
        ParametersChecker.checkParameter(ErrorMessage.FOLDER_NOT_FOUND.getMessage(), folderName);
        if (!isExistingContainer(containerName)) {
            // retro-compatibility
            throw new ContentAddressableStorageNotFoundException("Container " + containerName + " not found");
        }
        if (!isExistingFolder(containerName, folderName)) {
            LOGGER.debug(ErrorMessage.FOLDER_NOT_FOUND.getMessage() + folderName);
            // TODO: ugly retro-compatibility !
            return new ArrayList<>();
        }

        try {
            Path folderPath = getFolderPath(containerName, folderName);

            final List<URI> list = new ArrayList<>();
            Files.walkFileTree(folderPath, new SimpleFileVisitor<Path>() {
                @Override
                public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
                    if (attrs.isDirectory()) {
                        return FileVisitResult.CONTINUE;
                    }
                    String pathFile = file.toString().replace(folderPath.toString() + "/", "");
                    list.add(URI.create(URLEncoder.encode(pathFile, CharsetUtils.UTF_8)));

                    return FileVisitResult.CONTINUE;
                }
            });
            return list;
        } catch (IOException ex) {
            throw new ContentAddressableStorageException(ex);
        }
    }

    public  WorkspaceFileSystem(StorageConfiguration configuration);

}