Mercurial > jhg
annotate src/org/tmatesoft/hg/repo/ext/MqManager.java @ 625:b4948b159ab1
Refactor internals of blame support, tests
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> | 
|---|---|
| date | Tue, 21 May 2013 17:24:22 +0200 | 
| parents | 507602cb4fb3 | 
| children | 6526d8adbc0f | 
| rev | line source | 
|---|---|
| 463 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 1 /* | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 2 * Copyright (c) 2012 TMate Software Ltd | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 3 * | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 4 * This program is free software; you can redistribute it and/or modify | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 5 * it under the terms of the GNU General Public License as published by | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 6 * the Free Software Foundation; version 2 of the License. | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 7 * | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 8 * This program is distributed in the hope that it will be useful, | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 11 * GNU General Public License for more details. | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 12 * | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 13 * For information on how to redistribute this software under | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 14 * the terms of a license other than GNU General Public License | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 15 * contact TMate Software at support@hg4j.com | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 16 */ | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 17 package org.tmatesoft.hg.repo.ext; | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 18 | 
| 471 
7bcfbc255f48
Merge changes from smartgit3 branch into 1.1 stream
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
465diff
changeset | 19 import static org.tmatesoft.hg.util.LogFacility.Severity.Warn; | 
| 
7bcfbc255f48
Merge changes from smartgit3 branch into 1.1 stream
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
465diff
changeset | 20 | 
| 463 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 21 import java.io.File; | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 22 import java.io.IOException; | 
| 464 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 23 import java.util.ArrayList; | 
| 463 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 24 import java.util.Collections; | 
| 464 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 25 import java.util.HashMap; | 
| 463 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 26 import java.util.LinkedList; | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 27 import java.util.List; | 
| 464 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 28 import java.util.Map; | 
| 463 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 29 | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 30 import org.tmatesoft.hg.core.Nodeid; | 
| 493 
ba36f66c32b4
Refactor to keep knowledge about repository control files and their location in respect to .hg/ in a single place (facilitate future adoption of shared repositories)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
490diff
changeset | 31 import org.tmatesoft.hg.internal.Internals; | 
| 480 
f3fab7a20841
Refactor LineReader utility as stanalone class to facilitate reuse
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
475diff
changeset | 32 import org.tmatesoft.hg.internal.LineReader; | 
| 471 
7bcfbc255f48
Merge changes from smartgit3 branch into 1.1 stream
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
465diff
changeset | 33 import org.tmatesoft.hg.repo.HgInvalidControlFileException; | 
| 
7bcfbc255f48
Merge changes from smartgit3 branch into 1.1 stream
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
465diff
changeset | 34 import org.tmatesoft.hg.repo.HgInvalidFileException; | 
| 463 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 35 import org.tmatesoft.hg.util.LogFacility; | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 36 import org.tmatesoft.hg.util.Path; | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 37 | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 38 /** | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 39 * Mercurial Queues Support. | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 40 * Access to MqExtension functionality. | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 41 * | 
| 501 
d2f6ab541330
Change the way extensions are accessed (with ExtensionsManager now), add preliminary Rebase extension support
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
493diff
changeset | 42 * @since 1.1 | 
| 463 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 43 * @author Artem Tikhomirov | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 44 * @author TMate Software Ltd. | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 45 */ | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 46 public class MqManager { | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 47 | 
| 465 
2078692eeb58
MqManager: read status/series of the active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
464diff
changeset | 48 private static final String PATCHES_DIR = "patches"; | 
| 
2078692eeb58
MqManager: read status/series of the active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
464diff
changeset | 49 | 
| 501 
d2f6ab541330
Change the way extensions are accessed (with ExtensionsManager now), add preliminary Rebase extension support
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
493diff
changeset | 50 private final Internals repo; | 
| 463 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 51 private List<PatchRecord> applied = Collections.emptyList(); | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 52 private List<PatchRecord> allKnown = Collections.emptyList(); | 
| 464 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 53 private List<String> queueNames = Collections.emptyList(); | 
| 465 
2078692eeb58
MqManager: read status/series of the active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
464diff
changeset | 54 private String activeQueue = PATCHES_DIR; | 
| 463 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 55 | 
| 501 
d2f6ab541330
Change the way extensions are accessed (with ExtensionsManager now), add preliminary Rebase extension support
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
493diff
changeset | 56 /*package-local*/ MqManager(Internals internalRepo) { | 
| 
d2f6ab541330
Change the way extensions are accessed (with ExtensionsManager now), add preliminary Rebase extension support
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
493diff
changeset | 57 repo = internalRepo; | 
| 463 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 58 } | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 59 | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 60 /** | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 61 * Updates manager with up-to-date state of the mercurial queues. | 
| 501 
d2f6ab541330
Change the way extensions are accessed (with ExtensionsManager now), add preliminary Rebase extension support
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
493diff
changeset | 62 * @return <code>this</code> for convenience | 
| 463 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 63 */ | 
| 501 
d2f6ab541330
Change the way extensions are accessed (with ExtensionsManager now), add preliminary Rebase extension support
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
493diff
changeset | 64 public MqManager refresh() throws HgInvalidControlFileException { | 
| 624 
507602cb4fb3
FIXMEs and TODOs: pay some technical debt
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
501diff
changeset | 65 // MQ doesn't seem to use any custom lock mechanism. | 
| 
507602cb4fb3
FIXMEs and TODOs: pay some technical debt
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
501diff
changeset | 66 // MQ uses Mercurial's wc/store lock when updating repository (strip/new queue) | 
| 464 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 67 applied = allKnown = Collections.emptyList(); | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 68 queueNames = Collections.emptyList(); | 
| 490 
b3c16d1aede0
Refactoring: move HgRepository's implementation aspects to Internals (which is now its imlementation counterpart and primary repository class to be used by other parts of the library)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
480diff
changeset | 69 final LogFacility log = repo.getSessionContext().getLog(); | 
| 463 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 70 try { | 
| 501 
d2f6ab541330
Change the way extensions are accessed (with ExtensionsManager now), add preliminary Rebase extension support
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
493diff
changeset | 71 File queues = repo.getFileFromRepoDir("patches.queues"); | 
| 464 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 72 if (queues.isFile()) { | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 73 LineReader lr = new LineReader(queues, log).trimLines(true).skipEmpty(true); | 
| 480 
f3fab7a20841
Refactor LineReader utility as stanalone class to facilitate reuse
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
475diff
changeset | 74 lr.read(new LineReader.SimpleLineCollector(), queueNames = new LinkedList<String>()); | 
| 464 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 75 } | 
| 465 
2078692eeb58
MqManager: read status/series of the active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
464diff
changeset | 76 final String queueLocation; // path under .hg to patch queue information (status, series and diff files) | 
| 501 
d2f6ab541330
Change the way extensions are accessed (with ExtensionsManager now), add preliminary Rebase extension support
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
493diff
changeset | 77 File activeQueueFile = repo.getFileFromRepoDir("patches.queue"); | 
| 465 
2078692eeb58
MqManager: read status/series of the active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
464diff
changeset | 78 // file is there only if it's not default queue ('patches') that is active | 
| 464 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 79 if (activeQueueFile.isFile()) { | 
| 465 
2078692eeb58
MqManager: read status/series of the active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
464diff
changeset | 80 ArrayList<String> contents = new ArrayList<String>(); | 
| 480 
f3fab7a20841
Refactor LineReader utility as stanalone class to facilitate reuse
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
475diff
changeset | 81 new LineReader(activeQueueFile, log).read(new LineReader.SimpleLineCollector(), contents); | 
| 464 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 82 if (contents.isEmpty()) { | 
| 471 
7bcfbc255f48
Merge changes from smartgit3 branch into 1.1 stream
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
465diff
changeset | 83 log.dump(getClass(), Warn, "File %s with active queue name is empty", activeQueueFile.getName()); | 
| 465 
2078692eeb58
MqManager: read status/series of the active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
464diff
changeset | 84 activeQueue = PATCHES_DIR; | 
| 
2078692eeb58
MqManager: read status/series of the active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
464diff
changeset | 85 queueLocation = PATCHES_DIR + '/'; | 
| 464 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 86 } else { | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 87 activeQueue = contents.get(0); | 
| 465 
2078692eeb58
MqManager: read status/series of the active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
464diff
changeset | 88 queueLocation = PATCHES_DIR + '-' + activeQueue + '/'; | 
| 464 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 89 } | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 90 } else { | 
| 465 
2078692eeb58
MqManager: read status/series of the active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
464diff
changeset | 91 activeQueue = PATCHES_DIR; | 
| 
2078692eeb58
MqManager: read status/series of the active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
464diff
changeset | 92 queueLocation = PATCHES_DIR + '/'; | 
| 464 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 93 } | 
| 465 
2078692eeb58
MqManager: read status/series of the active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
464diff
changeset | 94 final Path.Source patchLocation = new Path.Source() { | 
| 
2078692eeb58
MqManager: read status/series of the active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
464diff
changeset | 95 | 
| 471 
7bcfbc255f48
Merge changes from smartgit3 branch into 1.1 stream
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
465diff
changeset | 96 public Path path(CharSequence p) { | 
| 465 
2078692eeb58
MqManager: read status/series of the active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
464diff
changeset | 97 StringBuilder sb = new StringBuilder(64); | 
| 
2078692eeb58
MqManager: read status/series of the active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
464diff
changeset | 98 sb.append(".hg/"); | 
| 
2078692eeb58
MqManager: read status/series of the active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
464diff
changeset | 99 sb.append(queueLocation); | 
| 
2078692eeb58
MqManager: read status/series of the active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
464diff
changeset | 100 sb.append(p); | 
| 
2078692eeb58
MqManager: read status/series of the active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
464diff
changeset | 101 return Path.create(sb); | 
| 
2078692eeb58
MqManager: read status/series of the active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
464diff
changeset | 102 } | 
| 
2078692eeb58
MqManager: read status/series of the active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
464diff
changeset | 103 }; | 
| 501 
d2f6ab541330
Change the way extensions are accessed (with ExtensionsManager now), add preliminary Rebase extension support
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
493diff
changeset | 104 final File fileStatus = repo.getFileFromRepoDir(queueLocation + "status"); | 
| 
d2f6ab541330
Change the way extensions are accessed (with ExtensionsManager now), add preliminary Rebase extension support
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
493diff
changeset | 105 final File fileSeries = repo.getFileFromRepoDir(queueLocation + "series"); | 
| 463 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 106 if (fileStatus.isFile()) { | 
| 480 
f3fab7a20841
Refactor LineReader utility as stanalone class to facilitate reuse
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
475diff
changeset | 107 new LineReader(fileStatus, log).read(new LineReader.LineConsumer<List<PatchRecord>>() { | 
| 463 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 108 | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 109 public boolean consume(String line, List<PatchRecord> result) throws IOException { | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 110 int sep = line.indexOf(':'); | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 111 if (sep == -1) { | 
| 471 
7bcfbc255f48
Merge changes from smartgit3 branch into 1.1 stream
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
465diff
changeset | 112 log.dump(MqManager.class, Warn, "Bad line in %s:%s", fileStatus.getPath(), line); | 
| 463 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 113 return true; | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 114 } | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 115 Nodeid nid = Nodeid.fromAscii(line.substring(0, sep)); | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 116 String name = new String(line.substring(sep+1)); | 
| 465 
2078692eeb58
MqManager: read status/series of the active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
464diff
changeset | 117 result.add(new PatchRecord(nid, name, patchLocation.path(name))); | 
| 463 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 118 return true; | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 119 } | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 120 }, applied = new LinkedList<PatchRecord>()); | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 121 } | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 122 if (fileSeries.isFile()) { | 
| 464 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 123 final Map<String,PatchRecord> name2patch = new HashMap<String, PatchRecord>(); | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 124 for (PatchRecord pr : applied) { | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 125 name2patch.put(pr.getName(), pr); | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 126 } | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 127 LinkedList<String> knownPatchNames = new LinkedList<String>(); | 
| 480 
f3fab7a20841
Refactor LineReader utility as stanalone class to facilitate reuse
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
475diff
changeset | 128 new LineReader(fileSeries, log).read(new LineReader.SimpleLineCollector(), knownPatchNames); | 
| 464 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 129 // XXX read other queues? | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 130 allKnown = new ArrayList<PatchRecord>(knownPatchNames.size()); | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 131 for (String name : knownPatchNames) { | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 132 PatchRecord pr = name2patch.get(name); | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 133 if (pr == null) { | 
| 465 
2078692eeb58
MqManager: read status/series of the active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
464diff
changeset | 134 pr = new PatchRecord(null, name, patchLocation.path(name)); | 
| 463 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 135 } | 
| 464 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 136 allKnown.add(pr); | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 137 } | 
| 463 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 138 } | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 139 } catch (HgInvalidFileException ex) { | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 140 HgInvalidControlFileException th = new HgInvalidControlFileException(ex.getMessage(), ex.getCause(), ex.getFile()); | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 141 th.setStackTrace(ex.getStackTrace()); | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 142 throw th; | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 143 } | 
| 501 
d2f6ab541330
Change the way extensions are accessed (with ExtensionsManager now), add preliminary Rebase extension support
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
493diff
changeset | 144 return this; | 
| 463 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 145 } | 
| 464 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 146 | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 147 /** | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 148 * Number of patches not yet applied | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 149 * @return positive value when there are | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 150 */ | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 151 public int getQueueSize() { | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 152 return getAllKnownPatches().size() - getAppliedPatches().size(); | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 153 } | 
| 463 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 154 | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 155 /** | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 156 * Subset of the patches from the queue that were already applied to the repository | 
| 464 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 157 * <p>Analog of 'hg qapplied' | 
| 463 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 158 * | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 159 * <p>Clients shall call {@link #refresh()} prior to first use | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 160 * @return collection of records in no particular order, may be empty if none applied | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 161 */ | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 162 public List<PatchRecord> getAppliedPatches() { | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 163 return Collections.unmodifiableList(applied); | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 164 } | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 165 | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 166 /** | 
| 465 
2078692eeb58
MqManager: read status/series of the active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
464diff
changeset | 167 * All of the patches in the active queue that MQ knows about for this repository | 
| 463 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 168 * | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 169 * <p>Clients shall call {@link #refresh()} prior to first use | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 170 * @return collection of records in no particular order, may be empty if there are no patches in the queue | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 171 */ | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 172 public List<PatchRecord> getAllKnownPatches() { | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 173 return Collections.unmodifiableList(allKnown); | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 174 } | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 175 | 
| 464 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 176 /** | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 177 * Name of the patch queue <code>hg qqueue --active</code> which is active now. | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 178 * @return patch queue name | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 179 */ | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 180 public String getActiveQueueName() { | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 181 return activeQueue; | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 182 } | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 183 | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 184 /** | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 185 * Patch queues known in the repository, <code>hg qqueue -l</code> analog. | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 186 * There's at least one patch queue (default one names 'patches'). Only one patch queue at a time is active. | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 187 * | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 188 * @return names of patch queues | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 189 */ | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 190 public List<String> getQueueNames() { | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 191 return Collections.unmodifiableList(queueNames); | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 192 } | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 193 | 
| 475 
0e34b8f3946a
Tests for MqManager
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
471diff
changeset | 194 public final class PatchRecord { | 
| 463 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 195 private final Nodeid nodeid; | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 196 private final String name; | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 197 private final Path location; | 
| 464 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 198 | 
| 
1a3c18d57a8e
MqManager evolution: same PatchRecord instances, list patch queues, detect active queue
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
463diff
changeset | 199 // hashCode/equals might be useful if cons becomes public | 
| 463 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 200 | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 201 PatchRecord(Nodeid revision, String name, Path diffLocation) { | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 202 nodeid = revision; | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 203 this.name = name; | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 204 this.location = diffLocation; | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 205 } | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 206 | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 207 /** | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 208 * Identifies changeset of the patch that has been applied to the repository | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 209 * | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 210 * @return changeset revision or <code>null</code> if this patch is not yet applied | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 211 */ | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 212 public Nodeid getRevision() { | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 213 return nodeid; | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 214 } | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 215 | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 216 /** | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 217 * Identifies patch, either based on a user-supplied name (<code>hg qnew <i>patch-name</i></code>) or | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 218 * an automatically generated name (like <code><i>revisionIndex</i>.diff</code> for imported changesets). | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 219 * Clients shall not rely on this naming scheme, though. | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 220 * | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 221 * @return never <code>null</code> | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 222 */ | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 223 public String getName() { | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 224 return name; | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 225 } | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 226 | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 227 /** | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 228 * Location of diff file with the patch, relative to repository root | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 229 * @return path to the patch, never <code>null</code> | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 230 */ | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 231 public Path getPatchLocation() { | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 232 return location; | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 233 } | 
| 475 
0e34b8f3946a
Tests for MqManager
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
471diff
changeset | 234 | 
| 
0e34b8f3946a
Tests for MqManager
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
471diff
changeset | 235 @Override | 
| 
0e34b8f3946a
Tests for MqManager
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
471diff
changeset | 236 public String toString() { | 
| 
0e34b8f3946a
Tests for MqManager
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
471diff
changeset | 237 String fmt = "mq.PatchRecord[name:%s; %spath:%s]"; | 
| 
0e34b8f3946a
Tests for MqManager
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
471diff
changeset | 238 String ni = nodeid != null ? String.format("applied as: %s; ", nodeid.shortNotation()) : ""; | 
| 
0e34b8f3946a
Tests for MqManager
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
471diff
changeset | 239 return String.format(fmt, name, ni, location); | 
| 
0e34b8f3946a
Tests for MqManager
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
471diff
changeset | 240 } | 
| 463 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 241 } | 
| 
a0507a9f3da0
Initial support for MqExtension
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 242 } | 
