comparison src/org/tmatesoft/hg/internal/BasicSessionContext.java @ 388:b015f3918120

Work on FIXME: correct HgDataFile#workingCopy with tests; BasicSessionContext with property override; platform-specific options to internals
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Wed, 15 Feb 2012 22:57:56 +0100
parents 3cfa4d908fc9
children 30922c728341
comparison
equal deleted inserted replaced
387:cdea37239b01 388:b015f3918120
1 /* 1 /*
2 * Copyright (c) 2011 TMate Software Ltd 2 * Copyright (c) 2011-2012 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 *
14 * the terms of a license other than GNU General Public License 14 * the terms of a license other than GNU General Public License
15 * contact TMate Software at support@hg4j.com 15 * contact TMate Software at support@hg4j.com
16 */ 16 */
17 package org.tmatesoft.hg.internal; 17 package org.tmatesoft.hg.internal;
18 18
19 import java.util.Collections;
20 import java.util.Map;
21
19 import org.tmatesoft.hg.core.SessionContext; 22 import org.tmatesoft.hg.core.SessionContext;
20 import org.tmatesoft.hg.util.LogFacility; 23 import org.tmatesoft.hg.util.LogFacility;
21 import org.tmatesoft.hg.util.PathPool; 24 import org.tmatesoft.hg.util.PathPool;
22 import org.tmatesoft.hg.util.PathRewrite; 25 import org.tmatesoft.hg.util.PathRewrite;
23 26
28 */ 31 */
29 public class BasicSessionContext implements SessionContext { 32 public class BasicSessionContext implements SessionContext {
30 33
31 private PathPool pathPool; 34 private PathPool pathPool;
32 private final LogFacility logFacility; 35 private final LogFacility logFacility;
36 private final Map<String, Object> properties;
33 37
34 public BasicSessionContext(PathPool pathFactory, LogFacility log) { 38 public BasicSessionContext(PathPool pathFactory, LogFacility log) {
39 this(null, pathFactory, log);
40 }
41
42 @SuppressWarnings("unchecked")
43 public BasicSessionContext(Map<String,?> propertyOverrides, PathPool pathFactory, LogFacility log) {
35 pathPool = pathFactory; 44 pathPool = pathFactory;
36 logFacility = log != null ? log : new StreamLogFacility(true, true, true, System.out); 45 logFacility = log != null ? log : new StreamLogFacility(true, true, true, System.out);
46 properties = propertyOverrides == null ? Collections.<String,Object>emptyMap() : (Map<String, Object>) propertyOverrides;
37 } 47 }
38 48
39 public PathPool getPathPool() { 49 public PathPool getPathPool() {
40 if (pathPool == null) { 50 if (pathPool == null) {
41 pathPool = new PathPool(new PathRewrite.Empty()); 51 pathPool = new PathPool(new PathRewrite.Empty());
47 // e.g. for exceptions that we can't handle but log (e.g. FileNotFoundException when we've checked beforehand file.canRead() 57 // e.g. for exceptions that we can't handle but log (e.g. FileNotFoundException when we've checked beforehand file.canRead()
48 return logFacility; 58 return logFacility;
49 } 59 }
50 60
51 public Object getProperty(String name, Object defaultValue) { 61 public Object getProperty(String name, Object defaultValue) {
52 String value = System.getProperty(name); 62 Object value = properties.get(name);
63 if (value != null) {
64 return value;
65 }
66 value = System.getProperty(name);
53 return value == null ? defaultValue : value; 67 return value == null ? defaultValue : value;
54 } 68 }
55 } 69 }