diff options
author | Han-Wen Nienhuys <hanwen@google.com> | 2017-04-06 13:44:10 +0900 |
---|---|---|
committer | Matthias Sohn <matthias.sohn@sap.com> | 2017-04-10 15:08:32 +0200 |
commit | 84d855cda7fc3f061778ea54b4f7ea569a75d7c3 (patch) | |
tree | 995dc4f9aa01e010d4fe61a9a6f06ffdcd935f95 /org.eclipse.jgit | |
parent | 52be84aea5f39d07e855a8d3dd8a1b8e97bd1de8 (diff) | |
download | jgit-84d855cda7fc3f061778ea54b4f7ea569a75d7c3.tar.gz jgit-84d855cda7fc3f061778ea54b4f7ea569a75d7c3.zip |
ManifestParser: Throw exception if remote does not have fetch attribute
In the repo manifest documentation [1] the fetch attribute is marked
as "#REQUIRED".
If the fetch attribute is not specified, this would previously result in
NullPointerException. Throw a SAXException instead.
[1] https://gerrit.googlesource.com/git-repo/+/master/docs/manifest-format.txt
Change-Id: Ib8ed8cee6074fe6bf8f9ac6fc7a1664a547d2d49
Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
Diffstat (limited to 'org.eclipse.jgit')
3 files changed, 8 insertions, 1 deletions
diff --git a/org.eclipse.jgit/resources/org/eclipse/jgit/gitrepo/internal/RepoText.properties b/org.eclipse.jgit/resources/org/eclipse/jgit/gitrepo/internal/RepoText.properties index 7443ad32f0..e942038a3d 100644 --- a/org.eclipse.jgit/resources/org/eclipse/jgit/gitrepo/internal/RepoText.properties +++ b/org.eclipse.jgit/resources/org/eclipse/jgit/gitrepo/internal/RepoText.properties @@ -3,6 +3,7 @@ errorIncludeFile=Error: unable to read include file {0} errorIncludeNotImplemented=Error: <include> tag not supported as no callback defined. errorNoDefault=Error: no default remote in manifest file. errorNoDefaultFilename=Error: no default remote in manifest file {0}. +errorNoFetch=Error: remote {0} is missing fetch attribute. errorParsingManifestFile=Error occurred during parsing manifest file. errorRemoteUnavailable=Error remote {0} is unavailable. invalidManifest=Invalid manifest. diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/ManifestParser.java b/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/ManifestParser.java index 26210ecbb9..73b2e6dcfa 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/ManifestParser.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/ManifestParser.java @@ -289,7 +289,12 @@ public class ManifestParser extends DefaultHandler { } String remoteUrl = remoteUrls.get(remote); if (remoteUrl == null) { - remoteUrl = baseUrl.resolve(remotes.get(remote).fetch).toString(); + String fetch = remotes.get(remote).fetch; + if (fetch == null) { + throw new SAXException(MessageFormat + .format(RepoText.get().errorNoFetch, remote)); + } + remoteUrl = baseUrl.resolve(fetch).toString(); if (!remoteUrl.endsWith("/")) //$NON-NLS-1$ remoteUrl = remoteUrl + "/"; //$NON-NLS-1$ remoteUrls.put(remote, remoteUrl); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/internal/RepoText.java b/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/internal/RepoText.java index 36b6e3aac4..02a2565bdd 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/internal/RepoText.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/internal/RepoText.java @@ -64,6 +64,7 @@ public class RepoText extends TranslationBundle { /***/ public String errorIncludeNotImplemented; /***/ public String errorNoDefault; /***/ public String errorNoDefaultFilename; + /***/ public String errorNoFetch; /***/ public String errorParsingManifestFile; /***/ public String errorRemoteUnavailable; /***/ public String invalidManifest; |