Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Loskutov2016-02-26 09:30:04 +0000
committerAndrey Loskutov2016-02-26 15:06:12 +0000
commit599f8ad058190b3b976c5ad1b9b9491f5c1a4e1a (patch)
tree2be67f655159c905fdf7c76b465a39d1343a240d
parent5dc7ac99cb0b52ad87e2c563f5dfecf9a800e82c (diff)
downloadegit-599f8ad058190b3b976c5ad1b9b9491f5c1a4e1a.tar.gz
egit-599f8ad058190b3b976c5ad1b9b9491f5c1a4e1a.tar.xz
egit-599f8ad058190b3b976c5ad1b9b9491f5c1a4e1a.zip
Check resource.getProject() for null before dereferencing it
-rw-r--r--org.eclipse.egit.core/src/org/eclipse/egit/core/internal/merge/DirCacheResourceVariantTreeProvider.java2
-rw-r--r--org.eclipse.egit.core/src/org/eclipse/egit/core/internal/merge/GitResourceVariantCache.java3
-rw-r--r--org.eclipse.egit.core/src/org/eclipse/egit/core/internal/merge/TreeWalkResourceVariantTreeProvider.java3
-rw-r--r--org.eclipse.egit.core/src/org/eclipse/egit/core/internal/storage/GitFileHistory.java14
-rw-r--r--org.eclipse.egit.core/src/org/eclipse/egit/core/internal/util/ResourceUtil.java2
-rw-r--r--org.eclipse.egit.core/src/org/eclipse/egit/core/op/AssumeUnchangedOperation.java15
-rw-r--r--org.eclipse.egit.core/src/org/eclipse/egit/core/op/CreatePatchOperation.java2
-rw-r--r--org.eclipse.egit.core/src/org/eclipse/egit/core/op/UntrackOperation.java3
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/staging/StagingFolderEntry.java3
9 files changed, 35 insertions, 12 deletions
diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/merge/DirCacheResourceVariantTreeProvider.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/merge/DirCacheResourceVariantTreeProvider.java
index e3d1918b06..03af6327e4 100644
--- a/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/merge/DirCacheResourceVariantTreeProvider.java
+++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/merge/DirCacheResourceVariantTreeProvider.java
@@ -66,7 +66,7 @@ public class DirCacheResourceVariantTreeProvider implements
.getResourceHandleForLocation(path);
// Resource variants only make sense for IResources. Do not consider
// files outside of the workspace or otherwise non accessible.
- if (resource == null || resource.getProject() == null
+ if (resource.getProject() == null
|| !resource.getProject().isAccessible()) {
continue;
}
diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/merge/GitResourceVariantCache.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/merge/GitResourceVariantCache.java
index 523f0d195a..065e098e08 100644
--- a/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/merge/GitResourceVariantCache.java
+++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/merge/GitResourceVariantCache.java
@@ -40,6 +40,9 @@ class GitResourceVariantCache {
cache.put(resource, variant);
IProject project = resource.getProject();
+ if (project == null) {
+ return;
+ }
roots.add(project);
members.put(resource, new LinkedHashSet<IResource>());
diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/merge/TreeWalkResourceVariantTreeProvider.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/merge/TreeWalkResourceVariantTreeProvider.java
index cc4b4f9c52..2bc0ea01ad 100644
--- a/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/merge/TreeWalkResourceVariantTreeProvider.java
+++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/merge/TreeWalkResourceVariantTreeProvider.java
@@ -103,7 +103,8 @@ public class TreeWalkResourceVariantTreeProvider implements
.getResourceHandleForLocation(path);
// Resource variants only make sense for IResources. Do not consider
// files outside of the workspace or otherwise non accessible.
- if (resource != null && resource.getProject().isAccessible()) {
+ if (resource.getProject() != null
+ && resource.getProject().isAccessible()) {
if (modeBase != 0) {
baseCache.setVariant(resource,
TreeParserResourceVariant.create(repository, base));
diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/storage/GitFileHistory.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/storage/GitFileHistory.java
index 6f728d1f30..8767fc546d 100644
--- a/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/storage/GitFileHistory.java
+++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/storage/GitFileHistory.java
@@ -15,6 +15,7 @@ import java.io.IOException;
import java.util.Collections;
import java.util.Map.Entry;
+import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -66,8 +67,10 @@ class GitFileHistory extends FileHistory implements IAdaptable {
final RepositoryMapping rm = RepositoryMapping.getMapping(resource);
if (rm == null) {
+ IProject project = resource.getProject();
+ String projectName = project != null ? project.getName() : ""; //$NON-NLS-1$
Activator.logError(NLS.bind(CoreText.GitFileHistory_gitNotAttached,
- resource.getProject().getName()), null);
+ projectName), null);
db = null;
walk = null;
} else {
@@ -95,9 +98,11 @@ class GitFileHistory extends FileHistory implements IAdaptable {
try {
final AnyObjectId headId = db.resolve(Constants.HEAD);
if (headId == null) {
+ IProject project = resource.getProject();
+ String projectName = project != null? project.getName() : ""; //$NON-NLS-1$
Activator.logError(NLS.bind(
CoreText.GitFileHistory_noHeadRevisionAvailable,
- resource.getProject().getName()), null);
+ projectName), null);
return NO_REVISIONS;
}
@@ -119,9 +124,10 @@ class GitFileHistory extends FileHistory implements IAdaptable {
walk.markStart(root);
} catch (IOException e) {
+ IProject project = resource.getProject();
+ String projectName = project != null? project.getName() : ""; //$NON-NLS-1$
Activator.logError(NLS.bind(
- CoreText.GitFileHistory_invalidHeadRevision, resource
- .getProject().getName()), e);
+ CoreText.GitFileHistory_invalidHeadRevision, projectName), e);
return NO_REVISIONS;
}
diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/util/ResourceUtil.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/util/ResourceUtil.java
index 4162e9b506..dc17a1d2f4 100644
--- a/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/util/ResourceUtil.java
+++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/util/ResourceUtil.java
@@ -154,7 +154,7 @@ public class ResourceUtil {
*/
public static boolean isSharedWithGit(@NonNull IResource resource) {
IProject project = resource.getProject();
- if (!project.isAccessible()) {
+ if (project == null || !project.isAccessible()) {
return false;
}
try {
diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/AssumeUnchangedOperation.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/AssumeUnchangedOperation.java
index 527813d257..f401a2c772 100644
--- a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/AssumeUnchangedOperation.java
+++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/AssumeUnchangedOperation.java
@@ -120,12 +120,17 @@ public class AssumeUnchangedOperation implements IEGitOperation {
private void assumeValid(final IResource resource) throws CoreException {
final IProject proj = resource.getProject();
+ if (proj == null) {
+ return;
+ }
final GitProjectData pd = GitProjectData.get(proj);
- if (pd == null)
+ if (pd == null) {
return;
+ }
final RepositoryMapping rm = pd.getRepositoryMapping(resource);
- if (rm == null)
+ if (rm == null) {
return;
+ }
final Repository db = rm.getRepository();
DirCache cache = caches.get(db);
@@ -141,12 +146,14 @@ public class AssumeUnchangedOperation implements IEGitOperation {
final String path = rm.getRepoRelativePath(resource);
if (resource instanceof IContainer) {
- for (final DirCacheEntry ent : cache.getEntriesWithin(path))
+ for (final DirCacheEntry ent : cache.getEntriesWithin(path)) {
ent.setAssumeValid(assumeUnchanged);
+ }
} else {
final DirCacheEntry ent = cache.getEntry(path);
- if (ent != null)
+ if (ent != null) {
ent.setAssumeValid(assumeUnchanged);
+ }
}
}
}
diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/CreatePatchOperation.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/CreatePatchOperation.java
index b1cd1f55db..691a99a5b9 100644
--- a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/CreatePatchOperation.java
+++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/CreatePatchOperation.java
@@ -181,7 +181,7 @@ public class CreatePatchOperation implements IEGitOperation {
// for "workspace patches" add project header each time project changes
if (DiffHeaderFormat.WORKSPACE == headerFormat) {
IProject p = getProject(ent);
- if (!p.equals(project)) {
+ if (p != null && !p.equals(project)) {
project = p;
getOutputStream().write(
encodeASCII("#P " + project.getName() + "\n")); //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/UntrackOperation.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/UntrackOperation.java
index c18024bda7..566e7071eb 100644
--- a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/UntrackOperation.java
+++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/UntrackOperation.java
@@ -116,6 +116,9 @@ public class UntrackOperation implements IEGitOperation {
private void remove(final IResource path) throws CoreException {
final IProject proj = path.getProject();
+ if (proj == null) {
+ return;
+ }
final GitProjectData pd = GitProjectData.get(proj);
if (pd == null)
return;
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/staging/StagingFolderEntry.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/staging/StagingFolderEntry.java
index 941d399ed7..1076bef74b 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/staging/StagingFolderEntry.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/staging/StagingFolderEntry.java
@@ -16,6 +16,7 @@ import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IPath;
import org.eclipse.egit.core.internal.util.ResourceUtil;
import org.eclipse.egit.ui.internal.decorators.IProblemDecoratable;
+import org.eclipse.jgit.annotations.NonNull;
/**
* A staged/unstaged folder entry in the tree
@@ -84,6 +85,8 @@ public class StagingFolderEntry implements IAdaptable, IProblemDecoratable {
/**
* @return the absolute path corresponding to the folder entry
*/
+ @SuppressWarnings("null")
+ @NonNull
public IPath getLocation() {
return repoLocation.append(repoRelativePath);
}

Back to the top