private void writeAddEntryTag(boolean isDirectory, String path, String copyFromPath, long copyFromRevision) throws SVNException {
StringBuffer xmlBuffer = null;
String realPath = getRealPath(path);
if (isResourceWalk()) {
String resourcePath = getUpdateRequest().getTarget() == null || getUpdateRequest().getTarget().length() == 0 ?
path : SVNPathUtil.append(getUpdateRequest().getTarget(), SVNPathUtil.removeHead(path));
xmlBuffer = openResourceTag(resourcePath, xmlBuffer);
} else {
Map attrs = new SVNHashMap();
attrs.put(NAME_ATTR, SVNPathUtil.tail(path));
if (isDirectory) {
long createdRevision = DAVServletUtil.getSafeCreatedRevision(myRevisionRoot, realPath);
String bcURL = DAVPathUtil.buildURI(getDAVResource().getResourceURI().getContext(), DAVResourceKind.BASELINE_COLL, createdRevision, realPath, false);
attrs.put(BC_URL_ATTR, bcURL);
}
if (copyFromPath != null) {
attrs.put(COPYFROM_PATH_ATTR, copyFromPath);
attrs.put(COPYFROM_REVISION_ATTR, String.valueOf(copyFromRevision));
}
String tagName = isDirectory ? "add-directory" : "add-file";
xmlBuffer = SVNXMLUtil.openXMLTag(SVNXMLUtil.SVN_NAMESPACE_PREFIX, tagName, SVNXMLUtil.XML_STYLE_NORMAL, attrs, null);
}
addVersionURL(realPath, xmlBuffer);
if (isResourceWalk()) {
closeResourceTag(xmlBuffer);
}
write(xmlBuffer);
}