Hi Maoo, 2009/12/22 Maurizio Pillitu <[email protected]>: > Hi Jasha, > I'm still missing the WebdavUploader and the UploadException classes which > are mentioned in the following snippet from the sample > > try { > new WebdavUploader(context).upload(comment); > dispatch = request.getRequestDispatcher("succes.jsp"); > } catch(UploadException e) { > dispatch = request.getRequestDispatcher("failure.jsp"); > } > > Couldn't find them on SVN; could you point me to the right tag where I can > find these classes?
I guess they've never been in the public SVN. The snippets I posted were taken from a customer project. Do they work for you? Jasha > > Thanks! > > mau > > On Mon, Dec 14, 2009 at 4:01 PM, Jasha Joachimsthal < > [email protected]> wrote: > >> 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 >> >> > > > -- > > 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
