diff options
author | Stefan Lay | 2011-12-07 08:50:45 +0000 |
---|---|---|
committer | Stefan Lay | 2011-12-07 08:50:45 +0000 |
commit | 9a4d4680eaa0972429f63ba898100460303364db (patch) | |
tree | d84cb850da5eb22429925f645dad6062001ee632 | |
parent | 5261edd8f530ee5dbac52e031631fc335436f28e (diff) | |
download | egit-9a4d4680eaa0972429f63ba898100460303364db.tar.gz egit-9a4d4680eaa0972429f63ba898100460303364db.tar.xz egit-9a4d4680eaa0972429f63ba898100460303364db.zip |
Fix NPE in RepositoriesView
There was a NullPointer exception in the Git Repositories View which
caused the repo view to be broken. No repositories were shown anymore.
The compare handling did not work properly for bare repositories.
Bug: 365834
Change-Id: I3c914b31c5005e3320ef90cadcc1423423984b67
Signed-off-by: Stefan Lay <stefan.lay@sap.com>
-rw-r--r-- | org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/RepositoryTreeNode.java | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/RepositoryTreeNode.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/RepositoryTreeNode.java index 57a840de6e..d2f412b249 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/RepositoryTreeNode.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/RepositoryTreeNode.java @@ -269,23 +269,31 @@ public abstract class RepositoryTreeNode<T> extends PlatformObject implements Co return ((Ref) myObject).getName().compareTo( ((Ref) otherNode.getObject()).getName()); case REPO: - int nameCompare = ((Repository) myObject).getDirectory() - .getParentFile().getName().compareTo( - (((Repository) otherNode.getObject()) - .getDirectory().getParentFile().getName())); + int nameCompare = getDirectoryContainingRepo((Repository) myObject) + .getName() + .compareTo( + getDirectoryContainingRepo((Repository) otherNode.getObject()) + .getName()); if (nameCompare != 0) return nameCompare; // if the name is not unique, let's look at the whole path - return ((Repository) myObject).getDirectory().getParentFile() - .getParentFile().getPath().compareTo( - (((Repository) otherNode.getObject()) - .getDirectory().getParentFile() - .getParentFile().getPath())); - + return getDirectoryContainingRepo((Repository) myObject) + .getParentFile() + .getPath() + .compareTo( + getDirectoryContainingRepo((Repository) otherNode.getObject()) + .getParentFile().getPath()); } return 0; } + private File getDirectoryContainingRepo(Repository repo) { + if (!repo.isBare()) + return repo.getDirectory().getParentFile(); + else + return repo.getDirectory(); + } + private boolean checkObjectsEqual(Object otherObject) { switch (myType) { case REPO: |