/*
* ====================================================================
* Copyright (c) 2004-2008 TMate Software Ltd. All rights reserved.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at http://svnkit.com/license.html.
* If newer versions of this license are posted there, you may use a
* newer version instead, at your option.
* ====================================================================
*/
package org.tmatesoft.svn.core.internal.server.dav.handlers;
import java.util.Iterator;
import java.util.List;
import org.tmatesoft.svn.core.SVNErrorCode;
import org.tmatesoft.svn.core.SVNErrorMessage;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.internal.io.dav.DAVElement;
import org.tmatesoft.svn.core.internal.server.dav.DAVResource;
import org.tmatesoft.svn.core.internal.wc.SVNErrorManager;
import org.tmatesoft.svn.core.wc.SVNRevision;
import org.tmatesoft.svn.util.SVNLogType;
/**
* @author TMate Software Ltd.
* @version 1.2.0
*/
public class DAVReplayRequest extends DAVRequest {
private static final DAVElement EDITOR_REPORT = DAVElement.getElement(DAVElement.SVN_NAMESPACE, "editor-report");
private static final DAVElement LOW_WATER_MARK = DAVElement.getElement(DAVElement.SVN_NAMESPACE, "low-water-mark");
private static final DAVElement SEND_DELTAS = DAVElement.getElement(DAVElement.SVN_NAMESPACE, "send-deltas");
boolean myIsSendDeltas = true;
long myLowRevision = DAVResource.INVALID_REVISION;
long myRevision = DAVResource.INVALID_REVISION;
public boolean isSendDeltas() {
return myIsSendDeltas;
}
private void setSendDeltas(boolean isSendDelta) {
myIsSendDeltas = isSendDelta;
}
public long getLowRevision() {
return myLowRevision;
}
private void setLowRevision(long lowRevision) {
myLowRevision = lowRevision;
}
public long getRevision() {
return myRevision;
}
private void setRevision(long revision) {
myRevision = revision;
}
protected void init() throws SVNException {
DAVElementProperty rootElement = getRootElement();
rootElement.setElementName(EDITOR_REPORT);
List children = rootElement.getChildren();
for (Iterator iterator = children.iterator(); iterator.hasNext();) {
DAVElementProperty property = (DAVElementProperty) iterator.next();
DAVElement element = property.getName();
if (element == DAVElement.REVISION) {
assertNullCData(element, property);
try {
setRevision(Long.parseLong(property.getFirstValue(true)));
} catch (NumberFormatException nfe) {
SVNErrorManager.error(SVNErrorMessage.create(SVNErrorCode.RA_DAV_REQUEST_FAILED, nfe), SVNLogType.NETWORK);
}
} else if (element == LOW_WATER_MARK) {
assertNullCData(element, property);
try {
setLowRevision(Long.parseLong(property.getFirstValue(true)));
} catch (NumberFormatException nfe) {
SVNErrorManager.error(SVNErrorMessage.create(SVNErrorCode.RA_DAV_REQUEST_FAILED, nfe), SVNLogType.NETWORK);
}
} else if (element == SEND_DELTAS) {
assertNullCData(element, property);
int sendDeltas = Integer.parseInt(property.getFirstValue(true));
setSendDeltas(sendDeltas != 0);
}
}
if (!SVNRevision.isValidRevisionNumber(getRevision())) {
SVNErrorManager.error(SVNErrorMessage.create(SVNErrorCode.RA_DAV_REQUEST_FAILED, "Request was missing the revision argument."), SVNLogType.NETWORK);
}
if (!SVNRevision.isValidRevisionNumber(getLowRevision())) {
SVNErrorManager.error(SVNErrorMessage.create(SVNErrorCode.RA_DAV_REQUEST_FAILED, "Request was missing the low-water-mark argument."), SVNLogType.NETWORK);
}
}
}