/* * ==================================================================== * 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.Collection; 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.SVNMergeInfoInheritance; 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.util.SVNLogType; /** * @author TMate Software Ltd. * @version 1.2.0 */ public class DAVMergeInfoRequest extends DAVRequest { private static final DAVElement INHERIT = DAVElement.getElement(DAVElement.SVN_NAMESPACE, "inherit"); long myRevision = DAVResource.INVALID_REVISION; SVNMergeInfoInheritance myInherit = SVNMergeInfoInheritance.EXPLICIT; String[] myTargetPaths = null; public long getRevision() { return myRevision; } private void setRevision(long revision) { myRevision = revision; } public SVNMergeInfoInheritance getInherit() { return myInherit; } private void setInherit(SVNMergeInfoInheritance inherit) { myInherit = inherit; } public String[] getTargetPaths() { return myTargetPaths; } private void setTargetPaths(String[] targetPaths) { myTargetPaths = targetPaths; } protected void init() throws SVNException { List children = getRootElement().getChildren(); for (Iterator iterator = children.iterator(); iterator.hasNext();) { DAVElementProperty property = (DAVElementProperty) iterator.next(); DAVElement element = property.getName(); if (element == DAVElement.REVISION) { 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 == INHERIT) { setInherit(parseInheritance(property.getFirstValue(true))); if (getInherit() == null) { invalidXML(); } } else if (element == DAVElement.PATH) { Collection paths = property.getValues(); String[] targetPaths = new String[paths.size()]; targetPaths = (String[]) paths.toArray(targetPaths); setTargetPaths(targetPaths); } } } private SVNMergeInfoInheritance parseInheritance(String inheritance) { if (SVNMergeInfoInheritance.EXPLICIT.toString().equals(inheritance)) { return SVNMergeInfoInheritance.EXPLICIT; } else if (SVNMergeInfoInheritance.INHERITED.toString().equals(inheritance)) { return SVNMergeInfoInheritance.INHERITED; } else if (SVNMergeInfoInheritance.NEAREST_ANCESTOR.toString().equals(inheritance)) { return SVNMergeInfoInheritance.NEAREST_ANCESTOR; } return null; } }