Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * ====================================================================
   * Copyright (c) 2004-2006 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.io.dav.handlers;
 
 

Author(s):
TMate Software Ltd.
Version:
1.1.0
 
 public class DAVReplayHandler extends DAVEditorHandler {
 
     protected static final DAVElement EDITOR_REPORT = DAVElement.getElement(."editor-report");
     protected static final DAVElement OPEN_ROOT = DAVElement.getElement(."open-root");
     protected static final DAVElement APPLY_TEXT_DELTA = DAVElement.getElement(."apply-textdelta");
     protected static final DAVElement CLOSE_FILE = DAVElement.getElement(."close-file");
     protected static final DAVElement CLOSE_DIRECTORY = DAVElement.getElement(."close-directory");
     protected static final DAVElement CHANGE_FILE_PROPERTY = DAVElement.getElement(."change-file-prop");
     protected static final DAVElement CHANGE_DIR_PROPERTY = DAVElement.getElement(."change-dir-prop");
 
     protected static final String CHECKSUM_ATTR = "checksum";
     protected static final String DEL_ATTR = "del";
 
     public DAVReplayHandler(ISVNEditor editorboolean fetchContent) {
         super(editorfetchContent);
     }
     
     protected String getCurrentPath() {
         return null;
     }
 
     protected ISVNDeltaConsumer getDeltaConsumer() {
         return ;
     }
 
     protected void startElement(DAVElement parentDAVElement elementAttributes attrsthrows SVNException {
         if (element == ) {
             String rev = attrs.getValue();
             if (rev == null) {
                 SVNErrorMessage err = SVNErrorMessage.create(."Missing revision attr in target-revision element");
                 SVNErrorManager.error(err);
             } else {
                 .targetRevision(Long.parseLong(rev));
             }
         } else if (element == ) {
             String rev = attrs.getValue();
             if (rev == null) {
                 SVNErrorMessage err = SVNErrorMessage.create(."Missing revision attr in open-root element");
                 SVNErrorManager.error(err);
             } else {
                 .openRoot(Long.parseLong(rev));
                  = "";
                  = true;
             }            
         } else if (element == ) {
             String path = attrs.getValue();
             String rev = attrs.getValue();
             if (path == null) {
                 SVNErrorMessage err = SVNErrorMessage.create(."Missing name attr in delete-entry element");
                 SVNErrorManager.error(err);
             } else if (rev == null) {
                 SVNErrorMessage err = SVNErrorMessage.create(."Missing rev attr in delete-entry element");
                 SVNErrorManager.error(err);
             } else {
                 .deleteEntry(path, Long.parseLong(rev));
             }
         } else if (element ==  || element == ) {
             String path = attrs.getValue();
             String rev = attrs.getValue();
             
             if (path == null) {
                 SVNErrorMessage err = SVNErrorMessage.create(."Missing name attr in " + (element ==  ? "open-directory" : "add-directory") + " element");
                 SVNErrorManager.error(err);
             } else {
                 long revision = rev != null ? Long.parseLong(rev) : -1;
                 if (element == ) {
                     .openDir(pathrevision);
                 } else {
                     String copyFromPath = attrs.getValue();
                    String cfRevision = attrs.getValue();
                    long copyFromRevision = cfRevision != null ? Long.parseLong(cfRevision) : -1;
                    .addDir(pathcopyFromPathcopyFromRevision);
                }
            }
             = path;
             = true;
        } else if (element ==  || element == ) {
            String path = attrs.getValue();
            if (path == null) {
                SVNErrorMessage err = SVNErrorMessage.create(."Missing name attr in " + (element ==  ? "open-file" : "add-file") + " element");
                SVNErrorManager.error(err);
            }
            
            if (element == ) {
                String copyFromPath = attrs.getValue();
                String cfRevision = attrs.getValue();
                long copyFromRevision = cfRevision != null ? Long.parseLong(cfRevision) : -1;
                .addFile(pathcopyFromPathcopyFromRevision);
            } else {
                String rev = attrs.getValue();
                long revision = rev != null ? Long.parseLong(rev) : -1;
                .openFile(pathrevision);
            }
             = false;
             = path;
        } else if (element == ) {
            if () {
                SVNErrorMessage err = SVNErrorMessage.create(."Got apply-textdelta element without preceding add-file or open-file");
                SVNErrorManager.error(err);
            }
            
            String checksum = attrs.getValue();
            try {
                .applyTextDelta(checksum);
                setDeltaProcessing(true);
            } catch (SVNException svne) {
                //
            }
        } else if (element == ) {
            if () {
                SVNErrorMessage err = SVNErrorMessage.create(."Got close-file element without preceding add-file or open-file");
                SVNErrorManager.error(err);
            } else {
                .closeFile(null);
                 = true;
            }
        } else if (element == ) {
            if (!) {
                SVNErrorMessage err = SVNErrorMessage.create(."Got close-directory element without ever opening a directory");
                SVNErrorManager.error(err);
            } else {
                .closeDir();
            }
        } else if (element ==  || element == ) {
            String name = attrs.getValue();
            if (name == null) {
                SVNErrorMessage err = SVNErrorMessage.create(."Missing name attr in " + (element ==  ? "change-file-prop" : "change-dir-prop") + " element");
                SVNErrorManager.error(err);
            } else {
                if (attrs.getValue() != null) {
                    if (element == ) {
                        .changeFileProperty(null);
                    } else {
                        .changeDirProperty(null);
                    }
                     = null;
                } else {
                     = name;
                }
            }
        }
    }
    
    protected void endElement(DAVElement parentDAVElement elementStringBuffer cdatathrows SVNException {
        if (element == ) {
            setDeltaProcessing(false);
        } else if (element ==  || element == ) {
            if (cdata != null && !"".equals(cdata) &&  == null) {
                SVNErrorMessage err = SVNErrorMessage.create(."Got cdata content for a prop delete");
                SVNErrorManager.error(err);
            }
            if ( != null) {
                String value = cdata.toString();
                byte[] buffer = allocateBuffer(cdata.length());
                int length = SVNBase64.base64ToByteArray(new StringBuffer(cdata.toString().trim()), buffer);
                try {
                    value = new String(buffer, 0, length"UTF-8");
                } catch (UnsupportedEncodingException e) {
                    value = new String(buffer, 0, length);
                }
                if (element == ) {
                    .changeFileProperty(value);
                } else {
                    .changeDirProperty(value);
                }
            }
        }
    }
    public static StringBuffer generateReplayRequest(long highRevisionlong lowRevisionboolean sendDeltas) {
        StringBuffer request = new StringBuffer();
        request.append("<S:replay-report xmlns:S=\"svn:\">\n");
        request.append("  <S:revision>");
        request.append(highRevision);
        request.append("</S:revision>\n");
        request.append("  <S:low-water-mark>");
        request.append(lowRevision);
        request.append("</S:low-water-mark>\n");
        request.append("  <S:send-deltas>");
        request.append(sendDeltas ? "1" : "0");
        request.append("</S:send-deltas>\n</S:replay-report>");
        return request;
    }
New to GrepCode? Check out our FAQ X