Adapt to PluginConfig and ProjectConfig changes in master

ProjectCreationValidator: adapt to PluginConfig.getGroupReference now
returning an Optional.

ProjectCreationValidatorIT: adapt to ProjectConfig's new
updatePluginConfig method.

Change-Id: I0cf0d305d184fd398adfb84c13742d72bdbab870
diff --git a/src/main/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidator.java b/src/main/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidator.java
index bff257e..2c50e81 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidator.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidator.java
@@ -41,6 +41,7 @@
 import com.google.inject.Inject;
 import com.google.inject.Provider;
 import com.google.inject.Singleton;
+import java.util.Optional;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -235,18 +236,18 @@
 
   private boolean isInDelegatingGroup(Project.NameKey parentCtrl) {
     try {
-      GroupReference delegateProjectCreationTo =
+      Optional<GroupReference> groupReference =
           cfg.getFromProjectConfigWithInheritance(parentCtrl, pluginName)
               .getGroupReference(DELEGATE_PROJECT_CREATION_TO);
-      if (delegateProjectCreationTo == null) {
-        return false;
+      if (groupReference.isPresent()) {
+        GroupReference delegateProjectCreationTo = groupReference.get();
+        log.debug("delegateProjectCreationTo: {}", delegateProjectCreationTo);
+        GroupMembership effectiveGroups = self.get().getEffectiveGroups();
+        return effectiveGroups.contains(delegateProjectCreationTo.getUUID());
       }
-      log.debug("delegateProjectCreationTo: {}", delegateProjectCreationTo);
-      GroupMembership effectiveGroups = self.get().getEffectiveGroups();
-      return effectiveGroups.contains(delegateProjectCreationTo.getUUID());
     } catch (NoSuchProjectException e) {
       log.error("isInDelegatingGroup with error ({}): {}", e.getClass().getName(), e.getMessage());
-      return false;
     }
+    return false;
   }
 }
diff --git a/src/test/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidatorIT.java b/src/test/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidatorIT.java
index 7e87c92..226dc1b 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidatorIT.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidatorIT.java
@@ -230,10 +230,12 @@
     try (ProjectConfigUpdate cfgUpdate = updateProject(parentNameKey)) {
       ProjectConfig cfg = cfgUpdate.getConfig();
       String gId = gApi.groups().id(delegatingGroup).get().id;
-      cfg.getPluginConfig(PLUGIN_NAME)
-          .setGroupReference(
-              ProjectCreationValidator.DELEGATE_PROJECT_CREATION_TO,
-              GroupReference.create(AccountGroup.UUID.parse(gId), delegatingGroup));
+      cfg.updatePluginConfig(
+          PLUGIN_NAME,
+          pluginCfg ->
+              pluginCfg.setGroupReference(
+                  ProjectCreationValidator.DELEGATE_PROJECT_CREATION_TO,
+                  GroupReference.create(AccountGroup.UUID.parse(gId), delegatingGroup)));
       cfgUpdate.save();
     }
     userRestSession.put("/projects/" + Url.encode(parent + "/childProject"), in).assertCreated();
@@ -253,10 +255,12 @@
     try (ProjectConfigUpdate cfgUpdate = updateProject(parentNameKey)) {
       ProjectConfig cfg = cfgUpdate.getConfig();
       String gId = gApi.groups().id(delegatingGroup).get().id;
-      cfg.getPluginConfig(PLUGIN_NAME)
-          .setGroupReference(
-              ProjectCreationValidator.DELEGATE_PROJECT_CREATION_TO,
-              GroupReference.create(AccountGroup.UUID.parse(gId), delegatingGroup));
+      cfg.updatePluginConfig(
+          PLUGIN_NAME,
+          pluginCfg ->
+              pluginCfg.setGroupReference(
+                  ProjectCreationValidator.DELEGATE_PROJECT_CREATION_TO,
+                  GroupReference.create(AccountGroup.UUID.parse(gId), delegatingGroup)));
       cfgUpdate.save();
     }
 
@@ -304,12 +308,17 @@
     try (ProjectConfigUpdate cfgUpdate = updateProject(parentNameKey)) {
       ProjectConfig cfg = cfgUpdate.getConfig();
       String gId = gApi.groups().id(delegatingGroup).get().id;
-      cfg.getPluginConfig(PLUGIN_NAME)
-          .setGroupReference(
-              ProjectCreationValidator.DELEGATE_PROJECT_CREATION_TO,
-              GroupReference.create(AccountGroup.UUID.parse(gId), delegatingGroup));
-      cfg.getPluginConfig(PLUGIN_NAME)
-          .setBoolean(ProjectCreationValidator.DISABLE_GRANTING_PROJECT_OWNERSHIP, true);
+      cfg.updatePluginConfig(
+          PLUGIN_NAME,
+          pluginCfg ->
+              pluginCfg.setGroupReference(
+                  ProjectCreationValidator.DELEGATE_PROJECT_CREATION_TO,
+                  GroupReference.create(AccountGroup.UUID.parse(gId), delegatingGroup)));
+      cfg.updatePluginConfig(
+          PLUGIN_NAME,
+          pluginCfg ->
+              pluginCfg.setBoolean(
+                  ProjectCreationValidator.DISABLE_GRANTING_PROJECT_OWNERSHIP, true));
       cfgUpdate.save();
     }
 
@@ -346,8 +355,11 @@
     Project.NameKey parentNameKey = Project.nameKey(parent);
     try (ProjectConfigUpdate cfgUpdate = updateProject(parentNameKey)) {
       ProjectConfig cfg = cfgUpdate.getConfig();
-      cfg.getPluginConfig(PLUGIN_NAME)
-          .setString(ProjectCreationValidator.DELEGATE_PROJECT_CREATION_TO, delegatingGroup);
+      cfg.updatePluginConfig(
+          PLUGIN_NAME,
+          pluginCfg ->
+              pluginCfg.setString(
+                  ProjectCreationValidator.DELEGATE_PROJECT_CREATION_TO, delegatingGroup));
       cfgUpdate.save();
     }
     userRestSession.put("/projects/" + Url.encode(parent + "/childProject"), in).assertConflict();
@@ -384,10 +396,12 @@
     try (ProjectConfigUpdate cfgUpdate = updateProject(parentNameKey)) {
       ProjectConfig cfg = cfgUpdate.getConfig();
       String gId = gApi.groups().id(delegatingGroup).get().id;
-      cfg.getPluginConfig(PLUGIN_NAME)
-          .setGroupReference(
-              ProjectCreationValidator.DELEGATE_PROJECT_CREATION_TO,
-              GroupReference.create(AccountGroup.UUID.parse(gId), delegatingGroup));
+      cfg.updatePluginConfig(
+          PLUGIN_NAME,
+          pluginCfg ->
+              pluginCfg.setGroupReference(
+                  ProjectCreationValidator.DELEGATE_PROJECT_CREATION_TO,
+                  GroupReference.create(AccountGroup.UUID.parse(gId), delegatingGroup)));
       cfgUpdate.save();
     }
     userRestSession.put("/projects/" + Url.encode(parent + "/childProject"), in).assertCreated();
@@ -419,10 +433,12 @@
     try (ProjectConfigUpdate cfgUpdate = updateProject(parentNameKey)) {
       ProjectConfig cfg = cfgUpdate.getConfig();
       String gId = gApi.groups().id(delegatingGroup).get().id;
-      cfg.getPluginConfig(PLUGIN_NAME)
-          .setGroupReference(
-              ProjectCreationValidator.DELEGATE_PROJECT_CREATION_TO,
-              GroupReference.create(AccountGroup.UUID.parse(gId), delegatingGroup));
+      cfg.updatePluginConfig(
+          PLUGIN_NAME,
+          pluginCfg ->
+              pluginCfg.setGroupReference(
+                  ProjectCreationValidator.DELEGATE_PROJECT_CREATION_TO,
+                  GroupReference.create(AccountGroup.UUID.parse(gId), delegatingGroup)));
       cfgUpdate.save();
     }
     userRestSession.put("/projects/" + Url.encode(parent + "/childProject"), in).assertConflict();
@@ -452,10 +468,12 @@
     try (ProjectConfigUpdate cfgUpdate = updateProject(parentNameKey)) {
       ProjectConfig cfg = cfgUpdate.getConfig();
       String gId = "fake-gId";
-      cfg.getPluginConfig(PLUGIN_NAME)
-          .setGroupReference(
-              ProjectCreationValidator.DELEGATE_PROJECT_CREATION_TO,
-              GroupReference.create(AccountGroup.UUID.parse(gId), delegatingGroup));
+      cfg.updatePluginConfig(
+          PLUGIN_NAME,
+          pluginCfg ->
+              pluginCfg.setGroupReference(
+                  ProjectCreationValidator.DELEGATE_PROJECT_CREATION_TO,
+                  GroupReference.create(AccountGroup.UUID.parse(gId), delegatingGroup)));
       cfgUpdate.save();
     }
     userRestSession.put("/projects/" + Url.encode(parent + "/childProject"), in).assertConflict();
@@ -490,10 +508,12 @@
       ProjectConfig cfg = cfgUpdate.getConfig();
 
       String gId = gApi.groups().id(delegatingGroup).get().id;
-      cfg.getPluginConfig("project-group-structure")
-          .setGroupReference(
-              ProjectCreationValidator.DELEGATE_PROJECT_CREATION_TO,
-              GroupReference.create(AccountGroup.UUID.parse(gId), delegatingGroup));
+      cfg.updatePluginConfig(
+          PLUGIN_NAME,
+          pluginCfg ->
+              pluginCfg.setGroupReference(
+                  ProjectCreationValidator.DELEGATE_PROJECT_CREATION_TO,
+                  GroupReference.create(AccountGroup.UUID.parse(gId), delegatingGroup)));
       cfgUpdate.save();
 
       String newDelegatingGroup = name("groupC");