diff options
| author | Dariusz Luksza | 2010-06-21 21:57:35 +0000 |
|---|---|---|
| committer | Dariusz Luksza | 2010-06-21 22:43:19 +0000 |
| commit | 02a3f9d4e537892fb6116789ea1ac26247da84c8 (patch) | |
| tree | 9c2d3fcc8093d0b9b9b950cf74fa460c4ae69e94 | |
| parent | d495cf79b9ead3f7f7ce353e674e6b93ca771fa6 (diff) | |
| download | egit-02a3f9d4e537892fb6116789ea1ac26247da84c8.tar.gz egit-02a3f9d4e537892fb6116789ea1ac26247da84c8.tar.xz egit-02a3f9d4e537892fb6116789ea1ac26247da84c8.zip | |
Prevent from NullPointerException's
Prevent from NPE when argument of GitResourceVariantTree.members()
doesn't exist in repository.
Change-Id: Iedfd286721e5a5add3ddf96b0ee83e70aa327631
Signed-off-by: Dariusz Luksza <dariusz@luksza.org>
| -rw-r--r-- | org.eclipse.egit.core/src/org/eclipse/egit/core/synchronize/GitResourceVariantTree.java | 12 | ||||
| -rw-r--r-- | org.eclipse.egit.core/src/org/eclipse/egit/core/synchronize/dto/GitSynchronizeData.java | 20 |
2 files changed, 24 insertions, 8 deletions
diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/synchronize/GitResourceVariantTree.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/synchronize/GitResourceVariantTree.java index 3eec66b762..240f828ef0 100644 --- a/org.eclipse.egit.core/src/org/eclipse/egit/core/synchronize/GitResourceVariantTree.java +++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/synchronize/GitResourceVariantTree.java @@ -164,9 +164,11 @@ abstract class GitResourceVariantTree extends AbstractResourceVariantTree { Tree tree = getRevTree(resource); ObjectId objId = getRevObjId(resource); - trees.put(db, tree); - // walk the tree to retrieve information - walk(db, objId, tree); + if (objId != null && tree != null) { + trees.put(db, tree); + // walk the tree to retrieve information + walk(db, objId, tree); + } } } @@ -387,6 +389,10 @@ abstract class GitResourceVariantTree extends AbstractResourceVariantTree { Repository repo = gsd.getRepository(); try { Tree tree = gsd.mapSrcTree(); + + if (tree == null) + return new IResource[0]; + IResource[] members = ((IContainer) resource).members(); Set<IResource> membersSet = getAllMembers(repo, tree, members); diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/synchronize/dto/GitSynchronizeData.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/synchronize/dto/GitSynchronizeData.java index 4f66e4ed13..b29f5096ba 100644 --- a/org.eclipse.egit.core/src/org/eclipse/egit/core/synchronize/dto/GitSynchronizeData.java +++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/synchronize/dto/GitSynchronizeData.java @@ -160,17 +160,27 @@ public class GitSynchronizeData { private Tree mapTree(String rev) throws IOException { if (rev.startsWith(Constants.R_TAGS)) { Tag tag = repo.mapTag(rev); - Commit commit = repo.mapCommit(tag.getObjId()); - return commit.getTree(); + if (tag != null) { + Commit commit = repo.mapCommit(tag.getObjId()); + if (commit != null) + return commit.getTree(); + } + return null; } else return repo.mapTree(rev); } private ObjectId getObjecId(String rev) throws IOException { if (rev.startsWith(Constants.R_TAGS)) { - return repo.mapTag(rev).getObjId(); - } else - return repo.mapCommit(rev).getCommitId(); + Tag mapTag = repo.mapTag(rev); + if (mapTag != null) + return mapTag.getObjId(); + } else { + Commit mapCommit = repo.mapCommit(rev); + if (mapCommit != null) + return mapCommit.getCommitId(); + } + return null; } } |
