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;
 
 import java.util.Map;
 

Author(s):
TMate Software Ltd.
Version:
1.1.0
 
 public class DAVUtil {
     
     public static int DEPTH_ZERO = 0;
     public static int DEPTH_ONE = 1;
     public static int DEPTH_INFINITE = -1;
 
     public static HTTPStatus getProperties(DAVConnection connectionString pathint depthString labelDAVElement[] propertiesMap resultthrows SVNException {
         HTTPHeader header = new HTTPHeader();
         if (depth == ) {
             header.setHeaderValue(."0");
         } else if (depth == ) {
             header.setHeaderValue(."1");
         } else if (depth == ) {
             header.setHeaderValue(."infinite");
         } else {
             SVNErrorMessage err = SVNErrorMessage.create(."Invalid PROPFIND depth value: '{0}'"new Integer(depth));
             SVNErrorManager.error(err);
         }
         if (label != null) {
             header.setHeaderValue(.label);
         }
         StringBuffer body = DAVPropertiesHandler.generatePropertiesRequest(nullproperties);
         DAVPropertiesHandler davHandler = new DAVPropertiesHandler();
         davHandler.setDAVProperties(result);        
         return connection.doPropfind(pathheaderbodydavHandler);
     }
     
     public static DAVProperties getResourceProperties(DAVConnection connectionString pathString labelDAVElement[] propertiesthrows SVNException {
         Map resultMap = new HashMap();
         HTTPStatus status = getProperties(connectionpathlabelpropertiesresultMap);
         if (status.getError() != null) {
             SVNErrorManager.error(status.getError());
         }
         if (label != null || true) {
             if (!resultMap.isEmpty()) {
                 return (DAVPropertiesresultMap.values().iterator().next();
             }
         } else {
             if (resultMap.containsKey(path)) {
                 return (DAVPropertiesresultMap.get(path);
             }
         }
         label = label == null ? "NULL" : label;
         SVNErrorMessage err = SVNErrorMessage.create(."Failed to find label ''{0}'' for URL ''{1}''"new Object[] {labelpath});
         SVNErrorManager.error(err);
         return null;
     }
     
     public static String getPropertyValue(DAVConnection connectionString pathString labelDAVElement propertythrows SVNException {
         DAVProperties props = getResourceProperties(connectionpathlabelnew DAVElement[] {property});
         Object value = props.getProperties().get(property);
         if (value == null) {
             SVNErrorMessage err = SVNErrorMessage.create(."''{0}'' was not present on the resource"property.toString());
             SVNErrorManager.error(err);
         }
         return (Stringvalue;
     }
     
     public static DAVProperties getStartingProperties(DAVConnection connectionString pathString labelthrows SVNException {
         return getResourceProperties(connectionpathlabel.);
     }
 
     public static DAVProperties findStartingProperties(DAVConnection connectionDAVRepository reposString fullPaththrows SVNException {
         DAVProperties props = null;
         String originalPath = fullPath;
         String loppedPath = "";
         if ("".equals(fullPath)) {
            props = getStartingProperties(connectionfullPathnull);
            if (props != null) {
                if (props.getPropertyValue(.) != null && repos != null) {
                    repos.setRepositoryUUID(props.getPropertyValue(.));
                }
                props.setLoppedPath(loppedPath);
            }
            return props;
        }
        
        while(!"".equals(fullPath)) {
            SVNErrorMessage err = null;
            try {
                props = getStartingProperties(connectionfullPathnull);
            } catch (SVNException e) {
                if (e.getErrorMessage() == null) {
                    throw e;
                }
                err = e.getErrorMessage();
            }            
            if (err == null) {
                break;
            }
            if (err.getErrorCode() != .) {
                SVNErrorManager.error(err);
            }
            loppedPath = SVNPathUtil.append(SVNPathUtil.tail(fullPath), loppedPath);
            int length = fullPath.length();
            fullPath = "/".equals(fullPath) ? "" : SVNPathUtil.removeTail(fullPath);
            if (length == fullPath.length()) {
                SVNErrorMessage err2 = SVNErrorMessage.create(err.getErrorCode(), "The path was not part of repository");
                SVNErrorManager.error(err2err);
            }
        }        
        if ("".equals(fullPath)) {
            SVNErrorMessage err = SVNErrorMessage.create(."No part of path ''{0}'' was found in repository HEAD"originalPath);
            SVNErrorManager.error(err);
        }
        if (props != null) {
            if (props.getPropertyValue(.) != null && repos != null) {
                repos.setRepositoryUUID(props.getPropertyValue(.));
            }
            props.setLoppedPath(loppedPath);
        } 
        return props;
    }
    
    public static String getVCCPath(DAVConnection connectionDAVRepository repositoryString paththrows SVNException {
        DAVProperties properties = findStartingProperties(connectionrepositorypath);
        if (vcc == null) {
            SVNErrorMessage err = SVNErrorMessage.create(."The VCC property was not found on the resource");
            SVNErrorManager.error(err);
        }
        return vcc;
    }
    public static DAVBaselineInfo getBaselineInfo(DAVConnection connectionDAVRepository reposString pathlong revision,
                                                  boolean includeTypeboolean includeRevisionDAVBaselineInfo infothrows SVNException {
        DAVElement[] properties = includeRevision ? . : new DAVElement[] {.};
        DAVProperties baselineProperties = getBaselineProperties(connectionrepospathrevisionproperties);
        info = info == null ? new DAVBaselineInfo() : info;
        info.baselinePath = baselineProperties.getURL();
        info.baselineBase = baselineProperties.getPropertyValue(.);
        info.baseline = baselineProperties.getOriginalURL();
        if (info.baselineBase == null) {
            SVNErrorMessage err = SVNErrorMessage.create(."'DAV:baseline-collection' not present on the baseline resource");
            SVNErrorManager.error(err);
        }
//        info.baselineBase = SVNEncodingUtil.uriEncode(info.baselineBase);
        if (includeRevision) {
            String version = baselineProperties.getPropertyValue(.);
            if (version == null) {
                SVNErrorMessage err = SVNErrorMessage.create(."'DAV:version-name' not present on the baseline resource");
                SVNErrorManager.error(err);
            }
            info.revision = Long.parseLong(version);
        }
        if (includeType) {
            Map propsMap = new HashMap();
            path = SVNPathUtil.append(info.baselineBaseinfo.baselinePath);
            HTTPStatus status = getProperties(connectionpath, 0, nullnew DAVElement[] {.}, propsMap);
            if (status.getError() != null) {
                SVNErrorManager.error(status.getError());
            }
            if (!propsMap.isEmpty()) {
                DAVProperties props = (DAVPropertiespropsMap.values().iterator().next();
                info.isDirectory = props != null && props.isCollection();
            }
        }
        return info;
    }
    public static DAVProperties getBaselineProperties(DAVConnection connectionDAVRepository reposString pathlong revisionDAVElement[] elementsthrows SVNException {
        DAVProperties properties = null;
        String loppedPath = "";
        properties = findStartingProperties(connectionrepospath);
        if (vcc == null) {
            SVNErrorMessage err = SVNErrorMessage.create(."The VCC property was not found on the resource");
            SVNErrorManager.error(err);
        }
        loppedPath = properties.getLoppedPath();
        String baselineRelativePath = properties.getPropertyValue(.);
        if (baselineRelativePath == null) {
            SVNErrorMessage err = SVNErrorMessage.create(."The relative-path property was not found on the resource");
            SVNErrorManager.error(err);
        }
        baselineRelativePath = SVNEncodingUtil.uriEncode(baselineRelativePath);
        baselineRelativePath = SVNPathUtil.append(baselineRelativePathloppedPath);
        String label = null;
        if (revision < 0) {
            vcc = getPropertyValue(connectionvccnull.);
        } else {
            label = Long.toString(revision);
        }
        properties = getResourceProperties(connectionvcclabelelements);
        properties.setURL(baselineRelativePath);
        return properties;
    }
    public static Map filterProperties(DAVProperties sourceMap target) {
        target = target == null ? new HashMap() : target;
        for(Iterator props = source.getProperties().keySet().iterator(); props.hasNext();) {
            DAVElement property = (DAVElementprops.next();
            String namespace = property.getNamespace();
            if (namespace.equals(.)) {
                String name = property.getName();
                // hack!
                if (name.startsWith("svk_")) {
                    name = name.substring(0, "svk".length()) + ":" + name.substring("svk".length() + 1);
                }
                target.put(namesource.getPropertyValue(property));
            } else if (namespace.equals(.)) {
                target.put("svn:" + property.getName(), source.getPropertyValue(property));
            } else if (property == .) {
                target.put("svn:wc:ra_dav:version-url"source.getPropertyValue(property));
            }
        }
        return target;
    }
New to GrepCode? Check out our FAQ X