public com.ettrema.httpclient.Folder getOrCreateFolder(Path remoteParentPath, boolean create)
     throws com.ettrema.httpclient.HttpException, IOException, NotAuthorizedException,
         ConflictException, BadRequestException, NotFoundException {
   log.trace("getOrCreateFolder: {}", remoteParentPath);
   com.ettrema.httpclient.Folder f = this;
   if (remoteParentPath != null) {
     for (String childName : remoteParentPath.getParts()) {
       if (childName.equals("_code")) {
         f = new Folder(f, childName, cache);
       } else {
         com.ettrema.httpclient.Resource child = f.child(childName);
         if (child == null) {
           if (create) {
             f = f.createFolder(childName);
           } else {
             return null;
           }
         } else if (child instanceof com.ettrema.httpclient.Folder) {
           f = (com.ettrema.httpclient.Folder) child;
         } else {
           log.warn(
               "Can't upload. A resource exists with the same name as a folder, but is a file: "
                   + remoteParentPath
                   + " - "
                   + child.getClass());
           return null;
         }
       }
     }
   }
   return f;
 }
 @Override
 public void delete() throws NotAuthorizedException, ConflictException, BadRequestException {
   try {
     folder.delete();
   } catch (NotFoundException ex) {
     return; // ok, not there to delete
   } catch (IOException ex) {
     throw new RuntimeException(ex);
   } catch (HttpException ex) {
     throw new RuntimeException(ex);
   }
 }
 @Override
 public com.bradmcevoy.http.Resource createNew(
     String newName, InputStream inputStream, Long length, String contentType)
     throws IOException, ConflictException, NotAuthorizedException, BadRequestException {
   try {
     File newFile = folder.upload(newName, inputStream, length, null);
     return new FileResourceAdapter(newFile, getSecurityManager(), getHostName(), remoteManager);
   } catch (HttpException ex) {
     throw new RuntimeException(ex);
   } catch (NotFoundException ex) {
     throw new RuntimeException(ex);
   }
 }
 @Override
 public CollectionResource createCollection(String newName)
     throws NotAuthorizedException, ConflictException, BadRequestException {
   Folder newRemoteFolder;
   try {
     newRemoteFolder = folder.createFolder(newName);
   } catch (IOException ex) {
     throw new RuntimeException(ex);
   } catch (NotFoundException ex) {
     throw new RuntimeException(ex);
   } catch (HttpException ex) {
     throw new RuntimeException(ex);
   }
   return new FolderResourceAdapter(
       newRemoteFolder, getSecurityManager(), newName, contentGenerator, remoteManager);
 }
 @Override
 public Date getCreateDate() {
   return folder.getCreatedDate();
 }