comparison src/org/tmatesoft/hg/internal/Internals.java @ 456:909306e412e2

Refactor LogFacility and SessionContext, better API for both
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Mon, 18 Jun 2012 16:54:00 +0200
parents 48f993aa2f41
children e31e85cf4d4c
comparison
equal deleted inserted replaced
454:36fd1fd06492 456:909306e412e2
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 static org.tmatesoft.hg.internal.RequiresFile.*; 19 import static org.tmatesoft.hg.internal.RequiresFile.*;
20 import static org.tmatesoft.hg.util.LogFacility.Severity.Error;
20 21
21 import java.io.File; 22 import java.io.File;
22 import java.io.FileOutputStream; 23 import java.io.FileOutputStream;
23 import java.io.IOException; 24 import java.io.IOException;
24 import java.nio.charset.Charset; 25 import java.nio.charset.Charset;
81 private final boolean shallCacheRevlogsInRepo; 82 private final boolean shallCacheRevlogsInRepo;
82 83
83 public Internals(SessionContext ctx) { 84 public Internals(SessionContext ctx) {
84 sessionContext = ctx; 85 sessionContext = ctx;
85 isCaseSensitiveFileSystem = !runningOnWindows(); 86 isCaseSensitiveFileSystem = !runningOnWindows();
86 Object p = ctx.getProperty(CFG_PROPERTY_REVLOG_STREAM_CACHE, true); 87 shallCacheRevlogsInRepo = new PropertyMarshal(ctx).getBoolean(CFG_PROPERTY_REVLOG_STREAM_CACHE, true);
87 shallCacheRevlogsInRepo = p instanceof Boolean ? ((Boolean) p).booleanValue() : Boolean.parseBoolean(String.valueOf(p));
88 } 88 }
89 89
90 public void parseRequires(HgRepository hgRepo, File requiresFile) throws HgInvalidControlFileException { 90 public void parseRequires(HgRepository hgRepo, File requiresFile) throws HgInvalidControlFileException {
91 try { 91 try {
92 new RequiresFile().parse(this, requiresFile); 92 new RequiresFile().parse(this, requiresFile);
171 public EncodingHelper buildFileNameEncodingHelper() { 171 public EncodingHelper buildFileNameEncodingHelper() {
172 return new EncodingHelper(getFileEncoding(), sessionContext); 172 return new EncodingHelper(getFileEncoding(), sessionContext);
173 } 173 }
174 174
175 private Charset getFileEncoding() { 175 private Charset getFileEncoding() {
176 Object altEncoding = sessionContext.getProperty(CFG_PROPERTY_FS_FILENAME_ENCODING, null); 176 Object altEncoding = sessionContext.getConfigurationProperty(CFG_PROPERTY_FS_FILENAME_ENCODING, null);
177 Charset cs; 177 Charset cs;
178 if (altEncoding == null) { 178 if (altEncoding == null) {
179 cs = Charset.defaultCharset(); 179 cs = Charset.defaultCharset();
180 } else { 180 } else {
181 try { 181 try {
182 cs = Charset.forName(altEncoding.toString()); 182 cs = Charset.forName(altEncoding.toString());
183 } catch (IllegalArgumentException ex) { 183 } catch (IllegalArgumentException ex) {
184 // both IllegalCharsetNameException and UnsupportedCharsetException are subclasses of IAE, too 184 // both IllegalCharsetNameException and UnsupportedCharsetException are subclasses of IAE, too
185 // not severe enough to throw an exception, imo. Just record the fact it's bad ad we ignore it 185 // not severe enough to throw an exception, imo. Just record the fact it's bad ad we ignore it
186 sessionContext.getLog().error(Internals.class, ex, String.format("Bad configuration value for filename encoding %s", altEncoding)); 186 sessionContext.getLog().dump(Internals.class, Error, ex, String.format("Bad configuration value for filename encoding %s", altEncoding));
187 cs = Charset.defaultCharset(); 187 cs = Charset.defaultCharset();
188 } 188 }
189 } 189 }
190 return cs; 190 return cs;
191 } 191 }
222 * For Windows, it's Mercurial installation directory itself 222 * For Windows, it's Mercurial installation directory itself
223 * @param ctx 223 * @param ctx
224 */ 224 */
225 private static File findHgInstallRoot(SessionContext ctx) { 225 private static File findHgInstallRoot(SessionContext ctx) {
226 // let clients to override Hg install location 226 // let clients to override Hg install location
227 String p = (String) ctx.getProperty(CFG_PROPERTY_HG_INSTALL_ROOT, null); 227 String p = (String) ctx.getConfigurationProperty(CFG_PROPERTY_HG_INSTALL_ROOT, null);
228 if (p != null) { 228 if (p != null) {
229 return new File(p); 229 return new File(p);
230 } 230 }
231 StringTokenizer st = new StringTokenizer(System.getenv("PATH"), System.getProperty("path.separator"), false); 231 StringTokenizer st = new StringTokenizer(System.getenv("PATH"), System.getProperty("path.separator"), false);
232 final boolean runsOnWin = runningOnWindows(); 232 final boolean runsOnWin = runningOnWindows();