You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jackrabbit.apache.org by gohilumesh <go...@hotmail.com> on 2011/01/14 17:34:02 UTC

WebDav -- Updating file fails from MAC -- Please Help

Hi ,
 
I am trying to update a file from mac using jackrabbit. But it always fails.
When I see the memberName it says .dat085.2  something. And when trying  to
get data it give empty array. So my application break. This works from
windows
 
I am using latest version of Jack rabbit 2.2.1 , Tomcat server 
 
Below is my code : Any help appreciated Thanks in advance
 
public void addMember(DavResource member, InputContext inputContext) throws
DavException {
		if (!exists()) {
			throw new DavException(HttpServletResponse.SC_CONFLICT);
		}
		if (isLocked(this) || isLocked(member)) {
			throw new DavException(DavServletResponse.SC_LOCKED);
		}
		if (!document.isFolder()) {
			// TODO convert all exceptions to DavException?
			throw new RuntimeException("Can only add members to folders");
		}
 
		DocumentRepository documentRepository =
ServiceLocator.getDocumentRepository();
		String memberName =
StringUtils.substringAfterLast(member.getLocator().getRepositoryPath(),
"/");
 
		if (member.isCollection()) {
			// create folder
			documentRepository.createSubFolder(memberName, document);
		} else {
 
			// read file data
			byte[] data;
			try {
				data = IOUtils.toByteArray(inputContext.getInputStream());
			} catch (IOException e) {
				throw new RuntimeException(e);
			}
 
			// check if file exists or if this is a new file
			if (member.exists() || !document.isNewEntity()) {
				// we've already tested if isLocked(member) above, so we know it's not
checked out by another user
				// TODO there's a small window where another user could lock this
between test above
				// (probably not worth dealing with, but worth documenting here or
catching optimistic lock error?)
				boolean wasCheckedOut = true;
				if (((DavResourceImpl) member).document.getCheckedOutBy() == null) {
					wasCheckedOut = false; // When a new file is moved into a dav folder
					documentRepository.checkOut(((DavResourceImpl) member).document);
				}
				//Check-in the changes
				documentRepository.checkIn(((DavResourceImpl) member).document, data,
"Webdav Check-in");
 
				//Keep document checkedout, only if it was checked out before
				//Fix for defect 082710-35767
				if (wasCheckedOut) {
					documentRepository.checkOut(((DavResourceImpl) member).document);
				}
 
			} else {
				String fileExtension = StringUtils.substringAfterLast(memberName, ".");
				Document newDocument = DocumentFactory.newFile(memberName,
fileExtension, data, document);
				//Document newDocument = DocumentFactory.newFile(memberName,
documentContentType.getFileExtension(), data, document);
				documentRepository.insertDocument(newDocument);
			}
 
		}
	}
-- 
View this message in context: http://jackrabbit.510166.n4.nabble.com/WebDav-Updating-file-fails-from-MAC-Please-Help-tp3217987p3217987.html
Sent from the Jackrabbit - Users mailing list archive at Nabble.com.