The only occurence of UploadException is in the Cocoon version of the
project you're working on AFAICS.
I did find WebdavUploader.java:
package nl.hippo.client.api.upload;
import java.io.InputStream;
import nl.hippo.client.api.ClientException;
import nl.hippo.client.api.upload.WebdavUploadable;
import nl.hippo.client.api.upload.UploadContext;
import nl.hippo.client.api.content.DocumentPath;
import nl.hippo.client.api.service.WebdavService;
import nl.hippo.client.api.content.Property;
public class WebdavUploader {
private WebdavService service;
private UploadContext context;
public WebdavUploader(UploadContext context) {
service = context.getWebdavService();
this.context = context;
}
/**
* Upload a file to the repository
*
* @param path contains the DocumentPath to the target folder
*/
public synchronized boolean upload(WebdavUploadable document) {
int repositoryResponseCode = 0;
DocumentPath targetPath = context.getDocumentTarget();
try {
context.createPath();
InputStream stream = document.getInputStream();
repositoryResponseCode = service.executePut(targetPath,
stream);
if (repositoryResponseCode >= 400) {
throw new ClientException("Unable to create
document");
}
// Set the document type so the CMS knows how to handle
this document
Property[] propertiesToRemove = new Property[0];
Property[] propertiesToSet = {
document.getDocumentType() };
repositoryResponseCode =
service.executePropPatch(targetPath,
propertiesToRemove, propertiesToSet);
return true;
} catch (ClientException e) {
e.printStackTrace();
return false;
}
}
}
2009/12/28 Maurizio Pillitu <[email protected]>:
> Nope, because the two classes you posted me are used by a WebdavUploader
> class which is missing (and the exception that is generated,
> UploadException); could you find any reference to these classes somewhere?
> If not, which are the project references to the UploadContext object?
>
> Thx
> mau
>
> On Mon, Dec 28, 2009 at 8:57 AM, Jasha Joachimsthal <
> [email protected]> wrote:
>
>> 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
>>
>>
>
>
> --
>
> 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