code: @Override
      public CFolderContent listFolder( final CPath cpath )
              throws CStorageException
      {
          CMFolder cmRoot = loadFoldersStructure();
          CMFolder cmFolder = cmRoot.getFolder( cpath );
  
          if ( cmFolder == null ) {
  
              CMFolder cmParentFolder = cmRoot.getFolder( cpath.getParent() );
  
              if ( cmParentFolder != null ) {
                  CMBlob cmBlob;
  
                  try {
                      cmBlob = getBlobByName( cmParentFolder, cpath.getBaseName() );
                  } catch ( ParseException e ) {
                      throw new CStorageException( "Can't parse blob at " + cpath, e );
                  }
  
                  if ( cmBlob != null ) {
                      throw new CInvalidFileTypeException( cpath, false );
                  }
              }
  
              return null;
          }
  
          List<CMBlob> cmBlobs = null;
  
          try {
              cmBlobs = listBlobs( cmFolder );
          } catch ( ParseException e ) {
              throw new CStorageException( e.getMessage(), e );
          }
  
          Map<CPath, CFile> map = new HashMap<CPath, CFile>();
  
          // Adding folders
          for ( CMFolder childFolder : cmFolder ) {
              CFile cFile = childFolder.toCFolder();
              map.put( cFile.getPath(), cFile );
          }
  
          // Adding blobs
          for ( CMBlob cmBLob : cmBlobs ) {
              CBlob cBlob = cmBLob.toCBlob();
              map.put( cBlob.getPath(), cBlob );
          }
  
          return new CFolderContent( map );
      }
docs: There are 3 main steps to list a folder: - generate the tree view of CloudMe storage - list all the subfolders -
  list all the blobs
  
  @param cpath
  @return CFolderContent
  @throws CStorageException