)]}'
{
  "log": [
    {
      "commit": "d12b5456e56b74ca6a48380e5587d93f31886fb8",
      "tree": "6919bb336f97b6265bf5fc572c91f7624498df98",
      "parents": [
        "c3e66583d5c6d44803e162c629468e22451b03f7"
      ],
      "author": {
        "name": "The Apache Software Foundation",
        "email": "root-asf-gitbox-commits@apache.org",
        "time": "Fri May 15 19:25:39 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 15 20:25:39 2026 -0400"
      },
      "message": "Set up default protection ruleset for default and release branches (#81)"
    },
    {
      "commit": "c3e66583d5c6d44803e162c629468e22451b03f7",
      "tree": "ca00072afdca18b1f11ad59ca45ddb8f6af73af1",
      "parents": [
        "17c1e6a54624d54d82eb97319ed6cb73c0fa4570"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Wed Apr 29 21:52:53 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 29 21:52:53 2026 -0400"
      },
      "message": "Remove unused httpclient5 dependency (#80)\n\nAlso bump spotbugs and checkstyle to latest versions."
    },
    {
      "commit": "17c1e6a54624d54d82eb97319ed6cb73c0fa4570",
      "tree": "83780ec88335f283ad868822c1c661cdf18f29d1",
      "parents": [
        "10e3398d0950129282fa3dcc44bb54f4f1925f45"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Tue Mar 24 18:20:42 2026 -0400"
      },
      "committer": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Tue Mar 24 18:20:42 2026 -0400"
      },
      "message": "Fix shellcheck\n"
    },
    {
      "commit": "10e3398d0950129282fa3dcc44bb54f4f1925f45",
      "tree": "2887e54a6e10caeb71d7cdb909a081c755ab7f13",
      "parents": [
        "37a6f9aea6163dfdc2c5219b5ae595f9bb5743b2"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Tue Mar 24 18:06:44 2026 -0400"
      },
      "committer": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Tue Mar 24 18:06:44 2026 -0400"
      },
      "message": "Trivial plugin update and release candidate script\n\n* Bump modernizer and checkstyle plugins\n* Update release candidate script to reduce differences with other\n  Accumulo repos\n"
    },
    {
      "commit": "37a6f9aea6163dfdc2c5219b5ae595f9bb5743b2",
      "tree": "c3b4733a33296ae14aed9ac2c3a920fbfec5b3c1",
      "parents": [
        "68a670d96aa1a7e49e2b847bc9143715d18b5a97"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Mon Mar 09 15:28:52 2026 -0400"
      },
      "committer": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Mon Mar 09 15:28:52 2026 -0400"
      },
      "message": "Add missing URL to POM\n"
    },
    {
      "commit": "68a670d96aa1a7e49e2b847bc9143715d18b5a97",
      "tree": "5a1d1ebe4f4adc133901291bdb769d07468cb4c9",
      "parents": [
        "7fe1f99bf89b94f3fcec183776b9def79d44f978"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Thu Mar 05 18:37:47 2026 -0500"
      },
      "committer": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Thu Mar 05 18:37:47 2026 -0500"
      },
      "message": "Apply standardized naming convention to artifact\n"
    },
    {
      "commit": "7fe1f99bf89b94f3fcec183776b9def79d44f978",
      "tree": "c12fca2af65d7a411f3f8ac6645a50dce73dc37c",
      "parents": [
        "e856ced6c3ba70b910c85d78388d3784a0d09c4d"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Thu Mar 05 18:18:54 2026 -0500"
      },
      "committer": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Thu Mar 05 18:18:54 2026 -0500"
      },
      "message": "Add JDK25 build check to GitHub Actions\n"
    },
    {
      "commit": "e856ced6c3ba70b910c85d78388d3784a0d09c4d",
      "tree": "b14d28f25bbafa33bd4c3d1e56a531e270aef40a",
      "parents": [
        "626a2d9f63dcdb0d8e3ca6e8796fccc47a4fed04",
        "c62e7430f4506814cde941a9d8f731cd2f57c451"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Mon Mar 02 14:37:18 2026 -0500"
      },
      "committer": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Mon Mar 02 14:37:18 2026 -0500"
      },
      "message": "Merge branch \u00271.0.0-rc2-next\u0027\n"
    },
    {
      "commit": "626a2d9f63dcdb0d8e3ca6e8796fccc47a4fed04",
      "tree": "8b3d700da843d1b2cb75643d64d6208d139edf8f",
      "parents": [
        "584e5bd40d6d2530f992fa8aae414fe6ca38941b"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Tue Feb 24 16:18:33 2026 -0500"
      },
      "committer": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Tue Feb 24 16:18:33 2026 -0500"
      },
      "message": "Remove IDE files\n"
    },
    {
      "commit": "c62e7430f4506814cde941a9d8f731cd2f57c451",
      "tree": "4ecc61dc19b715a2b1a9039835efea52d8c18507",
      "parents": [
        "6ac0da35d06421a9f2e43d65391b625b05756482"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Tue Feb 24 15:09:31 2026 -0500"
      },
      "committer": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Tue Feb 24 15:09:31 2026 -0500"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "6ac0da35d06421a9f2e43d65391b625b05756482",
      "tree": "8797e9205b33e8fd41a035a9625ebc079f2278fa",
      "parents": [
        "584e5bd40d6d2530f992fa8aae414fe6ca38941b"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Tue Feb 24 15:09:31 2026 -0500"
      },
      "committer": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Tue Feb 24 15:09:31 2026 -0500"
      },
      "message": "[maven-release-plugin] prepare release rel/accumulo-classloader-extras-1.0.0\n"
    },
    {
      "commit": "584e5bd40d6d2530f992fa8aae414fe6ca38941b",
      "tree": "23177d95ac89c5eb772cb09f28a03bf5a2b8c7f7",
      "parents": [
        "10e3ed1034d0a2ac9955cbd44ff74846214eb1e9"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Tue Feb 24 15:07:13 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 24 15:07:13 2026 -0500"
      },
      "message": "Fix Manifest/Resource equals/hashCode and add errorprone (#77)\n\n* Add errorprone CI checks to GitHub Actions and compat checks for\n  Accumulo 4.0\n* Update code to fix items caught by errorprone\n* Rename manifests field to monitoredManifests, just to make it more\n  obvious that it is tracking the manifests currently being monitored\n* Fix equals and hashCode methods for Manifest and Resource, to account\n  for comment and algorithm fields, respectively\n* Add test for deduplication of resources in a json"
    },
    {
      "commit": "10e3ed1034d0a2ac9955cbd44ff74846214eb1e9",
      "tree": "1f7da719705a8f6254ca488331ea52491c4e1041",
      "parents": [
        "4c14a28389c5e21a5928bfb336e36670c00f7c2f"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Thu Feb 19 15:26:43 2026 -0500"
      },
      "committer": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Thu Feb 19 15:26:43 2026 -0500"
      },
      "message": "Improve release helper script\n\n* Get proj names from pom.xml\n* Display the name better for the email\n"
    },
    {
      "commit": "4c14a28389c5e21a5928bfb336e36670c00f7c2f",
      "tree": "eba607b79f83fd4ae821f46a17fbee157c38e2e8",
      "parents": [
        "4c01aa9c476748a5e345abd98e15e5fdd65d7592"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Thu Feb 19 15:05:39 2026 -0500"
      },
      "committer": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Thu Feb 19 15:05:39 2026 -0500"
      },
      "message": "Fix release helper script\n\nDon\u0027t prompt for binary tarball SHA\n"
    },
    {
      "commit": "4c01aa9c476748a5e345abd98e15e5fdd65d7592",
      "tree": "d4d2bad18ede8bd8e8bf0921da1d0ab4469a623a",
      "parents": [
        "b7a02c1f41427c6bbc114e7445f186a5caa81ccf"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Thu Feb 19 14:51:30 2026 -0500"
      },
      "committer": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Thu Feb 19 14:51:30 2026 -0500"
      },
      "message": "Fix tagPrefix in release helper script\n"
    },
    {
      "commit": "b7a02c1f41427c6bbc114e7445f186a5caa81ccf",
      "tree": "6d49fce55ca6021ea0ce6dbb86d8ce94ed315d93",
      "parents": [
        "5c92ecd0424187b02b8d8d05c8358202538e53be"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Thu Feb 19 14:44:59 2026 -0500"
      },
      "committer": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Thu Feb 19 14:44:59 2026 -0500"
      },
      "message": "Set preparationProfiles\n"
    },
    {
      "commit": "5c92ecd0424187b02b8d8d05c8358202538e53be",
      "tree": "33b82b59c7b813b23af59d6122ace4f666ab8f76",
      "parents": [
        "2b5725a7422d34ff1e091ba5acb7e72146108380"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Thu Feb 19 14:36:59 2026 -0500"
      },
      "committer": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Thu Feb 19 14:36:59 2026 -0500"
      },
      "message": "Clarify that resources are jars in README\n\nThis fixes #76\n"
    },
    {
      "commit": "2b5725a7422d34ff1e091ba5acb7e72146108380",
      "tree": "3414297440f66d633dd6c5f38624756e653db37c",
      "parents": [
        "0f559dd1c683a45fee8be9fc504acf871aba5b23"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Wed Feb 18 17:55:39 2026 -0500"
      },
      "committer": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Wed Feb 18 17:55:39 2026 -0500"
      },
      "message": "Update build for release candidates\n"
    },
    {
      "commit": "0f559dd1c683a45fee8be9fc504acf871aba5b23",
      "tree": "c640a32d2fc173c0cbde60556d33da3b9a57dfdf",
      "parents": [
        "7d87c047989dd2807b21f591ba5c910af317aeb6"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Wed Feb 18 17:31:04 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 18 17:31:04 2026 -0500"
      },
      "message": "Add an optional comment field to the Manifest (#75)\n\n* Test that the optional comment field can be completely omitted from\n  the JSON\n* Add test to verify that monitor interval and resources are absolutely\n  required when downloading a manifest (though it\u0027s okay to have an\n  empty set of resources)\n* For the CLI tool, use a default comment that has the creation\n  timestamp, and allow specifying an empty set of URLs\n  (useful for testing, or phasing out a context still being monitored, etc.)\n"
    },
    {
      "commit": "7d87c047989dd2807b21f591ba5c910af317aeb6",
      "tree": "9fa45790f94f2062a9584e03b7e6e133755fce6c",
      "parents": [
        "c0dfb1fd405398e669ac6c5b92035d2d17f17a7f"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Wed Feb 18 14:55:25 2026 -0500"
      },
      "committer": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Wed Feb 18 14:55:25 2026 -0500"
      },
      "message": "Use directory named the same as the artifact\n"
    },
    {
      "commit": "c0dfb1fd405398e669ac6c5b92035d2d17f17a7f",
      "tree": "73deea388f9fd0f33caeedb7d5f1c2a576240b25",
      "parents": [
        "bf41bda62221e7257a4d380773e9835bfa125dd9"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Wed Feb 18 14:50:34 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 18 14:50:34 2026 -0500"
      },
      "message": "More improvements for Java 21 (#74)\n\nFuture-proof for Java 21:\n\n* Avoid deprecated URL constructor\n* Use URI instead of String in some places to make it easier to create a\n  URL when we need it\n* Avoid Thread.getId (deprecated in Java 19), and just use the\n  Thread.toString (which includes the thread name and the thread ID)\n* Use URI.resolve to construct HDFS URLs in tests rather than String\n  concatenation (must be used cautiously, due to HADOOP-19815, but still\n  better than String concatenation)\n* Avoid deprecated exec method for launching umask by removing\n  unnecessary DFS config code (default behavior is sufficient for these)\n* Put spotbugs and auto-service-annotations as optional compile time\n  dependency for every module (simplifies POMs) to ensure consistent\n  annotation processor execution\n\nAlso improve the build a bit more:\n\n* Remove unused commons-vfs2-bom import dependency\n* Improve concurrent delete test slightly to guarantee at least one\n  classloader per thread, and make test pass when it creates fewer\n  classloaders than we hope (it makes as many as it can in 10 seconds,\n  but it might not make as many as the 50 it was previously expecting)\n"
    },
    {
      "commit": "bf41bda62221e7257a4d380773e9835bfa125dd9",
      "tree": "9daaace28f413598e72bf7397ad787e1ee43b5ef",
      "parents": [
        "78a5561ec504acb57e8a12ca074b574554afa442"
      ],
      "author": {
        "name": "Daniel Roberts",
        "email": "ddanielr@gmail.com",
        "time": "Tue Feb 17 13:37:26 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 17 13:37:26 2026 -0500"
      },
      "message": "Use specific assertions instead of assertTrue (#73)\n\nChanges test code to use assertInstanceOf and assertFalse instead of\nconditional checks with assertTrue.\n"
    },
    {
      "commit": "78a5561ec504acb57e8a12ca074b574554afa442",
      "tree": "7687b8dbb2ff6d023327aa1b8d519eee2996f491",
      "parents": [
        "21626c06236d6a96ed0c53ef7fc9c38c3d449a9a"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Tue Feb 17 12:15:57 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 17 12:15:57 2026 -0500"
      },
      "message": "Apply updates for building with Java 21 and more (#72)\n\n* Update GitHub Actions\n* Fix serialization problem with HardLinkFailedException by making\n  fields transient\n* Avoid memoizing Supplier for lazy initialization of manifest checksum\n* Update parent POM and plugins, and test dependencies\n* Add analysis for unused exclusions from dependencies"
    },
    {
      "commit": "21626c06236d6a96ed0c53ef7fc9c38c3d449a9a",
      "tree": "fb7e829d37ef1768aaa1f04c374a08589c49de40",
      "parents": [
        "2c3eb3b18d30d9fa18d744584c4595e4b4ffca9f"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Fri Feb 13 14:04:12 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 13 14:04:12 2026 -0500"
      },
      "message": "Prepare to release CachingClassLoaderFactory (#71)\n\n* Prevent deployment of example jars\n* Add index to top level README\n* Fix title in hdfs URL provider README\n* Remove VFS factory (keep historical reference in README)"
    },
    {
      "commit": "2c3eb3b18d30d9fa18d744584c4595e4b4ffca9f",
      "tree": "40c9ebdb773e345fa7fa4f954812133fb5103d70",
      "parents": [
        "39afc71d52458474c0ccdffee996f2cd2bee66c4"
      ],
      "author": {
        "name": "Keith Turner",
        "email": "kturner@apache.org",
        "time": "Mon Feb 09 17:12:44 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 09 14:12:44 2026 -0800"
      },
      "message": "adds quickstart to caching classloader readme (#70)\n\n\n\nCo-authored-by: Christopher Tubbs \u003cctubbsii@apache.org\u003e"
    },
    {
      "commit": "39afc71d52458474c0ccdffee996f2cd2bee66c4",
      "tree": "334b8200107788c895343f34cae179da57a529a0",
      "parents": [
        "d20da30a091b63cd0142ad16299ec660336729a6"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Mon Feb 09 15:26:01 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 09 15:26:01 2026 -0500"
      },
      "message": "Create init utility (#69)\n\n* Move CLI commands into separate package\n* Minor refactor to allow LocalStore to be initialized and to store\n  without creating a classloader to avoid utility from leaving behind\n  unnecessary working directories\n* Ensure monitor threads are daemon threads (observed that they held up\n  process exit before refactoring LocalStore to be used without creating\n  a classloader; now unneeded, but still a good change)\n"
    },
    {
      "commit": "d20da30a091b63cd0142ad16299ec660336729a6",
      "tree": "54223958a6b0aa256b5cfc2bf39104ede01b5388",
      "parents": [
        "fc7895882706fa31f335bdfc4a0d2c738381f366"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Fri Feb 06 14:38:06 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 06 14:38:06 2026 -0500"
      },
      "message": "Rebrand to CachingClassLoaderFactory (#68)\n\n* Use shorter name \"Caching\" (dropping \"Local\" and \"Context\") for improved branding\n* Shorten \"ContextDefinition\" to \"Manifest\"\n* Improve javadoc and README\n* Reduce class visiblity (reduce the number that are public) and\n  consolidate into fewer packages (also helps with Logger names, since\n  the parent package will be \"cargo\" for the Logger instances)\n* Make optional grace period property re-configurable on a running\n  system"
    },
    {
      "commit": "fc7895882706fa31f335bdfc4a0d2c738381f366",
      "tree": "1c1bf97cb985efef073482997619f0039be40952",
      "parents": [
        "a83e25a3c15c9a39fea2e10c8216c2f2a6b99225"
      ],
      "author": {
        "name": "Keith Turner",
        "email": "kturner@apache.org",
        "time": "Thu Feb 05 16:43:18 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 05 16:43:18 2026 -0500"
      },
      "message": "use constants for dir names (#66)\n\n* Use constants for directory names\n* Remove unused Logger in test\n* Use unique dirname for base cache directory in tests\n\n---------\n\nCo-authored-by: Christopher Tubbs \u003cctubbsii@apache.org\u003e"
    },
    {
      "commit": "a83e25a3c15c9a39fea2e10c8216c2f2a6b99225",
      "tree": "c52d2b13ab43a55f54d53bd694a657503659225e",
      "parents": [
        "c6c4e1aa4a31b951439ae9498d1cff033c361263"
      ],
      "author": {
        "name": "Keith Turner",
        "email": "kturner@apache.org",
        "time": "Thu Feb 05 14:51:38 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 05 14:51:38 2026 -0500"
      },
      "message": "tests concurrent deletes of files in resources dir (#65)\n\n"
    },
    {
      "commit": "c6c4e1aa4a31b951439ae9498d1cff033c361263",
      "tree": "e8b2f35694afdced26dda5453b111c8981965b34",
      "parents": [
        "b770f23fa58ba0979113bacf1bd3c5a195726d85"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Wed Feb 04 19:42:23 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 04 19:42:23 2026 -0500"
      },
      "message": "Fix DigestUtils usage (#64)\n\nnew DigestUtils() instances are not thread-safe"
    },
    {
      "commit": "b770f23fa58ba0979113bacf1bd3c5a195726d85",
      "tree": "06fac4950522c526051d5a3c7c4cdaea7bf25e9a",
      "parents": [
        "a135d9c9bb07d41622e3d2ae15a89cc3cdfb815e"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Wed Feb 04 15:19:28 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 04 15:19:28 2026 -0500"
      },
      "message": "Avoid rapid cycling waiting for other downloads (#62)\n\nAdd a small sleep time to avoid rapid cycling while waiting on other\ndownloads before checking to see if they are still being downloaded or\nfinished."
    },
    {
      "commit": "a135d9c9bb07d41622e3d2ae15a89cc3cdfb815e",
      "tree": "75f1402d96348456f7755087c200410cf3195916",
      "parents": [
        "f325f87a89af1c68b0c1b6e15a2209280f7dc1c4"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Wed Feb 04 15:18:47 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 04 15:18:47 2026 -0500"
      },
      "message": "Verify hard links before use (#61)\n\nMove existing file verification to after the hard links are created to\navoid redundant verification of local files while other processes are\ndownloading other files, and to ensure the file actually being used by\nthe classloader has been verified.\n\nThis also moves the staging of the resources from the loader function\u0027s\nparameter Supplier to the loader function (LccUtils.createClassLoader),\nwhich simplifies the code slightly.\n\nThis fixes #59\n"
    },
    {
      "commit": "f325f87a89af1c68b0c1b6e15a2209280f7dc1c4",
      "tree": "7b31cf6dc223e7a9d38a7cd650d17cdfe41074b1",
      "parents": [
        "9444cc34c0711594f810c00b584cb9c08dcdd90c"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Wed Feb 04 10:44:29 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 04 10:44:29 2026 -0500"
      },
      "message": "Use hard-links to facilitate easier cleanup (#58)\n\n* Remove JMX features (use release version of Accumulo)\n* Update README to explain different directories and how they are used\n  and when they can be cleaned up\n* Use concrete class for cache key instead of String\n* Use hard links before classloader construction, to ensure the shared\n  resources directory is cleanable\n* Use temp file/dir creation utilities to get unique names, rather than UUID\n* Remove redundant NIO options\n* Adjust file naming conventions to account for new `working` directory\n* exclude unused native map from test dependencies\n* handle race condition during clean up by implementing a re-download of\n  the context files if necessary\n* retain test cases for checking files in use by listing the\n  hard-linked files\n* Add test for automatic cleanup of hard-link dirs\n* Remove URLClassLoaderParams and use LocalStore as param\n* Use ContextDefinition for creating the hard links\n* Discard any failed hard-link directories and start over with a new\n  hard link directory after ensuring all resources are fetched\n* Move log message to where hard-linked paths get added to classpath\n"
    },
    {
      "commit": "9444cc34c0711594f810c00b584cb9c08dcdd90c",
      "tree": "84197cb631f5b0090e48ffa5e433545f2f4c8940",
      "parents": [
        "204007565085030ad1b4fc6c6a72378f115d28aa"
      ],
      "author": {
        "name": "Keith Turner",
        "email": "kturner@apache.org",
        "time": "Fri Jan 30 16:57:29 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 30 19:57:29 2026 -0500"
      },
      "message": "Tests invalid and missing allowed URL (#57)\n\nfixes #56"
    },
    {
      "commit": "204007565085030ad1b4fc6c6a72378f115d28aa",
      "tree": "77ccbadf9a61841a20e38b45ba31e2f51b61a207",
      "parents": [
        "947441fdff0624cad67d1d99644ac61fec29c690"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Fri Jan 30 19:15:46 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 30 19:15:46 2026 -0500"
      },
      "message": "Add allowed URLs security property (#55)\n\nTo mitigate the risks of file disclosure vulnerabilities, a property is\nadded to ensure the library cannot copy data from unapproved sources,\ninto the local cache directory."
    },
    {
      "commit": "947441fdff0624cad67d1d99644ac61fec29c690",
      "tree": "1f09a0542f2a9eb6c5f14492a7a659921290ab65",
      "parents": [
        "c492250e9a8275982ecc954acdb3c1212624a232"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Thu Jan 29 12:18:53 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 29 12:18:53 2026 -0500"
      },
      "message": "Support additional checksum algorithms (#53)\n\n* Use checksum algorithms defined in the Resource to verify the checksum\n* Support any algorithm supported by the JVM\n* Use SHA-512 for the ContextDefinition change detection and filenames\n* Use algorithm name in filenames and cache key\n* Update javadocs and README\n* Incorporate algorithm name normalization checks in filename tests\n* Use a variety of algorithms in tests\n\nAlso:\n\n* Remove use of non-public Accumulo APIs\n* Add a checkstyle rule for the non-test code to prevent new uses of\n  non-public Accumulo APIs\n* Use a BufferedInputStream when downloading resources for\n  ContextDefinition.create()\n"
    },
    {
      "commit": "c492250e9a8275982ecc954acdb3c1212624a232",
      "tree": "09b62a5102ec4a2ac7969bc251b1d6f08dd28d3e",
      "parents": [
        "438b16b54f645240b97b99888a71d71810cdea8b"
      ],
      "author": {
        "name": "Keith Turner",
        "email": "kturner@apache.org",
        "time": "Wed Jan 28 17:50:02 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 28 20:50:02 2026 -0500"
      },
      "message": "adjusts logging (#54)\n\nLimited downloads to a single debug message. Promoted classloader\ncreation to info.\nRemoved unused import for Arrays in LccUtils.java\n\n---------\n\nCo-authored-by: Christopher Tubbs \u003cctubbsii@apache.org\u003e"
    },
    {
      "commit": "438b16b54f645240b97b99888a71d71810cdea8b",
      "tree": "9ed70c693ea761b6558395649c320cf7f9221093",
      "parents": [
        "0dadf6cc89809c0dd6035b3b3c07df0d7776a2d5"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Wed Jan 21 20:58:05 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 21 20:58:05 2026 -0500"
      },
      "message": "Replace resolvers with agnostic URL support (#51)\n\n\nCloses #47\n\n* Register new URLStreamHandlerProvider\n\n* Register a provider for the hdfs: URL stream handling, rather than\n  override the system factory\n* Also fix SpotBugs and rename classes to match the naming convention\n  from the classes they override (e.g. \"URLStreamHandler\" instead of\n  \"UrlStreamHandler\")\n\n* Remove unneeded call to constructor in test\n\n* Replace resolvers with agnostic URL support\n\n* Remove resolvers (keep test coverage for file, http, and hdfs URL\n  types)\n* Use url.openStream()\n* Be agnostic to different URL types\n* Depend on an HdfsURLStreamHandlerProvider for hdfs URL support\n* Place hdfs provider in its own module/jar\n* Clean up related POM and README stuff\n\nThis fixes #47\n\nThis supersedes #48 and #49 alternate fixes\n\n* Remove redundant precondition\n\n* Fix test and remove redundant log\n\n* Make the DeduplicationCacheTest more strict, and keep a strong\n  reference in a background thread, so the weak values don\u0027t get garbage\n  collected too early\n* Use Object to test DeduplicationCache, since the values are not\n  actually used\n* Move a log message to avoid a redundant message about discontinued\n  monitoring of a ContextDefinition location\n\n* Be less aggressive with System.gc in test\n\n---------\n\nCo-authored-by: Dave Marion \u003cdlmarion@apache.org\u003e"
    },
    {
      "commit": "0dadf6cc89809c0dd6035b3b3c07df0d7776a2d5",
      "tree": "78509d1712ae366518cab0a74751aef6b2452d87",
      "parents": [
        "b4c3f7d7cda49759af71c4f655b244a35ee59de3"
      ],
      "author": {
        "name": "Dave Marion",
        "email": "dlmarion@apache.org",
        "time": "Tue Jan 20 16:59:26 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 20 16:59:26 2026 -0500"
      },
      "message": "Remove ContextDefinition on unhandled exception in Monitor task (#50)\n\nCloses #46\n"
    },
    {
      "commit": "b4c3f7d7cda49759af71c4f655b244a35ee59de3",
      "tree": "e3c5edaf592dda28eb6685df99666483d56dd7d6",
      "parents": [
        "afd9fa532c96860ed727bf6a9bafac362f48ae6d"
      ],
      "author": {
        "name": "Dave Marion",
        "email": "dlmarion@apache.org",
        "time": "Fri Jan 16 10:14:53 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 16 10:14:53 2026 -0500"
      },
      "message": "Add tools for ContextDefinition create and cleanup (#33)\n\nModified ContextDefinition to implement KeywordExecutable so that\nthe user can use `accumulo create-context-definition` to create the\njson required for the ContextDefinition file.\n\nAdded a JMX MXBean that will return the list of files in the local cache\ndirectory that are referenced by classloaders created by the factory\nin this module and are still in use in the JVM. Users can connect to\nthe JMX MXBean to retrieve the list to aid in the cleanup of the local\ncache directory.\n\n\nCo-authored-by: Christopher Tubbs \u003cctubbsii@apache.org\u003e\nCo-authored-by: Keith Turner \u003ckturner@apache.org\u003e"
    },
    {
      "commit": "afd9fa532c96860ed727bf6a9bafac362f48ae6d",
      "tree": "64892758f748a0ac5ad587632864aca0da6a5c01",
      "parents": [
        "cc0da743f1b98f0851d07a132d5fbb8d9967d172"
      ],
      "author": {
        "name": "Dave Marion",
        "email": "dlmarion@apache.org",
        "time": "Thu Jan 15 09:46:43 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 15 09:46:43 2026 -0500"
      },
      "message": "Remove scheduler from weak values cache in dedupe cache object (#42)\n\n"
    },
    {
      "commit": "cc0da743f1b98f0851d07a132d5fbb8d9967d172",
      "tree": "3d4598644f30b69f5c09f269a128c2e711d766dd",
      "parents": [
        "8fcfd772d043e1ed58b7feb88960e8a0e100de22"
      ],
      "author": {
        "name": "Keith Turner",
        "email": "kturner@apache.org",
        "time": "Wed Jan 14 20:23:14 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 14 20:23:14 2026 -0500"
      },
      "message": "tests external modification of cache dir (#38)\n\nTests external modification of the Lcc cache directory, to ensure\ncorruption is detected, and that it resumes working once\nthe corruption is resolved.\n\nAlso clean up after tests by using separate instances of the factory,\nand unique temp directories for testing.\n\nAlso standardize and resolve ambiguous Path imports in test code.\n\n---------\n\nCo-authored-by: Christopher Tubbs \u003cctubbsii@apache.org\u003e"
    },
    {
      "commit": "8fcfd772d043e1ed58b7feb88960e8a0e100de22",
      "tree": "c3851fa2aac60fae0ea6ad2f6b03e5dd0c2ad8ae",
      "parents": [
        "222d740e53bbba770c73353301a5edf9a6668914"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Wed Jan 14 18:59:40 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 14 18:59:40 2026 -0500"
      },
      "message": "Simplify file names for downloaded definitions (#41)\n\n* Use checksum.json instead of attempting to track the original file\n  name in the remote URL for the context definition\n* This avoids weird edge cases, like when an HTTP url for a context\n  definition ends with /, which is a valid HTTP url, but has no\n  associated file name to parse out\n* This also prevents duplicate local copies of the same context\n  definition downloaded from different source URLs"
    },
    {
      "commit": "222d740e53bbba770c73353301a5edf9a6668914",
      "tree": "6a98de5e7a1cd8c3341e32d0832d9f15c0b4931f",
      "parents": [
        "9f91cfefbed125f0dd89ff12e0b1f274f1e474b1"
      ],
      "author": {
        "name": "Dave Marion",
        "email": "dlmarion@apache.org",
        "time": "Wed Jan 14 16:21:13 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 14 16:21:13 2026 -0500"
      },
      "message": "Added DeduplicationCacheTest, fixed eviction in DeduplicationCache (#40)\n\nThe two Caffeine Caches in the DeduplicationCache were not removing\nthe entries. The addition of the `Scheduler` to the `expireAfterAccessStrongRefs`\ncache is necessary because the cleanup may only occur if the\n`expireAfterAccessStrongRefs` is modified by adding another classloader.\nIf this does not occur for some time, then the cleanup eviction will\nnot occur. This behavior is noted in the Caffeine javadoc:\n\n  \"If expireAfter, expireAfterWrite, or expireAfterAccess is requested,\n  then entries may be evicted on each cache modification, on occasional\n  cache accesses, or on calls to Cache.cleanUp. A scheduler(Scheduler)\n  may be specified to provide prompt removal of expired entries rather\n  than waiting until activity triggers the periodic maintenance.\"\n\nThe addition of the `canonicalWeakValuesCache.cleanUp()` call in the\n`anyMatch` method was required to remove the entry from the\n`canonicalWeakValuesCache`. The value is null due to weakValues, but since\nthe entry has not been cleaned up, the call to `.asMap.keySet()` still\nreturns the key. It\u0027s possible that using the same Scheduler approach\nmay work here, but that may introduce a race condition. Another possible\napproach would be to register a Cleaner as documented at\nhttps://github.com/ben-manes/caffeine/wiki/Cleanup.\n\n---------\n\nCo-authored-by: Christopher Tubbs \u003cctubbsii@apache.org\u003e"
    },
    {
      "commit": "9f91cfefbed125f0dd89ff12e0b1f274f1e474b1",
      "tree": "ad5a17748f712857a31bbd5789d6caef0895d647",
      "parents": [
        "e8749a2ab819057bb856d9575fdade0673fdfb1f"
      ],
      "author": {
        "name": "Keith Turner",
        "email": "kturner@apache.org",
        "time": "Tue Jan 13 12:06:46 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 13 12:06:46 2026 -0800"
      },
      "message": "buffer downloads (#36)\n\nCo-authored-by: Christopher Tubbs \u003cctubbsii@apache.org\u003e"
    },
    {
      "commit": "e8749a2ab819057bb856d9575fdade0673fdfb1f",
      "tree": "95742d14900c66712163255bddd4d3c8a9051a07",
      "parents": [
        "bf2887935ae0f3551600efb3d7318ebe39e9f50c"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Tue Jan 13 14:35:10 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 13 14:35:10 2026 -0500"
      },
      "message": "Verify existing files when creating a classloader (#37)\n\n* Verify checksum of temp files after download, but also re-verify\n  checksum of existing downloaded files and throw an exception if they\n  don\u0027t match\n* Also ensure the output stream when downloading is closed before\n  verification"
    },
    {
      "commit": "bf2887935ae0f3551600efb3d7318ebe39e9f50c",
      "tree": "bbe0a2e0cc11877c0a65e8cbe4baf56b34fd1743",
      "parents": [
        "b0787640f05fb89f1d009285d778f68c1bba8a32"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Tue Jan 13 13:14:23 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 13 13:14:23 2026 -0500"
      },
      "message": "Refactor internals / use common resources dir for local store (#35)\n\n* Reorganize the code a bit into a LocalStore to manage the downloads area\n  and remove unneeded classes, put some misc. stuff into util package\n* Organize local filesystem cache space into contexts directory and\n  a common resources directory\n* Handle the local path being specified in configuration as a URL (so\n  long as it uses the file: scheme) or as an absolute file path\n* Parse locations in the JSON as URLs rather than Strings\n* Store local copies of definition files, using pretty-printed JSON\n* Replace Timer with Stopwatch\n* Update README and javadocs\n\nAlso refactor to move things out of the main class and the main class\u0027\npackage that are internal implementation details and shouldn\u0027t be\npublic-facing API."
    },
    {
      "commit": "b0787640f05fb89f1d009285d778f68c1bba8a32",
      "tree": "db92f9f65905b43ad0cc10c105f3f4dacaf23696",
      "parents": [
        "264faa708c0a326bfd8a9dd6c197b282f97da818"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Thu Jan 08 16:33:32 2026 -0500"
      },
      "committer": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Thu Jan 08 16:33:32 2026 -0500"
      },
      "message": "Update copyright dates and format markdown\n\n* Bump copyright year to 2026\n* Remove markdown files and some .github folder items from the license\n  header default exclusions so they can be automatically maintained\n"
    },
    {
      "commit": "264faa708c0a326bfd8a9dd6c197b282f97da818",
      "tree": "c9d15152a63c7c3a7a683d6e02a52214e20a46ee",
      "parents": [
        "14eab9768cdf491d462e03effa90d4d2528222cd"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Tue Dec 16 14:36:38 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 16 14:36:38 2025 -0500"
      },
      "message": "Use a deduplicating cache implementation (#34)\n\nCore changes:\n\n* Use a generic DeduplicationCache implementation with the property of\n  guaranteeing no duplicate classloader instances for any given context\n  version, but also with a minimum on-access lifetime\n* Track the current context versions separately from the classloader\n  instances, so there\u0027s only one update task per context, but immutable\n  instances of URLClassloader in the deduplication cache are independent\n  from the updating (makes it easier to reason about the lifetime of\n  objects, and the update code); this removes the update method from the\n  LocalCachingContext object and replaces it with a new instance (TODO:\n  this could be further cleaned up since LocalCachingContext is now just\n  a bag of utility code rather than something that holds classloader\n  state to be updated)\n* Use compute method to atomically update the current context\n  definitions and access the deduplciated URLClassloader instances to\n  ensure that the two structures are always coherent\n* Use LinkedHashSet instead of TreeSet to preserve Resource ordering, as\n  specified in the user\u0027s context file\n* Remove the unused LocalCachingContext.update method, and ensure that\n  LocalCachingContext.initialize creates unique local directory names, to\n  support distinct versions of each context.\n  Currently, this results in duplicate downloads, but later, this will be\n  addressed by having a common pool of files.\n* Saves the context definition json file to the local context cache directory.\n\nOther changes:\n\n* update to latest spotbugs to remove some spammy console output\n* remove use of deprecated doPrivileged and suppress spotbugs warning\n* add justifications to spotbugs warnings about reading from user\n  provided URL\n* remove some spotbugs warnings by removing setters to make\n  ContextDefinition and Resource objects immutable\n* use asSubclass to avoid warnings about casting during dynamic class\n  loading\n* Create WrappedException for use in lambdas to make wrapping/unwrapping\n  more predictable\n* (unrelated) Update VFSManager to guard the initialization of the VFS\n  static field with an AtomicBoolean to avoid a spotbugs warning\n* suppress Eclipse warnings about maven-dependency-plugin executions\n"
    },
    {
      "commit": "14eab9768cdf491d462e03effa90d4d2528222cd",
      "tree": "ff0faa420d1c11722584c1c29a838c29e5ba668b",
      "parents": [
        "730771aa8f385024fa861888a68d4e2d6b0924ab"
      ],
      "author": {
        "name": "Dave Marion",
        "email": "dlmarion@apache.org",
        "time": "Tue Dec 02 13:45:26 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 02 13:45:26 2025 -0500"
      },
      "message": "Created Local Caching Classloader (#30)\n\nCreated a new ContextClassLoaderFactory implementation\nthat will retrieve resources from hdfs, http, and file-based\nURLs. This implementation caches the resources locally\ninto a shared local directory on the host.\n\n\nCo-authored-by: Daniel Roberts \u003cddanielr@gmail.com\u003e\nCo-authored-by: Keith Turner \u003ckturner@apache.org\u003e"
    },
    {
      "commit": "730771aa8f385024fa861888a68d4e2d6b0924ab",
      "tree": "f4768bbd4c17cb68a433242f372aecb69fca8f6a",
      "parents": [
        "1585de8aac48b1e3eb618561d069af17312b0bf3"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Thu Nov 20 14:36:03 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 20 14:36:03 2025 -0500"
      },
      "message": "Update POM and improve QA (#32)\n\n* Update and apply modernizer, spotbugs, and checkstyle fixes, including\n  removing unnecessary spotbugs warning suppressions\n* Reorganize POM to ensure QA tools are running, and mirror the Accumulo\n  POM, so they can be more easily compared side-by-side\n* Update formatter to match main Accumulo project\n* Update GitHub Actions\n* Also add release flag to the test jar compilation\n* Remove stale links to GitHub docs (they can be searched easily without the link)"
    },
    {
      "commit": "1585de8aac48b1e3eb618561d069af17312b0bf3",
      "tree": "9897df5afd88573d668284f2c042f00b0855cdf4",
      "parents": [
        "3918a3be86a7373b60909a518f43da90745555aa",
        "7431d73d88b8e891fe0cc87333de0fe286ea5534"
      ],
      "author": {
        "name": "Kevin Rathbun",
        "email": "krathbun@apache.org",
        "time": "Thu Sep 25 16:48:54 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 25 16:48:54 2025 -0400"
      },
      "message": "bumps accumulo from 2.1.3 to 2.1.4\n\n"
    },
    {
      "commit": "7431d73d88b8e891fe0cc87333de0fe286ea5534",
      "tree": "1c005b9a3ec0e215a4cb4f56adbbb2eeab3c281d",
      "parents": [
        "aa7e02a1d048339ab28121cd1163b7079a718491"
      ],
      "author": {
        "name": "Kevin Rathbun",
        "email": "kevinrr888@gmail.com",
        "time": "Thu Sep 25 15:52:38 2025 -0400"
      },
      "committer": {
        "name": "Kevin Rathbun",
        "email": "kevinrr888@gmail.com",
        "time": "Thu Sep 25 15:52:38 2025 -0400"
      },
      "message": "bumps accumulo from 2.1.3 to 2.1.4\n"
    },
    {
      "commit": "3918a3be86a7373b60909a518f43da90745555aa",
      "tree": "04a8c56f4aa6c0f81dbb088934cf296871ce7809",
      "parents": [
        "aa7e02a1d048339ab28121cd1163b7079a718491",
        "73e499eb7b2d3f3200686fa235c7ef14d25c51cd"
      ],
      "author": {
        "name": "Daniel Roberts",
        "email": "ddanielr@gmail.com",
        "time": "Wed Sep 24 11:45:26 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 24 11:45:26 2025 -0400"
      },
      "message": "Merge pull request #29 from kevinrr888/minor-changes\n\nminor ReloadingVFSContextClassLoaderFactory changes"
    },
    {
      "commit": "73e499eb7b2d3f3200686fa235c7ef14d25c51cd",
      "tree": "04a8c56f4aa6c0f81dbb088934cf296871ce7809",
      "parents": [
        "aa7e02a1d048339ab28121cd1163b7079a718491"
      ],
      "author": {
        "name": "Kevin Rathbun",
        "email": "kevinrr888@gmail.com",
        "time": "Wed Sep 24 10:07:08 2025 -0400"
      },
      "committer": {
        "name": "Kevin Rathbun",
        "email": "kevinrr888@gmail.com",
        "time": "Wed Sep 24 10:07:08 2025 -0400"
      },
      "message": "minor ReloadingVFSContextClassLoaderFactory changes:\n\nfixed class description referencing a class that no longer exists, minor\nfix to the test\n"
    },
    {
      "commit": "aa7e02a1d048339ab28121cd1163b7079a718491",
      "tree": "1e9e700c4cf48bb2a59094b648d7531c90d09906",
      "parents": [
        "6003577eb02065f26cc584f619d9746a3563d1c4"
      ],
      "author": {
        "name": "Dave Marion",
        "email": "dlmarion@apache.org",
        "time": "Wed Jul 09 14:48:35 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 09 14:48:35 2025 -0400"
      },
      "message": "Add more information to exceptions from UniqueFileReplicator (#26)\n\nThese changes were made in Accumulo version 2.1.4. Porting\nthem to this repo for use in future versions of Accumulo where\nthe VFSClassLoader has been removed."
    },
    {
      "commit": "6003577eb02065f26cc584f619d9746a3563d1c4",
      "tree": "74984e1c13a57c38e8481ce5f3c5f3c04598ed5f",
      "parents": [
        "9514fe485ee4cb598397588c2fb327c9a60f5644"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu May 08 19:26:41 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 08 19:26:41 2025 -0400"
      },
      "message": "Bump org.apache.httpcomponents.client5:httpclient5 from 5.4.2 to 5.4.3 (#25)\n\nBumps [org.apache.httpcomponents.client5:httpclient5](https://github.com/apache/httpcomponents-client) from 5.4.2 to 5.4.3.\n- [Changelog](https://github.com/apache/httpcomponents-client/blob/rel/v5.4.3/RELEASE_NOTES.txt)\n- [Commits](https://github.com/apache/httpcomponents-client/compare/rel/v5.4.2...rel/v5.4.3)\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.httpcomponents.client5:httpclient5\n  dependency-version: 5.4.3\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "9514fe485ee4cb598397588c2fb327c9a60f5644",
      "tree": "c7b5ebf363f45b3d4e1a1a392b07c6346d67e701",
      "parents": [
        "b67807f203204e6955d298621e8a18157f37ea7d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Mar 25 14:04:22 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 25 14:04:22 2025 -0400"
      },
      "message": "Bump org.apache.commons:commons-vfs2 from 2.9.0 to 2.10.0 (#24)\n\n* Bump org.apache.commons:commons-vfs2 from 2.9.0 to 2.10.0\n\nBumps org.apache.commons:commons-vfs2 from 2.9.0 to 2.10.0.\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.commons:commons-vfs2\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\n\n* Added changes to support vfs 2.10.0 release\n\nMoved off of deprecated classes and methods.\nIncluded new module that contained existing hdfs providers.\n\n* Exclude hadoop deps and add http5 dep\n\nExclude the 3.4 hadoop deps from vfs2-hdfs.\nAdd the http5 client deps needed for the http5 provider\n\n* Use BOM and fix compilation error\n\n---------\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nCo-authored-by: Daniel Roberts ddanielr \u003cddanielr@gmail.com\u003e\nCo-authored-by: Christopher Tubbs \u003cctubbsii@apache.org\u003e"
    },
    {
      "commit": "b67807f203204e6955d298621e8a18157f37ea7d",
      "tree": "96bc9ee8721b0a62cbfe7206e81138b06b4dabf9",
      "parents": [
        "802ce65771e381c1766b73ba2ab3ef172981b015"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Mon Nov 25 14:26:16 2024 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 25 14:26:16 2024 -0500"
      },
      "message": "Cleanup and implement build quality improvements (#22)\n\n* Bump GitHub Actions plugin versions\r\n* Apply/fix license header uniformly\r\n* Fix .gitignore files and delete checked-in IDE files\r\n* Update the formatter to match the main project\r\n* Replace contrib dir with more conventional src/build\r\n* Simplify dependencyManagement by removing unneeded dependency\r\n  declarations and exclusions and by using the accumulo-project POM as\r\n  an imported source of dependency versions\r\n* Remove no longer needed log4j-core direct dependency\r\n* Add xml comments to explain provided dependencies and other\r\n  non-standard scopes\r\n* Require JDK 17 for the build and update plugins\r\n* Fix spotbugs issues\r\n* Format shell scripts and fix issues from shellcheck\r\n* Update parent POM and remove redundant enforcer plugin config\r\n* Fix license name in the POM"
    },
    {
      "commit": "802ce65771e381c1766b73ba2ab3ef172981b015",
      "tree": "9598acaaea9485925e0be899b288c43fac6c983b",
      "parents": [
        "b4ecd6794df2043127952e68b5420e9acc85cd3e",
        "10a1efde3e91fe5689c011a4b209da7903dab043"
      ],
      "author": {
        "name": "Dom G",
        "email": "domgarguilo@apache.org",
        "time": "Wed Jun 21 09:36:18 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 21 09:36:18 2023 -0400"
      },
      "message": "Upgrade from Junit4 to Junit5\n\n"
    },
    {
      "commit": "10a1efde3e91fe5689c011a4b209da7903dab043",
      "tree": "f612028f6e7b93cfe2d849b577cbb9e5b5800a5a",
      "parents": [
        "ecc0d0023de38838281dd9224830ad79344a1da9"
      ],
      "author": {
        "name": "DomGarguilo",
        "email": "dominic.garguilo@gmail.com",
        "time": "Tue Jun 20 16:38:20 2023 -0400"
      },
      "committer": {
        "name": "DomGarguilo",
        "email": "dominic.garguilo@gmail.com",
        "time": "Tue Jun 20 16:38:20 2023 -0400"
      },
      "message": "Fix regex\n"
    },
    {
      "commit": "b4ecd6794df2043127952e68b5420e9acc85cd3e",
      "tree": "9ef615d8762fe3e6268dc159b1e1c5689cb4877e",
      "parents": [
        "5994282c305e9e19f09656721ae069034d43c09a"
      ],
      "author": {
        "name": "Christopher L. Shannon",
        "email": "christopher.l.shannon@gmail.com",
        "time": "Fri Mar 03 10:01:39 2023 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 03 10:01:39 2023 -0500"
      },
      "message": "Remove usage of deprecated AccessController (#19)\n\nThe SecurityManager and related classes, including AccessController,\r\nhave been deprecated as of JDK 17 and are planned for removal. This\r\ncommit removes the usage of the APIs."
    },
    {
      "commit": "5994282c305e9e19f09656721ae069034d43c09a",
      "tree": "c3604ec9c8c0af6d9f8ea3bd2a04babd35164e0a",
      "parents": [
        "765db685f362ef38a276573a012769ca474f5d9c"
      ],
      "author": {
        "name": "Christopher L. Shannon",
        "email": "christopher.l.shannon@gmail.com",
        "time": "Fri Mar 03 09:11:27 2023 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 03 09:11:27 2023 -0500"
      },
      "message": "Update Maven plugins to support Maven 3.9.0 (#20)\n\nmodernizer-maven-plugin: 2.5.0\r\nimpsort-maven-plugin: 1.8.0"
    },
    {
      "commit": "765db685f362ef38a276573a012769ca474f5d9c",
      "tree": "14e31e9289c0e6843e6612cf4815aa8ae6326bc4",
      "parents": [
        "e01d03b8837c9f5153ffb05cda3db71ef60d7820"
      ],
      "author": {
        "name": "Christopher L. Shannon",
        "email": "christopher.l.shannon@gmail.com",
        "time": "Tue Feb 21 10:38:05 2023 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 21 10:38:05 2023 -0500"
      },
      "message": "Update testing instructions for Accumulo 3.0.0 (#17)\n\n* Update testing instructions for Accumulo 3.0.0"
    },
    {
      "commit": "e01d03b8837c9f5153ffb05cda3db71ef60d7820",
      "tree": "5fe700153ba32617042433de2b31e701f232996a",
      "parents": [
        "581b3fd198cd6b451d85c00f5c600598eac11f6e"
      ],
      "author": {
        "name": "Christopher L. Shannon",
        "email": "christopher.l.shannon@gmail.com",
        "time": "Fri Feb 17 09:46:02 2023 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 17 09:46:02 2023 -0500"
      },
      "message": "Make test scripts clean up duplicate classes (#16)\n\nThe test scripts in start create multiple classes with the same name\r\nthat can cause problems for IDEs. The classes are only used to create\r\njars for the VFS tests so just drop the intermediate class files when done\r\ncreating the jars.\r\n\r\nNote: This is the same fix used in Accumulo:\r\nhttps://github.com/apache/accumulo/commit/f5121ec"
    },
    {
      "commit": "ecc0d0023de38838281dd9224830ad79344a1da9",
      "tree": "b58540cd7d8f11832b7dcaa84280e9df52ac3c70",
      "parents": [
        "7fd27312acd4fdabc0f8d2b04efa1d797e2adc56"
      ],
      "author": {
        "name": "DomGarguilo",
        "email": "dominic.garguilo@gmail.com",
        "time": "Fri Jan 06 16:52:44 2023 -0500"
      },
      "committer": {
        "name": "DomGarguilo",
        "email": "dominic.garguilo@gmail.com",
        "time": "Fri Jan 06 16:52:44 2023 -0500"
      },
      "message": "Enfore the use of JUnit5\n"
    },
    {
      "commit": "7fd27312acd4fdabc0f8d2b04efa1d797e2adc56",
      "tree": "3d7163009ebb9a995e8b20581efef08b327f713b",
      "parents": [
        "20c50be211409ca3c7776b0d36d3ecd1acd7dcc3"
      ],
      "author": {
        "name": "DomGarguilo",
        "email": "dominic.garguilo@gmail.com",
        "time": "Fri Jan 06 16:33:46 2023 -0500"
      },
      "committer": {
        "name": "DomGarguilo",
        "email": "dominic.garguilo@gmail.com",
        "time": "Fri Jan 06 16:33:46 2023 -0500"
      },
      "message": "Create sub directories for tempDir\n"
    },
    {
      "commit": "20c50be211409ca3c7776b0d36d3ecd1acd7dcc3",
      "tree": "e39bff472ffd2e02a3b1b042b9ba41292d782dca",
      "parents": [
        "bb7627180d10c23574daea715b73daeeb2998c96"
      ],
      "author": {
        "name": "DomGarguilo",
        "email": "dominic.garguilo@gmail.com",
        "time": "Fri Jan 06 12:24:36 2023 -0500"
      },
      "committer": {
        "name": "DomGarguilo",
        "email": "dominic.garguilo@gmail.com",
        "time": "Fri Jan 06 12:24:36 2023 -0500"
      },
      "message": "Fix spotbugs error with tempdir\n"
    },
    {
      "commit": "bb7627180d10c23574daea715b73daeeb2998c96",
      "tree": "3c395fd83b1d7d180460b9e57ba7eac7c3aad94e",
      "parents": [
        "581b3fd198cd6b451d85c00f5c600598eac11f6e"
      ],
      "author": {
        "name": "DomGarguilo",
        "email": "dominic.garguilo@gmail.com",
        "time": "Fri Jan 06 12:10:11 2023 -0500"
      },
      "committer": {
        "name": "DomGarguilo",
        "email": "dominic.garguilo@gmail.com",
        "time": "Fri Jan 06 12:10:11 2023 -0500"
      },
      "message": "Upgrade from Junit4 to Junit5\n"
    },
    {
      "commit": "581b3fd198cd6b451d85c00f5c600598eac11f6e",
      "tree": "2bee8968a3d946ac94e1aceca3edd1569546a369",
      "parents": [
        "be9559d9528a05c7dcbefe6fd2866a68f65de516"
      ],
      "author": {
        "name": "Dave Marion",
        "email": "dlmarion@apache.org",
        "time": "Tue Nov 01 12:51:42 2022 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 01 12:51:42 2022 -0400"
      },
      "message": "Bump Accumulo version from 2.1.0-SNAPSHOT to 2.1.0 (#14)\n\n"
    },
    {
      "commit": "be9559d9528a05c7dcbefe6fd2866a68f65de516",
      "tree": "cdc62891edb5496c4419cdcff6871b1b096ae431",
      "parents": [
        "3f62341c9a68abb04f2ce6ba9695b0e3a52be400"
      ],
      "author": {
        "name": "Dave Marion",
        "email": "dlmarion@apache.org",
        "time": "Wed Oct 05 15:40:18 2022 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 05 15:40:18 2022 -0400"
      },
      "message": "Remove log4j dependency, sync others with accumulo (#13)\n\n"
    },
    {
      "commit": "3f62341c9a68abb04f2ce6ba9695b0e3a52be400",
      "tree": "bcef9bd5befdc3a672108a94612138935f4df8ca",
      "parents": [
        "2ddcea646bd23c336b0648a819bfd4b745f7b410"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Oct 05 14:09:42 2022 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 05 14:09:42 2022 -0400"
      },
      "message": "Bump protobuf-java from 3.19.2 to 3.19.6 (#11)\n\nBumps [protobuf-java](https://github.com/protocolbuffers/protobuf) from 3.19.2 to 3.19.6.\r\n- [Release notes](https://github.com/protocolbuffers/protobuf/releases)\r\n- [Changelog](https://github.com/protocolbuffers/protobuf/blob/main/generate_changelog.py)\r\n- [Commits](https://github.com/protocolbuffers/protobuf/compare/v3.19.2...v3.19.6)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: com.google.protobuf:protobuf-java\r\n  dependency-type: direct:production\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "2ddcea646bd23c336b0648a819bfd4b745f7b410",
      "tree": "229b47c0b383b2b6991685c6afd73fc13ad4454e",
      "parents": [
        "45e01abeaef47dde4efdbaabfaafbf6189650e9b"
      ],
      "author": {
        "name": "Dave Marion",
        "email": "dlmarion@apache.org",
        "time": "Wed Oct 05 14:01:36 2022 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 05 14:01:36 2022 -0400"
      },
      "message": "Updates for Accumulo 2.1.0 SLF4J2 and new MIME type (#12)\n\nAccumulo 2.1.0 recently upgraded slf4j to slf4j2. I updated the poms\r\nto account for the new version and additional dependency. Two of the\r\ntests were also failing, which turned out to be caused by the backport\r\nof JDK-8273655. Adding a mime type mapping for application/java-archive\r\nresolved the issue. While debugging I restructured the VFSClassLoaderTest."
    },
    {
      "commit": "45e01abeaef47dde4efdbaabfaafbf6189650e9b",
      "tree": "53772a68a9561cfd540fbd391ab5090bbb178538",
      "parents": [
        "09ab78ba0881fe539d7cd978367ddd62f9d2fad8"
      ],
      "author": {
        "name": "EdColeman",
        "email": "dev1@etcoleman.com",
        "time": "Sat May 21 08:41:30 2022 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 21 04:41:30 2022 -0400"
      },
      "message": "update versions to match accumulo pom.xml (#10)\n\n"
    },
    {
      "commit": "09ab78ba0881fe539d7cd978367ddd62f9d2fad8",
      "tree": "b1bacc5f68cfd7c28c97ecd6386b138c85fa68e3",
      "parents": [
        "db9d9afc610c3e5b1aadd39a05ec67fcec0288d3"
      ],
      "author": {
        "name": "EdColeman",
        "email": "dev1@etcoleman.com",
        "time": "Fri May 20 22:44:37 2022 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 20 18:44:37 2022 -0400"
      },
      "message": "bump gson version to match accumulo pom.xml (#7)\n\n"
    },
    {
      "commit": "db9d9afc610c3e5b1aadd39a05ec67fcec0288d3",
      "tree": "2b0894ddb84d5db19e8965d99eaab8c441f0570f",
      "parents": [
        "4c47fcc46c14a4d2a30b656f132524941abea32b"
      ],
      "author": {
        "name": "Dave Marion",
        "email": "dlmarion@apache.org",
        "time": "Fri Dec 04 11:02:43 2020 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Dec 04 11:02:43 2020 -0500"
      },
      "message": "Fixes #4 - update ReloadingVFSContextClassLoaderFactory for upstream interface changes (#5)\n\n* Fixes #4 - update ReloadingVFSContextClassLoaderFactory for upstream interface changes"
    },
    {
      "commit": "4c47fcc46c14a4d2a30b656f132524941abea32b",
      "tree": "eb8d196c3ac6b35fb9b1020cd2fac8a48e480b8d",
      "parents": [
        "117ac5451645d71d9f605f654f706e06e704636f"
      ],
      "author": {
        "name": "Dave Marion",
        "email": "dlmarion@apache.org",
        "time": "Wed Nov 18 08:36:15 2020 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 18 08:36:15 2020 -0500"
      },
      "message": "New implementation of VFSClassLoader (#3)\n\n"
    },
    {
      "commit": "117ac5451645d71d9f605f654f706e06e704636f",
      "tree": "3d529fd3ac2ce2d0d9f3d6a449d8478cbcf57058",
      "parents": [
        "ae0cb53d28b513431cfa0e05408c82a3c2fae7f4"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Mon Oct 12 22:00:48 2020 -0400"
      },
      "committer": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Mon Oct 12 22:00:48 2020 -0400"
      },
      "message": "Upload test logs on build failure\n"
    },
    {
      "commit": "ae0cb53d28b513431cfa0e05408c82a3c2fae7f4",
      "tree": "cc6758a760ebd1d90791826d99b86c3d86389ffc",
      "parents": [
        "99f918713b3af3be28bb25af41a822c58e48b561"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Mon Oct 05 17:08:35 2020 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 05 17:08:35 2020 -0400"
      },
      "message": "Update .asf.yaml with hacktoberfest topic (#2)\n\n"
    },
    {
      "commit": "99f918713b3af3be28bb25af41a822c58e48b561",
      "tree": "757b6619d5d6ef68fe19be6796c8b5e85bbc8c38",
      "parents": [
        "5566e52143592cc5cfe06ce1b92161cf6f443f3c"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Fri Sep 25 23:21:20 2020 -0400"
      },
      "committer": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Fri Sep 25 23:21:20 2020 -0400"
      },
      "message": "Make changes to get the initial code buildable\n"
    },
    {
      "commit": "5566e52143592cc5cfe06ce1b92161cf6f443f3c",
      "tree": "e663a5624711ac7a5351699d8adc3d7d0cc9627d",
      "parents": [
        "491fba1f7dc2616de99f5dbde46bb7e572cd9bed"
      ],
      "author": {
        "name": "Dave Marion",
        "email": "dlmarion@apache.org",
        "time": "Fri Sep 25 21:14:12 2020 +0000"
      },
      "committer": {
        "name": "Dave Marion",
        "email": "dlmarion@apache.org",
        "time": "Fri Sep 25 21:14:12 2020 +0000"
      },
      "message": "Capturing testing document\n"
    },
    {
      "commit": "491fba1f7dc2616de99f5dbde46bb7e572cd9bed",
      "tree": "c1afdbed86ee2e1ffaffc1affd146040699bb95f",
      "parents": [
        "19527a9648882c7ce6f0081fec472f4d6d2d45e8"
      ],
      "author": {
        "name": "Dave Marion",
        "email": "dlmarion@apache.org",
        "time": "Fri Sep 25 21:07:50 2020 +0000"
      },
      "committer": {
        "name": "Dave Marion",
        "email": "dlmarion@apache.org",
        "time": "Fri Sep 25 21:07:50 2020 +0000"
      },
      "message": "Initial commit, tests failing\n"
    },
    {
      "commit": "19527a9648882c7ce6f0081fec472f4d6d2d45e8",
      "tree": "024a1e2fabd65dbfc83da54813421ae08912cd75",
      "parents": [
        "4250a736b0f7efacde7be3abbfaaee9d8896a757"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Thu Sep 24 10:27:43 2020 -0400"
      },
      "committer": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Thu Sep 24 10:27:43 2020 -0400"
      },
      "message": "Drop trailing slash on homepage URL in GitHub\n"
    },
    {
      "commit": "4250a736b0f7efacde7be3abbfaaee9d8896a757",
      "tree": "054f720409f86eb2a61d73cf3a52d2a25ae4d27a",
      "parents": [
        "e8d5f86dd5bdac541bc8d2f8b421a888337dcbb2"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Thu Sep 24 02:22:52 2020 -0400"
      },
      "committer": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Thu Sep 24 02:22:52 2020 -0400"
      },
      "message": "Add more skeleton files to the project\n\n* Add pom.xml\n* Add .gitignore\n* Add code style for formatter plugin\n"
    },
    {
      "commit": "e8d5f86dd5bdac541bc8d2f8b421a888337dcbb2",
      "tree": "165040ce1c46f55775cf09a96f7d544ee041eccf",
      "parents": [
        "71b166152a6a00427e7c9c32faba62a23385185e"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Wed Sep 23 10:27:09 2020 -0400"
      },
      "committer": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Wed Sep 23 10:27:09 2020 -0400"
      },
      "message": "Add issue templates and GitHub Actions builds\n"
    },
    {
      "commit": "71b166152a6a00427e7c9c32faba62a23385185e",
      "tree": "97dcca2cbb0dd891675120f6a0e0e38a45633a19",
      "parents": [
        "06347967e788e1a208c35bdadd0768bd3f4b40af"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Wed Sep 23 09:44:47 2020 -0400"
      },
      "committer": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Wed Sep 23 09:44:47 2020 -0400"
      },
      "message": "Add .asf.yaml with GH issues enabled\n"
    },
    {
      "commit": "06347967e788e1a208c35bdadd0768bd3f4b40af",
      "tree": "d81b8ce928585ca106ae20d6402072079eaee170",
      "parents": [
        "384c0479ce20606fcfcd45b3c502361ebbe10357"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Wed Sep 23 09:38:50 2020 -0400"
      },
      "committer": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Wed Sep 23 09:38:50 2020 -0400"
      },
      "message": "Add LICENSE, NOTICE, and README.md\n"
    },
    {
      "commit": "384c0479ce20606fcfcd45b3c502361ebbe10357",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Wed Sep 23 09:23:00 2020 -0400"
      },
      "committer": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Wed Sep 23 09:23:00 2020 -0400"
      },
      "message": "Initial commit\n"
    }
  ]
}
