2009/12/14 Maurizio Pillitu <[email protected]> > Thanks Jasha! > > Shall I copy/paste your code in my project and try it out? >
Yes please Jasha Joachimsthal [email protected] - [email protected] www.onehippo.com Amsterdam - Hippo B.V. Oosteinde 11 1017 WT Amsterdam +31(0)20-5224466 San Francisco - Hippo USA Inc. 185 H Street, suite B, Petaluma CA 94952 +1 (707) 7734646 > > On Mon, Dec 14, 2009 at 3:49 PM, Jasha Joachimsthal < > [email protected]> wrote: > > > 2009/12/14 Maurizio Pillitu <[email protected]> > > > > > Hi everyone, > > > I was following the HST1 tutorial on how to upload content > > > > > > > > > > > > http://hst.hippocms.org/technical-documentation/building-a-JSP-front-end/examples/user-generated/comments.html > > > > > > It seems fairly easy, but I'm missing the mentioned classes: > > > > > > import nl.hippo.client.api.upload.WebdavUploadable; > > > > > > import nl.hippo.client.api.upload.UploadContext; > > > > > > > > Hmm I guess we've documented this feature before even adding it to the > HST > > ;-) > > I found some matching classes in a project: > > > > WebdavUploadable: > > package nl.hippo.client.api.upload; > > > > import java.io.InputStream; > > import nl.hippo.client.api.content.Property; > > > > public interface WebdavUploadable { > > /** > > * getInputStream() specifies how this WebdavUploadable generates an > > * InputStream. This is needed by the WebdavUploader to > > * put objects in the repository. > > * > > * @return a new InputStream > > */ > > public InputStream getInputStream(); > > /** > > * A WebdavUploadable document must be able to return it's document > > * type. This is needed in the uploading process for the CMS to > > * recognize it as a valid document. > > * > > * @return a document type > > */ > > public Property getDocumentType(); > > } > > > > > > > > UploadContext > > package nl.hippo.client.api.upload; > > > > import javax.servlet.http.HttpServletResponse; > > > > import org.apache.commons.logging.Log; > > import org.apache.commons.logging.LogFactory; > > > > import nl.hippo.client.api.ClientException; > > import nl.hippo.client.api.content.DocumentPath; > > import nl.hippo.client.api.service.WebdavService; > > import nl.hippo.client.webdav.WebdavConfig; > > import nl.hippo.client.webdav.service.WebdavServiceImpl; > > > > public abstract class UploadContext { > > private final static Log log = LogFactory.getLog(UploadContext.class); > > > > private WebdavService service; > > private DocumentPath rootFolder; > > private DocumentPath documentFolder; > > private DocumentPath documentTarget; > > private String[] folders; > > > > public UploadContext() { > > > > } > > > > /** > > * This constructor creates an UploadContext object with a > configuration > > * specified in the WebdavConfig object > > * > > * @param config contains the repository configuration > > */ > > public UploadContext(WebdavConfig config, String folder, String > > documentName) { > > service = getWebdavService(config); > > rootFolder = service.getBasePath(); > > documentFolder = service.getBasePath().createRelativePath(folder); > > documentTarget = service.getBasePath().createRelativePath(folder + > > documentName); > > folders = folder.split("/"); > > } > > > > /** > > * This constructor creates an UploadContext object with a > > * given webdav service > > * > > * @param webdav service to use for uploading > > */ > > public UploadContext(WebdavService webdavService, String folder, > String > > documentName) { > > service = webdavService; > > rootFolder = service.getBasePath(); > > documentFolder = service.getBasePath().createRelativePath(folder); > > documentTarget = service.getBasePath().createRelativePath(folder + > > documentName); > > folders = folder.split("/"); > > } > > > > public DocumentPath getRootFolder() { > > return rootFolder; > > } > > > > public DocumentPath getDocumentFolder() { > > return documentFolder; > > } > > > > public DocumentPath getDocumentTarget() { > > return documentTarget; > > } > > > > public WebdavService getWebdavService(WebdavConfig config) { > > return new WebdavServiceImpl(config); > > } > > > > public WebdavService getWebdavService() { > > return service; > > } > > > > public void createFolder(DocumentPath path) throws ClientException { > > service.executeMkCol(path); > > } > > > > public void createPath() throws ClientException { > > String path = ""; > > int i = 0; > > int index = 0; > > int repositoryResponseCode = 0; > > > > while (i < folders.length) { > > > > while (index < i) { > > // Get the folders that come before this one > > path += folders[index] + "/"; > > index++; > > } > > // Reset index > > index = 0; > > > > path += folders[i]; > > DocumentPath newPath = rootFolder.createRelativePath(path); > > int headResponse = 0; > > try { > > headResponse = service.executeHead(newPath); > > } catch(Exception e) { > > log.warn("Head: " + e.getLocalizedMessage()); > > } > > if( headResponse == HttpServletResponse.SC_NOT_FOUND || > > headResponse == 0 ) { > > repositoryResponseCode = service.executeMkCol(newPath); > > } else { > > log.info("Path " + path + " not created."); > > } > > > > if (repositoryResponseCode >= 400) { > > throw new ClientException("Couldn't create folder > structure > > '" + path + "'"); > > } > > // Reset path > > path = ""; > > i++; > > } > > } > > > > /** > > * This method creates a folder structure for a specific > > * application. Different implementations of the class may > > * use different folder structures. > > * > > * @param documentName is a documentName that the UploadContext > > * has to create a folder structure for. > > * > > * @return a String representing a folder structure. > > */ > > public abstract String createFolderStructure(String documentName); > > } > > ******************************************** > > Hippocms-dev: Hippo CMS development public mailinglist > > > > Searchable archives can be found at: > > MarkMail: http://hippocms-dev.markmail.org > > Nabble: http://www.nabble.com/Hippo-CMS-f26633.html > > > > > > > -- > > Met vriendelijke groet, > -- > Maurizio Pillitu - 0031 (0)615655668 > Opensource Software Engineer > Scrum Certified Master - http://www.scrumalliance.org > Sourcesense - making sense of Open Source: http://www.sourcesense.com > ******************************************** > Hippocms-dev: Hippo CMS development public mailinglist > > Searchable archives can be found at: > MarkMail: http://hippocms-dev.markmail.org > Nabble: http://www.nabble.com/Hippo-CMS-f26633.html > > ******************************************** Hippocms-dev: Hippo CMS development public mailinglist Searchable archives can be found at: MarkMail: http://hippocms-dev.markmail.org Nabble: http://www.nabble.com/Hippo-CMS-f26633.html
