Merge "Allow loading Project Access when there is no refs/meta/config" into stable
diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/project/ChangeProjectAccess.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/project/ChangeProjectAccess.java
index 09cfbb4..18d037f 100644
--- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/project/ChangeProjectAccess.java
+++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/project/ChangeProjectAccess.java
@@ -53,7 +53,8 @@
 class ChangeProjectAccess extends Handler<ProjectAccess> {
   interface Factory {
     ChangeProjectAccess create(@Assisted Project.NameKey projectName,
-        @Assisted ObjectId base, @Assisted List<AccessSection> sectionList,
+        @Nullable @Assisted ObjectId base,
+        @Assisted List<AccessSection> sectionList,
         @Nullable @Assisted String message);
   }
 
@@ -75,7 +76,8 @@
       final MetaDataUpdate.User metaDataUpdateFactory,
 
       @Assisted final Project.NameKey projectName,
-      @Assisted final ObjectId base, @Assisted List<AccessSection> sectionList,
+      @Nullable @Assisted final ObjectId base,
+      @Assisted List<AccessSection> sectionList,
       @Nullable @Assisted String message) {
     this.projectAccessFactory = projectAccessFactory;
     this.projectControlFactory = projectControlFactory;
diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/project/ProjectAccessFactory.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/project/ProjectAccessFactory.java
index 440366b..76e1f2b 100644
--- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/project/ProjectAccessFactory.java
+++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/project/ProjectAccessFactory.java
@@ -177,7 +177,10 @@
     }
 
     final ProjectAccess detail = new ProjectAccess();
-    detail.setRevision(config.getRevision().name());
+
+    if (config.getRevision() != null) {
+      detail.setRevision(config.getRevision().name());
+    }
 
     if (projectName.equals(allProjectsName)) {
       if (pc.isOwner()) {
diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/project/ProjectAdminServiceImpl.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/project/ProjectAdminServiceImpl.java
index 0f9ffff..47b3e3e 100644
--- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/project/ProjectAdminServiceImpl.java
+++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/project/ProjectAdminServiceImpl.java
@@ -85,7 +85,12 @@
   public void changeProjectAccess(Project.NameKey projectName,
       String baseRevision, String msg, List<AccessSection> sections,
       AsyncCallback<ProjectAccess> cb) {
-    ObjectId base = ObjectId.fromString(baseRevision);
+    ObjectId base;
+    if (baseRevision != null && !baseRevision.isEmpty()) {
+      base = ObjectId.fromString(baseRevision);
+    } else {
+      base = null;
+    }
     changeProjectAccessFactory.create(projectName, base, sections, msg).to(cb);
   }