Creating new folders
Creating new folders (aka directories or collections) is done in Webdav by the MKCOL method, and is supported in milton with the MakeCollectionableResource interface which has a single method:
CollectionResource createCollection(String newName) throws NotAuthorizedException, ConflictException, BadRequestException;
So to be able to create Galaxies in our example project you would implement MakeCollectionableResource on RootUniverseResource like this:
public class RootUniverseResource extends AbstractResource implements MakeCollectionableResource { private static org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(RootUniverseResource.class); private final UniverseDao universeDao; private ArrayList<Resource> children; public RootUniverseResource(UniverseDao universeDao) { this.universeDao = universeDao; } @Override public CollectionResource createCollection(String newName) throws NotAuthorizedException, ConflictException, BadRequestException { UniverseDao.Galaxy s = universeDao.addGalaxy(newName); GalaxyResource r = new GalaxyResource(this, s); getChildren(); children.add(r); return r; }
Implement it in the same way on GalaxyResource and SolarSystemResource to allow all of our resources to be created.