public PageSet<? extends StorageMetadata> list(String container, ListContainerOptions options) {
    List<StorageObjectMetadata> listFiles;
    try {
      String dir = options.getDir();
      if (dir != null) {
        listFiles = service.listFiles(container, dir, options.isRecursive());
      } else {
        listFiles = service.listFiles(container, "", options.isRecursive());
      }

      List<MutableStorageMetadata> jCloudsMetadata = new ArrayList<MutableStorageMetadata>();
      if (!listFiles.isEmpty()) {
        for (StorageObjectMetadata metadata : listFiles) {
          jCloudsMetadata.add(generateJcloudsMetadata(metadata));
        }
      } else {
        StorageObjectMetadata metadata = new StorageObjectMetadata();
        if (dir != null) metadata.setPathAndName(dir);
        metadata.setType(StorageObjectConstants.DIRECTORY_TYPE);
        jCloudsMetadata.add(generateJcloudsMetadata(metadata));
      }

      return new PageSetImpl<StorageMetadata>(jCloudsMetadata, null);
    } catch (MethodNotSupportedException e) {
      e.printStackTrace();
      return null;
    }
  }
 private MutableBlobMetadataImpl generateJcloudsMetadata(
     StorageObjectMetadata storageObjectMetadata) {
   MutableBlobMetadataImpl mutableBlobMetadataImpl = new MutableBlobMetadataImpl();
   mutableBlobMetadataImpl.setName(storageObjectMetadata.getPathAndName());
   if (storageObjectMetadata.isFile()) {
     mutableBlobMetadataImpl.setType(StorageType.BLOB);
   } else if (storageObjectMetadata.isDirectory()) {
     mutableBlobMetadataImpl.setType(StorageType.FOLDER);
   } else if (storageObjectMetadata.isContainer()) {
     mutableBlobMetadataImpl.setType(StorageType.CONTAINER);
   }
   mutableBlobMetadataImpl
       .getContentMetadata()
       .setContentLength(storageObjectMetadata.getLength());
   mutableBlobMetadataImpl.setLastModified(storageObjectMetadata.getLastModified());
   if (storageObjectMetadata.getMd5hash() != null) {
     mutableBlobMetadataImpl.setETag(storageObjectMetadata.getMd5hash());
   }
   return mutableBlobMetadataImpl;
 }