Fix NPE when removing refs
When refs are removed, the new ref object could be null and thus
needs to be properly managed in the shared-ref logging to avoid NPEs.
Change-Id: Ic01aaf96851331edada473df3312832953e9b836
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/Log4jSharedRefLogger.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/Log4jSharedRefLogger.java
index 5930576..8830e19 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/multisite/Log4jSharedRefLogger.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/Log4jSharedRefLogger.java
@@ -64,17 +64,19 @@
RevWalk walk = new RevWalk(repository)) {
GitPerson committer = null;
String commitMessage = null;
- int objectType = walk.parseAny(newRefValue).getType();
- switch (objectType) {
- case OBJ_COMMIT:
- RevCommit commit = walk.parseCommit(newRefValue);
- committer = CommonConverters.toGitPerson(commit.getCommitterIdent());
- commitMessage = commit.getShortMessage();
- break;
- case OBJ_BLOB:
- break;
- default:
- throw new IncorrectObjectTypeException(newRefValue, Constants.typeString(objectType));
+ if (newRefValue != null) {
+ int objectType = walk.parseAny(newRefValue).getType();
+ switch (objectType) {
+ case OBJ_COMMIT:
+ RevCommit commit = walk.parseCommit(newRefValue);
+ committer = CommonConverters.toGitPerson(commit.getCommitterIdent());
+ commitMessage = commit.getShortMessage();
+ break;
+ case OBJ_BLOB:
+ break;
+ default:
+ throw new IncorrectObjectTypeException(newRefValue, Constants.typeString(objectType));
+ }
}
sharedRefDBLog.info(
gson.toJson(
@@ -82,7 +84,7 @@
project,
currRef.getName(),
currRef.getObjectId().getName(),
- newRefValue.getName(),
+ newRefValue == null ? ObjectId.zeroId().name() : newRefValue.getName(),
committer,
commitMessage)));
} catch (IOException e) {