/** * Add one or more RevisionRange objects to merge info. If the * merge source is already stored, the list of revisions is * replaced. * @param mergeSrc The merge source URL. * @param ranges RevisionRange objects to add. * @throws SubversionException If range list contains objects of * type other than RevisionRange. */ public void addRevisions(String mergeSrc, RevisionRange[] ranges) { for (int i = 0; i < ranges.length; i++) addRevisionRange(mergeSrc, ranges[i]); }
/** * Add a revision range to the merged revisions for a path. If * the merge source already has associated revision ranges, add * the revision range to the existing list. * @param mergeSrc The merge source URL. * @param range The revision range to add. */ public void addRevisionRange(String mergeSrc, RevisionRange range) { List revisions = this.getRevisions(mergeSrc); if (revisions == null) revisions = new ArrayList(); revisions.add(range); this.setRevisionList(mergeSrc, revisions); }
/** * Create and populate an instance using the contents of the * <code>svn:mergeinfo</code> property. * @param mergeinfo <code>svn:mergeinfo</code> property value. */ public Mergeinfo(String mergeinfo) { this(); this.loadFromMergeinfoProperty(mergeinfo); }
public static Mergeinfo createMergeInfo(Map mergeInfo) { if (mergeInfo == null) { return null; } Mergeinfo result = new Mergeinfo(); for (Iterator iterator = mergeInfo.entrySet().iterator(); iterator.hasNext();) { Map.Entry entry = (Map.Entry) iterator.next(); SVNURL mergeSrcURL = (SVNURL) entry.getKey(); String url = mergeSrcURL.toString(); SVNMergeRangeList rangeList = (SVNMergeRangeList) entry.getValue(); SVNMergeRange[] ranges = rangeList.getRanges(); for (int i = 0; i < ranges.length; i++) { SVNMergeRange range = ranges[i]; result.addRevisionRange(url, createRevisionRange(range)); } } return result; }
/** * Tests Mergeinfo and RevisionRange classes. * @since 1.5 */ public void testMergeinfoParser() throws Throwable { String mergeInfoPropertyValue = "/trunk:1-300,305,307,400-405\n/branches/branch:308-400"; Mergeinfo info = new Mergeinfo(mergeInfoPropertyValue); String[] paths = info.getPaths(); assertEquals(2, paths.length); RevisionRange[] trunkRange = info.getRevisionRange("/trunk"); assertEquals(4, trunkRange.length); assertEquals("1-300", trunkRange[0].toString()); assertEquals("305", trunkRange[1].toString()); assertEquals("307", trunkRange[2].toString()); assertEquals("400-405", trunkRange[3].toString()); RevisionRange[] branchRange = info.getRevisionRange("/branches/branch"); assertEquals(1, branchRange.length); }
/** * Get the RevisionRange objects for the specified merge source URL * @param mergeSrc The merge source URL, or <code>null</code>. * @return Array of RevisionRange objects, or <code>null</code>. */ public RevisionRange[] getRevisionRange(String mergeSrc) { List revisions = this.getRevisions(mergeSrc); if (revisions == null) return null; return (RevisionRange []) revisions.toArray(new RevisionRange[revisions.size()]); }
/** * Parse the <code>svn:mergeinfo</code> property to populate the * merge source URLs and revision ranges of this instance. * @param mergeinfo <code>svn:mergeinfo</code> property value. */ public void loadFromMergeinfoProperty(String mergeinfo) { if (mergeinfo == null) return; StringTokenizer st = new StringTokenizer(mergeinfo, "\n"); while (st.hasMoreTokens()) { parseMergeinfoLine(st.nextToken()); } }
/** * Parse a merge source line from a <code>svn:mergeinfo</code> * property value (e.g. * <code>"/trunk:1-100,104,108,110-115"</code>). * * @param line A line of merge info for a single merge source. */ private void parseMergeinfoLine(String line) { int colon = line.indexOf(':'); if (colon > 0) { String pathElement = line.substring(0, colon); String revisions = line.substring(colon + 1); parseRevisions(pathElement, revisions); } }
public static Mergeinfo createMergeInfo(Map mergeInfo) { if (mergeInfo == null) { return null; } Mergeinfo result = new Mergeinfo(); for (Iterator iterator = mergeInfo.entrySet().iterator(); iterator.hasNext();) { Map.Entry entry = (Map.Entry) iterator.next(); SVNURL mergeSrcURL = (SVNURL) entry.getKey(); String url = mergeSrcURL.toString(); SVNMergeRangeList rangeList = (SVNMergeRangeList) entry.getValue(); SVNMergeRange[] ranges = rangeList.getRanges(); for (int i = 0; i < ranges.length; i++) { SVNMergeRange range = ranges[i]; result.addRevisionRange(url, createRevisionRange(range)); } } return result; }
/** * Tests Mergeinfo and RevisionRange classes. * @since 1.5 */ public void testMergeinfoParser() throws Throwable { String mergeInfoPropertyValue = "/trunk:1-300,305,307,400-405\n/branches/branch:308-400"; Mergeinfo info = new Mergeinfo(mergeInfoPropertyValue); String[] paths = info.getPaths(); assertEquals(2, paths.length); RevisionRange[] trunkRange = info.getRevisionRange("/trunk"); assertEquals(4, trunkRange.length); assertEquals("1-300", trunkRange[0].toString()); assertEquals("305", trunkRange[1].toString()); assertEquals("307", trunkRange[2].toString()); assertEquals("400-405", trunkRange[3].toString()); RevisionRange[] branchRange = info.getRevisionRange("/branches/branch"); assertEquals(1, branchRange.length); }
/** * Get the RevisionRange objects for the specified merge source URL * @param mergeSrc The merge source URL, or <code>null</code>. * @return Array of RevisionRange objects, or <code>null</code>. */ public RevisionRange[] getRevisionRange(String mergeSrc) { List revisions = this.getRevisions(mergeSrc); if (revisions == null) return null; return (RevisionRange []) revisions.toArray(new RevisionRange[revisions.size()]); }
/** * Parse the <code>svn:mergeinfo</code> property to populate the * merge source URLs and revision ranges of this instance. * @param mergeinfo <code>svn:mergeinfo</code> property value. */ public void loadFromMergeinfoProperty(String mergeinfo) { if (mergeinfo == null) return; StringTokenizer st = new StringTokenizer(mergeinfo, "\n"); while (st.hasMoreTokens()) { parseMergeinfoLine(st.nextToken()); } }
/** * Parse a merge source line from a <code>svn:mergeinfo</code> * property value (e.g. * <code>"/trunk:1-100,104,108,110-115"</code>). * * @param line A line of merge info for a single merge source. */ private void parseMergeinfoLine(String line) { int colon = line.indexOf(':'); if (colon > 0) { String pathElement = line.substring(0, colon); String revisions = line.substring(colon + 1); parseRevisions(pathElement, revisions); } }
public static Mergeinfo createMergeInfo(Map mergeInfo) { if (mergeInfo == null) { return null; } Mergeinfo result = new Mergeinfo(); for (Iterator iterator = mergeInfo.entrySet().iterator(); iterator.hasNext();) { Map.Entry entry = (Map.Entry) iterator.next(); SVNURL mergeSrcURL = (SVNURL) entry.getKey(); String url = mergeSrcURL.toString(); SVNMergeRangeList rangeList = (SVNMergeRangeList) entry.getValue(); SVNMergeRange[] ranges = rangeList.getRanges(); for (int i = 0; i < ranges.length; i++) { SVNMergeRange range = ranges[i]; result.addRevisionRange(url, createRevisionRange(range)); } } return result; }
/** * Add a revision range to the merged revisions for a path. If * the merge source already has associated revision ranges, add * the revision range to the existing list. * @param mergeSrc The merge source URL. * @param range The revision range to add. */ public void addRevisionRange(String mergeSrc, RevisionRange range) { List revisions = this.getRevisions(mergeSrc); if (revisions == null) revisions = new ArrayList(); revisions.add(range); this.setRevisionList(mergeSrc, revisions); }
/** * Add one or more RevisionRange objects to merge info. If the * merge source is already stored, the list of revisions is * replaced. * @param mergeSrc The merge source URL. * @param ranges RevisionRange objects to add. * @throws SubversionException If range list contains objects of * type other than RevisionRange. */ public void addRevisions(String mergeSrc, RevisionRange[] ranges) { for (int i = 0; i < ranges.length; i++) addRevisionRange(mergeSrc, ranges[i]); }
/** * Get the RevisionRange objects for the specified merge source URL * @param mergeSrc The merge source URL, or <code>null</code>. * @return Array of RevisionRange objects, or <code>null</code>. */ public RevisionRange[] getRevisionRange(String mergeSrc) { List revisions = this.getRevisions(mergeSrc); if (revisions == null) return null; return (RevisionRange []) revisions.toArray(new RevisionRange[revisions.size()]); }
/** * Create and populate an instance using the contents of the * <code>svn:mergeinfo</code> property. * @param mergeinfo <code>svn:mergeinfo</code> property value. */ public Mergeinfo(String mergeinfo) { this(); this.loadFromMergeinfoProperty(mergeinfo); }
/** * Parse the <code>svn:mergeinfo</code> property to populate the * merge source URLs and revision ranges of this instance. * @param mergeinfo <code>svn:mergeinfo</code> property value. */ public void loadFromMergeinfoProperty(String mergeinfo) { if (mergeinfo == null) return; StringTokenizer st = new StringTokenizer(mergeinfo, "\n"); while (st.hasMoreTokens()) { parseMergeinfoLine(st.nextToken()); } }
/** * Parse a merge source line from a <code>svn:mergeinfo</code> * property value (e.g. * <code>"/trunk:1-100,104,108,110-115"</code>). * * @param line A line of merge info for a single merge source. */ private void parseMergeinfoLine(String line) { int colon = line.indexOf(':'); if (colon > 0) { String pathElement = line.substring(0, colon); String revisions = line.substring(colon + 1); parseRevisions(pathElement, revisions); } }