Mercurial > jhg
comparison src/org/tmatesoft/hg/util/Path.java @ 705:b4242b7e7dfe
Merge command: implement conflict resolution alternatives
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Thu, 15 Aug 2013 18:43:50 +0200 |
parents | 5d8798772cca |
children |
comparison
equal
deleted
inserted
replaced
704:7743a9c10bfa | 705:b4242b7e7dfe |
---|---|
212 * and optionally piping through a converter to get e.g. cached instance | 212 * and optionally piping through a converter to get e.g. cached instance |
213 */ | 213 */ |
214 public static class SimpleSource implements Source { | 214 public static class SimpleSource implements Source { |
215 private final PathRewrite normalizer; | 215 private final PathRewrite normalizer; |
216 private final Convertor<Path> convertor; | 216 private final Convertor<Path> convertor; |
217 private final Path.Source delegate; | |
217 | 218 |
218 public SimpleSource() { | 219 public SimpleSource() { |
219 this(new PathRewrite.Empty(), null); | 220 this(new PathRewrite.Empty(), null); |
220 } | 221 } |
221 | 222 |
222 public SimpleSource(PathRewrite pathRewrite) { | 223 public SimpleSource(PathRewrite pathRewrite) { |
223 this(pathRewrite, null); | 224 this(pathRewrite, null); |
224 } | 225 } |
225 | 226 |
226 public SimpleSource(PathRewrite pathRewrite, Convertor<Path> pathConvertor) { | 227 public SimpleSource(PathRewrite pathRewrite, Convertor<Path> pathConvertor) { |
228 assert pathRewrite != null; | |
227 normalizer = pathRewrite; | 229 normalizer = pathRewrite; |
228 convertor = pathConvertor; | 230 convertor = pathConvertor; |
231 delegate = null; | |
232 } | |
233 | |
234 public SimpleSource(Path.Source actual, Convertor<Path> pathConvertor) { | |
235 assert actual != null; | |
236 normalizer = null; | |
237 delegate = actual; | |
238 convertor = pathConvertor; | |
229 } | 239 } |
230 | 240 |
231 public Path path(CharSequence p) { | 241 public Path path(CharSequence p) { |
232 Path rv = Path.create(normalizer.rewrite(p)); | 242 // in fact, it's nicer to have sequence of sources, and a bunch of small |
243 // Source implementations each responsible for specific aspect, like Convertor | |
244 // or delegation to another Source. However, these classes are just too small | |
245 // to justify their existence | |
246 Path rv; | |
247 if (delegate != null) { | |
248 rv = delegate.path(p); | |
249 } else { | |
250 rv = Path.create(normalizer.rewrite(p)); | |
251 } | |
233 if (convertor != null) { | 252 if (convertor != null) { |
234 return convertor.mangle(rv); | 253 return convertor.mangle(rv); |
235 } | 254 } |
236 return rv; | 255 return rv; |
237 } | 256 } |