Mercurial > hg4j
comparison src/org/tmatesoft/hg/core/SessionContext.java @ 571:e4ee4bf4c7d0
Let session context control creation of Path instances
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Thu, 11 Apr 2013 16:27:06 +0200 |
parents | b3c16d1aede0 |
children | fba85bc1dfb8 |
comparison
equal
deleted
inserted
replaced
570:36853bb80a35 | 571:e4ee4bf4c7d0 |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2011-2012 TMate Software Ltd | 2 * Copyright (c) 2011-2013 TMate Software Ltd |
3 * | 3 * |
4 * This program is free software; you can redistribute it and/or modify | 4 * This program is free software; you can redistribute it and/or modify |
5 * it under the terms of the GNU General Public License as published by | 5 * it under the terms of the GNU General Public License as published by |
6 * the Free Software Foundation; version 2 of the License. | 6 * the Free Software Foundation; version 2 of the License. |
7 * | 7 * |
15 * contact TMate Software at support@hg4j.com | 15 * contact TMate Software at support@hg4j.com |
16 */ | 16 */ |
17 package org.tmatesoft.hg.core; | 17 package org.tmatesoft.hg.core; |
18 | 18 |
19 import org.tmatesoft.hg.util.LogFacility; | 19 import org.tmatesoft.hg.util.LogFacility; |
20 import org.tmatesoft.hg.util.Path; | |
20 | 21 |
21 /** | 22 /** |
22 * Access to objects that might need to be shared between various distinct operations ran during the same working session | 23 * Access to objects that might need to be shared between various distinct operations ran during the same working session |
23 * (i.e. caches, log, etc.). It's unspecified whether session context is per repository or can span multiple repositories | 24 * (i.e. caches, log, etc.). It's unspecified whether session context is per repository or can span multiple repositories |
24 * | 25 * |
45 public abstract Object getConfigurationProperty(String name, Object defaultValue); | 46 public abstract Object getConfigurationProperty(String name, Object defaultValue); |
46 // perhaps, later may add Configuration object, with PropertyMarshal's helpers | 47 // perhaps, later may add Configuration object, with PropertyMarshal's helpers |
47 // e.g. when there's standalone Caches and WritableSessionProperties objects | 48 // e.g. when there's standalone Caches and WritableSessionProperties objects |
48 | 49 |
49 /** | 50 /** |
51 * Provide a factory to create {@link Path} objects. | |
52 * | |
53 * Occasionally, there's a need to construct a {@link Path} object from a string/byte data | |
54 * kept in mercurial control files. Generally, default implementation (with {@link Path#create(CharSequence)} | |
55 * is enough, however, if there's a need to control number of string objects in memory (i.e. prevent duplicates), | |
56 * default implementation might need to be replaced with more sophisticated (e.g. using weak references or | |
57 * just a huge hash set). | |
58 * | |
59 * @return factory to construct Path objects, never <code>null</code> | |
60 */ | |
61 public Path.Source getPathFactory() { | |
62 return new Path.Source() { | |
63 public Path path(CharSequence p) { | |
64 return Path.create(p); | |
65 } | |
66 }; | |
67 } | |
68 | |
69 /** | |
50 * Providers of the context may implement | 70 * Providers of the context may implement |
51 */ | 71 */ |
52 public interface Source { | 72 public interface Source { |
53 SessionContext getSessionContext(); | 73 SessionContext getSessionContext(); |
54 } | 74 } |