Mercurial > jhg
comparison src/org/tmatesoft/hg/repo/HgLookup.java @ 628:6526d8adbc0f
Explicit HgRuntimeException to facilitate easy switch from runtime to checked exceptions
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
|---|---|
| date | Wed, 22 May 2013 15:52:31 +0200 |
| parents | 4e6179bde4fc |
| children | 822f3a83ff57 |
comparison
equal
deleted
inserted
replaced
| 627:5153eb73b18d | 628:6526d8adbc0f |
|---|---|
| 21 import java.io.File; | 21 import java.io.File; |
| 22 import java.net.MalformedURLException; | 22 import java.net.MalformedURLException; |
| 23 import java.net.URL; | 23 import java.net.URL; |
| 24 | 24 |
| 25 import org.tmatesoft.hg.core.HgBadArgumentException; | 25 import org.tmatesoft.hg.core.HgBadArgumentException; |
| 26 import org.tmatesoft.hg.core.HgIOException; | |
| 26 import org.tmatesoft.hg.core.HgRepositoryNotFoundException; | 27 import org.tmatesoft.hg.core.HgRepositoryNotFoundException; |
| 27 import org.tmatesoft.hg.core.SessionContext; | 28 import org.tmatesoft.hg.core.SessionContext; |
| 28 import org.tmatesoft.hg.internal.BasicSessionContext; | 29 import org.tmatesoft.hg.internal.BasicSessionContext; |
| 29 import org.tmatesoft.hg.internal.ConfigFile; | 30 import org.tmatesoft.hg.internal.ConfigFile; |
| 30 import org.tmatesoft.hg.internal.DataAccessProvider; | 31 import org.tmatesoft.hg.internal.DataAccessProvider; |
| 78 | 79 |
| 79 } while(dir != null); | 80 } while(dir != null); |
| 80 if (repository == null) { | 81 if (repository == null) { |
| 81 throw new HgRepositoryNotFoundException(String.format("Can't locate .hg/ directory of Mercurial repository in %s nor in parent dirs", location)).setLocation(location.getPath()); | 82 throw new HgRepositoryNotFoundException(String.format("Can't locate .hg/ directory of Mercurial repository in %s nor in parent dirs", location)).setLocation(location.getPath()); |
| 82 } | 83 } |
| 83 String repoPath = repository.getParentFile().getAbsolutePath(); | 84 try { |
| 84 HgRepository rv = new HgRepository(getSessionContext(), repoPath, repository); | 85 String repoPath = repository.getParentFile().getAbsolutePath(); |
| 85 int requiresFlags = rv.getImplHelper().getRequiresFlags(); | 86 HgRepository rv = new HgRepository(getSessionContext(), repoPath, repository); |
| 86 if ((requiresFlags & RequiresFile.REVLOGV1) == 0) { | 87 int requiresFlags = rv.getImplHelper().getRequiresFlags(); |
| 87 throw new HgRepositoryNotFoundException(String.format("%s: repository version is not supported (Mercurial <0.9?)", repoPath)).setLocation(location.getPath()); | 88 if ((requiresFlags & RequiresFile.REVLOGV1) == 0) { |
| 89 throw new HgRepositoryNotFoundException(String.format("%s: repository version is not supported (Mercurial <0.9?)", repoPath)).setLocation(location.getPath()); | |
| 90 } | |
| 91 return rv; | |
| 92 } catch (HgRuntimeException ex) { | |
| 93 HgRepositoryNotFoundException e = new HgRepositoryNotFoundException("Failed to initialize Hg4J library").setLocation(location.getPath()); | |
| 94 e.initCause(ex); | |
| 95 throw e; | |
| 88 } | 96 } |
| 89 return rv; | |
| 90 } | 97 } |
| 91 | 98 |
| 92 public HgBundle loadBundle(File location) throws HgRepositoryNotFoundException { | 99 public HgBundle loadBundle(File location) throws HgRepositoryNotFoundException { |
| 93 if (location == null || !location.canRead()) { | 100 if (location == null || !location.canRead()) { |
| 94 throw new HgRepositoryNotFoundException(String.format("Can't read file %s", location)).setLocation(String.valueOf(location)); | 101 throw new HgRepositoryNotFoundException(String.format("Can't read file %s", location)).setLocation(String.valueOf(location)); |
| 150 private ConfigFile getGlobalConfig() { | 157 private ConfigFile getGlobalConfig() { |
| 151 if (globalCfg == null) { | 158 if (globalCfg == null) { |
| 152 globalCfg = new ConfigFile(getSessionContext()); | 159 globalCfg = new ConfigFile(getSessionContext()); |
| 153 try { | 160 try { |
| 154 globalCfg.addLocation(new File(System.getProperty("user.home"), ".hgrc")); | 161 globalCfg.addLocation(new File(System.getProperty("user.home"), ".hgrc")); |
| 155 } catch (HgInvalidFileException ex) { | 162 } catch (HgIOException ex) { |
| 156 // XXX perhaps, makes sense to let caller/client know that we've failed to read global config? | 163 // XXX perhaps, makes sense to let caller/client know that we've failed to read global config? |
| 157 getSessionContext().getLog().dump(getClass(), Warn, ex, null); | 164 getSessionContext().getLog().dump(getClass(), Warn, ex, null); |
| 158 } | 165 } |
| 159 } | 166 } |
| 160 return globalCfg; | 167 return globalCfg; |
