Merge branch 'stable-3.8' into stable-3.9

* stable-3.8:
  Emit refUpdate event upon copy-approvals
  Revert "Enforce Java 11 source version with JDK17"
  Enforce Java 11 source version with JDK17
  javadoc: Include the default jvm options
  Add ProjectHeadUpdatedEvent to EventTypes

Release-Notes: skip
Change-Id: I2a6101789c9ef7419915d0c7a03f6ab8db57bbd8
diff --git a/java/com/google/gerrit/server/events/EventTypes.java b/java/com/google/gerrit/server/events/EventTypes.java
index 1d65e06..4cc7198 100644
--- a/java/com/google/gerrit/server/events/EventTypes.java
+++ b/java/com/google/gerrit/server/events/EventTypes.java
@@ -35,6 +35,7 @@
     register(PatchSetCreatedEvent.TYPE, PatchSetCreatedEvent.class);
     register(PrivateStateChangedEvent.TYPE, PrivateStateChangedEvent.class);
     register(ProjectCreatedEvent.TYPE, ProjectCreatedEvent.class);
+    register(ProjectHeadUpdatedEvent.TYPE, ProjectHeadUpdatedEvent.class);
     register(RefReceivedEvent.TYPE, RefReceivedEvent.class);
     register(RefUpdatedEvent.TYPE, RefUpdatedEvent.class);
     register(ReviewerAddedEvent.TYPE, ReviewerAddedEvent.class);
diff --git a/javatests/com/google/gerrit/server/events/EventDeserializerTest.java b/javatests/com/google/gerrit/server/events/EventDeserializerTest.java
index 0aaa437..ffdd2a1 100644
--- a/javatests/com/google/gerrit/server/events/EventDeserializerTest.java
+++ b/javatests/com/google/gerrit/server/events/EventDeserializerTest.java
@@ -248,6 +248,21 @@
   }
 
   @Test
+  public void projectHeadUpdatedEvent() {
+    ProjectHeadUpdatedEvent event = new ProjectHeadUpdatedEvent();
+    event.projectName = "test_project";
+    event.oldHead = "refs/heads/master";
+    event.newHead = "refs/heads/main";
+
+    ProjectHeadUpdatedEvent actual = roundTrip(event);
+
+    assertThat(actual).isNotNull();
+    assertThat(actual.projectName).isEqualTo(event.projectName);
+    assertThat(actual.oldHead).isEqualTo(event.oldHead);
+    assertThat(actual.newHead).isEqualTo(event.newHead);
+  }
+
+  @Test
   public void shouldSerializeAllProjectsToString() {
     String allProjectsString = "foobar";
     AllProjectsName allProjectsNameKey = new AllProjectsName(allProjectsString);
diff --git a/tools/bzl/javadoc.bzl b/tools/bzl/javadoc.bzl
index a181104..5aba90e 100644
--- a/tools/bzl/javadoc.bzl
+++ b/tools/bzl/javadoc.bzl
@@ -37,6 +37,7 @@
         "mkdir %s" % dir,
         " ".join([
             "%s/bin/javadoc" % ctx.attr._jdk[java_common.JavaRuntimeInfo].java_home,
+            " ".join(["-J%s" % opt for opt in ctx.fragments.java.default_jvm_opts]),
             "-Xdoclint:-missing",
             "-protected",
             "-encoding UTF-8",
@@ -75,4 +76,5 @@
     },
     outputs = {"zip": "%{name}.zip"},
     implementation = _impl,
+    fragments = ["java"],
 )