)]}'
{
  "commit": "1eb6ed01bf9b705c1a75dbeff08dd9d3dc86ba08",
  "tree": "f70f9cf86dba0ea3c11a25457a47f862618ec525",
  "parents": [
    "6dbcde7b2ff4c1a16a0df9c60d147161d7b52a9a"
  ],
  "author": {
    "name": "David Ostrovsky",
    "email": "david@ostrovsky.org",
    "time": "Thu Jun 25 11:32:28 2026 +0200"
  },
  "committer": {
    "name": "Matthias Sohn",
    "email": "matthias.sohn@sap.com",
    "time": "Tue Jul 07 11:10:14 2026 +0200"
  },
  "message": "junit.http: Extract AppServerBase to dedupe the EE8 AppServer overlay\n\nThe EE8 servlet bridge ships a hand-maintained\norg.eclipse.jgit.junit.http.ee8 AppServer because the canonical\nAppServer cannot be rewritten into its EE8 form automatically: the Jetty\nsecurity API (Constraint.Builder + ContextHandler juggling) differs\nstructurally from the Jetty EE8 one (ServletConstraint +\nsetSecurityHandler), which a jakarta-\u003ejavax string rewrite cannot\nbridge. The overlay was a 461-line copy; only ~40 lines diverge.\n\nSplit the common code into an abstract AppServerBase and reduce both\nAppServers to the generation-specific part:\n\n  AppServerBase            common server/context/login wiring plus the\n                           protected abstract configureAuthentication()\n                           method; transform-safe (only the\n                           ServletContextHandler import renames ee10 -\u003e\n                           ee8).\n  AppServer (canonical)    EE10: Constraint.Builder + setHandler.\n  AppServer (ee8 overlay)  EE8: ServletConstraint + setSecurityHandler.\n                           461 -\u003e 103 lines.\n\nBoth toolchains pick AppServerBase up for free: the Bazel transform and\nthe Maven antrun copy both exclude only the file name AppServer.java, so\nAppServerBase.java flows through the jakarta-\u003ejavax / ee10-\u003eee8 rewrite\nwhile the hand-written EE8 AppServer.java stays the overlay. No BUILD or\npom changes. The class stays named AppServer in both worlds (separate\nclasspaths), so every \"new AppServer(...)\" site is untouched.\n\nMoving the shared username/password constants into AppServerBase turns\nthe AppServer.username uses in the HTTP tests into an indirect static\naccess, which JGit\u0027s ecj settings escalate to a compile error (caught by\nMaven, not by the Bazel javac build). Reference the declaring class\n(AppServerBase.username) instead of re-declaring the constants on both\nAppServers, which would reintroduce the duplication this change removes.\n\nAlternative considered: renaming the EE8 overlay to EE8AppServer.\nRejected because a distinct name forces rewriting every\n\"new AppServer(...)\" site in the transformed EE8 tests and couples the\ntransform to class names instead of imports.\n\nCopyright is carried over unchanged from the split file.\n\nChange-Id: I1d68bcc7d1d23668696ee91d8910f4940064bb37\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3937627f53c2ae8898d03e8cdf7c2a7d946e05e9",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/HttpClientTests.java",
      "new_id": "2737a492fc2f3ba971c7b1612b31ec94c66859a7",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/HttpClientTests.java"
    },
    {
      "type": "modify",
      "old_id": "b0d17adb3a0a1c9f9434255666b2de75db78bee4",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java",
      "new_id": "46a48f7e704d29f01d36293e9b438dfe3506bc1a",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java"
    },
    {
      "type": "modify",
      "old_id": "1e4c7966b601fb924686d1cf08885e821438479b",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit.junit.http.ee8/src/org/eclipse/jgit/junit/http/AppServer.java",
      "new_id": "3627d920a89eeffe6145a2e73e31d1d1fbdedb8d",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit.junit.http.ee8/src/org/eclipse/jgit/junit/http/AppServer.java"
    },
    {
      "type": "modify",
      "old_id": "76e437bc3d655e5920ecf6aabe550f3500c90f63",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/AppServer.java",
      "new_id": "3a4bce7419ef4609fa5e7e4478d20b3661515d68",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/AppServer.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bc2baadd83776b46c04cdadaf9c5963b4c550ed8",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/AppServerBase.java"
    }
  ]
}
