This is an automated email from the ASF dual-hosted git repository.

ctubbsii pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo-classloaders.git


The following commit(s) were added to refs/heads/main by this push:
     new cc0da74  tests external modification of cache dir (#38)
cc0da74 is described below

commit cc0da743f1b98f0851d07a132d5fbb8d9967d172
Author: Keith Turner <[email protected]>
AuthorDate: Wed Jan 14 20:23:14 2026 -0500

    tests external modification of cache dir (#38)
    
    Tests external modification of the Lcc cache directory, to ensure
    corruption is detected, and that it resumes working once
    the corruption is resolved.
    
    Also clean up after tests by using separate instances of the factory,
    and unique temp directories for testing.
    
    Also standardize and resolve ambiguous Path imports in test code.
    
    ---------
    
    Co-authored-by: Christopher Tubbs <[email protected]>
---
 .../lcc/LocalCachingContextClassLoaderFactory.java |   7 --
 .../accumulo/classloader/lcc/util/LocalStore.java  |   2 +-
 .../LocalCachingContextClassLoaderFactoryTest.java | 138 ++++++++++++++-------
 .../MiniAccumuloClusterClassLoaderFactoryTest.java |  12 +-
 .../apache/accumulo/classloader/lcc/TestUtils.java |  16 +--
 .../lcc/resolvers/FileResolversTest.java           |  16 +--
 .../classloader/lcc/util/LocalStoreTest.java       |  18 ++-
 7 files changed, 124 insertions(+), 85 deletions(-)

diff --git 
a/modules/local-caching-classloader/src/main/java/org/apache/accumulo/classloader/lcc/LocalCachingContextClassLoaderFactory.java
 
b/modules/local-caching-classloader/src/main/java/org/apache/accumulo/classloader/lcc/LocalCachingContextClassLoaderFactory.java
index 15a648b..6e5ff22 100644
--- 
a/modules/local-caching-classloader/src/main/java/org/apache/accumulo/classloader/lcc/LocalCachingContextClassLoaderFactory.java
+++ 
b/modules/local-caching-classloader/src/main/java/org/apache/accumulo/classloader/lcc/LocalCachingContextClassLoaderFactory.java
@@ -117,13 +117,6 @@ public class LocalCachingContextClassLoaderFactory 
implements ContextClassLoader
         TimeUnit.SECONDS);
   }
 
-  // for tests only
-  void resetForTests() {
-    // Removing the contexts will cause the
-    // background monitor task to end
-    contextDefs.clear();
-  }
-
   @Override
   public void init(ContextClassLoaderEnvironment env) {
     String value = 
requireNonNull(env.getConfiguration().get(CACHE_DIR_PROPERTY),
diff --git 
a/modules/local-caching-classloader/src/main/java/org/apache/accumulo/classloader/lcc/util/LocalStore.java
 
b/modules/local-caching-classloader/src/main/java/org/apache/accumulo/classloader/lcc/util/LocalStore.java
index d8675ca..96e1ed5 100644
--- 
a/modules/local-caching-classloader/src/main/java/org/apache/accumulo/classloader/lcc/util/LocalStore.java
+++ 
b/modules/local-caching-classloader/src/main/java/org/apache/accumulo/classloader/lcc/util/LocalStore.java
@@ -112,7 +112,7 @@ public final class LocalStore {
   // extension, and will instead just append the checksum to the original file 
name
   private static Pattern fileNamesWithExtensionPattern = 
Pattern.compile("^(.*[^.].*)[.]([^.]+)$");
 
-  static String localResourceName(String remoteFileName, String checksum) {
+  public static String localResourceName(String remoteFileName, String 
checksum) {
     requireNonNull(remoteFileName);
     requireNonNull(checksum);
     var matcher = fileNamesWithExtensionPattern.matcher(remoteFileName);
diff --git 
a/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/LocalCachingContextClassLoaderFactoryTest.java
 
b/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/LocalCachingContextClassLoaderFactoryTest.java
index 823ec6d..47bd6d7 100644
--- 
a/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/LocalCachingContextClassLoaderFactoryTest.java
+++ 
b/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/LocalCachingContextClassLoaderFactoryTest.java
@@ -33,10 +33,12 @@ import static org.junit.jupiter.api.Assertions.fail;
 
 import java.io.EOFException;
 import java.io.File;
+import java.io.IOException;
 import java.io.UncheckedIOException;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.nio.file.Files;
+import java.nio.file.Path;
 import java.nio.file.StandardCopyOption;
 import java.nio.file.StandardOpenOption;
 import java.util.ArrayList;
@@ -45,21 +47,23 @@ import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ExecutionException;
+import java.util.stream.Collectors;
 
 import org.apache.accumulo.classloader.lcc.TestUtils.TestClassInfo;
 import org.apache.accumulo.classloader.lcc.definition.ContextDefinition;
 import org.apache.accumulo.classloader.lcc.definition.Resource;
+import org.apache.accumulo.classloader.lcc.resolvers.FileResolver;
+import org.apache.accumulo.classloader.lcc.util.LocalStore;
 import org.apache.accumulo.core.conf.ConfigurationCopy;
 import 
org.apache.accumulo.core.spi.common.ContextClassLoaderFactory.ContextClassLoaderException;
 import org.apache.accumulo.core.util.ConfigurationImpl;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
-import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hdfs.MiniDFSCluster;
 import org.eclipse.jetty.server.Server;
 import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.io.TempDir;
 
@@ -67,8 +71,6 @@ import com.google.gson.JsonSyntaxException;
 
 public class LocalCachingContextClassLoaderFactoryTest {
 
-  private static final LocalCachingContextClassLoaderFactory FACTORY =
-      new LocalCachingContextClassLoaderFactory();
   protected static final int MONITOR_INTERVAL_SECS = 5;
   private static MiniDFSCluster hdfs;
   private static FileSystem fs;
@@ -86,17 +88,14 @@ public class LocalCachingContextClassLoaderFactoryTest {
   private static TestClassInfo classC;
   private static TestClassInfo classD;
 
+  private LocalCachingContextClassLoaderFactory FACTORY;
+  private Path baseCacheDir;
+
   @TempDir
-  private static java.nio.file.Path tempDir;
+  private Path tempDir;
 
   @BeforeAll
   public static void beforeAll() throws Exception {
-    java.nio.file.Path baseCacheDir = tempDir.resolve("base");
-
-    ConfigurationCopy acuConf = new ConfigurationCopy(
-        Map.of(CACHE_DIR_PROPERTY, 
baseCacheDir.toAbsolutePath().toUri().toURL().toExternalForm()));
-    FACTORY.init(() -> new ConfigurationImpl(acuConf));
-
     // Find the Test jar files
     jarAOrigLocation =
         
LocalCachingContextClassLoaderFactoryTest.class.getResource("/ClassLoaderTestA/TestA.jar");
@@ -119,15 +118,14 @@ public class LocalCachingContextClassLoaderFactoryTest {
     URL.setURLStreamHandlerFactory(new 
FsUrlStreamHandlerFactory(hdfs.getConfiguration(0)));
 
     fs = hdfs.getFileSystem();
-    assertTrue(fs.mkdirs(new Path("/contextB")));
-    final Path dst = new Path("/contextB/TestB.jar");
-    fs.copyFromLocalFile(new Path(jarBOrigLocation.toURI()), dst);
+    assertTrue(fs.mkdirs(new org.apache.hadoop.fs.Path("/contextB")));
+    final var dst = new org.apache.hadoop.fs.Path("/contextB/TestB.jar");
+    fs.copyFromLocalFile(new 
org.apache.hadoop.fs.Path(jarBOrigLocation.toURI()), dst);
     assertTrue(fs.exists(dst));
     final URL jarBHdfsLocation = new URL(fs.getUri().toString() + 
dst.toUri().toString());
 
     // Have Jetty serve up files from Jar C directory
-    java.nio.file.Path jarCParentDirectory =
-        java.nio.file.Path.of(jarCOrigLocation.toURI()).getParent();
+    var jarCParentDirectory = Path.of(jarCOrigLocation.toURI()).getParent();
     assertNotNull(jarCParentDirectory);
     jetty = TestUtils.getJetty(jarCParentDirectory);
     final URL jarCJettyLocation = jetty.getURI().resolve("TestC.jar").toURL();
@@ -142,8 +140,8 @@ public class LocalCachingContextClassLoaderFactoryTest {
     Files.writeString(localDefFile.toPath(), allJarsDefJson, 
StandardOpenOption.CREATE);
     assertTrue(Files.exists(localDefFile.toPath()));
 
-    Path hdfsDefFile = new Path("/allContextDefinition.json");
-    fs.copyFromLocalFile(new Path(localDefFile.toURI()), hdfsDefFile);
+    var hdfsDefFile = new 
org.apache.hadoop.fs.Path("/allContextDefinition.json");
+    fs.copyFromLocalFile(new org.apache.hadoop.fs.Path(localDefFile.toURI()), 
hdfsDefFile);
     assertTrue(fs.exists(hdfsDefFile));
 
     localAllContext = localDefFile.toURI().toURL();
@@ -167,9 +165,13 @@ public class LocalCachingContextClassLoaderFactoryTest {
     }
   }
 
-  @AfterEach
-  public void afterEach() {
-    FACTORY.resetForTests();
+  @BeforeEach
+  public void beforeEach() throws Exception {
+    baseCacheDir = tempDir.resolve("base");
+    ConfigurationCopy acuConf = new ConfigurationCopy(
+        Map.of(CACHE_DIR_PROPERTY, 
baseCacheDir.toAbsolutePath().toUri().toURL().toExternalForm()));
+    FACTORY = new LocalCachingContextClassLoaderFactory();
+    FACTORY.init(() -> new ConfigurationImpl(acuConf));
   }
 
   @Test
@@ -211,7 +213,7 @@ public class LocalCachingContextClassLoaderFactoryTest {
   @Test
   public void testInitialContextDefinitionEmpty() throws Exception {
     // Create a new context definition file in HDFS, but with no content
-    final Path def = createContextDefinitionFile(fs, 
"EmptyContextDefinitionFile.json", null);
+    final var def = createContextDefinitionFile(fs, 
"EmptyContextDefinitionFile.json", null);
     final URL emptyDefUrl = new URL(fs.getUri().toString() + 
def.toUri().toString());
 
     var ex = assertThrows(ContextClassLoaderException.class,
@@ -228,7 +230,7 @@ public class LocalCachingContextClassLoaderFactoryTest {
     // Create a new context definition file in HDFS, but with invalid content
     var def = ContextDefinition.create(MONITOR_INTERVAL_SECS, 
jarAOrigLocation);
     // write out invalid json
-    final Path invalid = createContextDefinitionFile(fs, 
"InvalidContextDefinitionFile.json",
+    final var invalid = createContextDefinitionFile(fs, 
"InvalidContextDefinitionFile.json",
         def.toJson().substring(0, 4));
     final URL invalidDefUrl = new URL(fs.getUri().toString() + 
invalid.toUri().toString());
 
@@ -241,7 +243,7 @@ public class LocalCachingContextClassLoaderFactoryTest {
   @Test
   public void testInitial() throws Exception {
     var def = ContextDefinition.create(MONITOR_INTERVAL_SECS, 
jarAOrigLocation);
-    final Path initial =
+    final var initial =
         createContextDefinitionFile(fs, "InitialContextDefinitionFile.json", 
def.toJson());
     final URL initialDefUrl = new URL(fs.getUri().toString() + 
initial.toUri().toString());
 
@@ -256,10 +258,10 @@ public class LocalCachingContextClassLoaderFactoryTest {
   @Test
   public void testInitialNonExistentResource() throws Exception {
     // copy jarA to some other name
-    java.nio.file.Path jarAPath = 
java.nio.file.Path.of(jarAOrigLocation.toURI());
-    java.nio.file.Path jarAPathParent = jarAPath.getParent();
+    var jarAPath = Path.of(jarAOrigLocation.toURI());
+    var jarAPathParent = jarAPath.getParent();
     assertNotNull(jarAPathParent);
-    java.nio.file.Path jarACopy = jarAPathParent.resolve("jarACopy.jar");
+    var jarACopy = jarAPathParent.resolve("jarACopy.jar");
     assertTrue(!Files.exists(jarACopy));
     Files.copy(jarAPath, jarACopy, StandardCopyOption.REPLACE_EXISTING);
     assertTrue(Files.exists(jarACopy));
@@ -269,7 +271,7 @@ public class LocalCachingContextClassLoaderFactoryTest {
     Files.delete(jarACopy);
     assertTrue(!Files.exists(jarACopy));
 
-    final Path initial = createContextDefinitionFile(fs,
+    final var initial = createContextDefinitionFile(fs,
         "InitialContextDefinitionFileMissingResource.json", def.toJson());
     final URL initialDefUrl = new URL(fs.getUri().toString() + 
initial.toUri().toString());
 
@@ -289,7 +291,7 @@ public class LocalCachingContextClassLoaderFactoryTest {
         goodJson.replace(jarAOrigLocation.toString(), 
jarAOrigLocation.toString().substring(6));
     assertNotEquals(goodJson, badJson);
 
-    final Path initial =
+    final var initial =
         createContextDefinitionFile(fs, 
"InitialContextDefinitionBadResourceURL.json", badJson);
     final URL initialDefUrl = new URL(fs.getUri().toString() + 
initial.toUri().toString());
 
@@ -311,7 +313,7 @@ public class LocalCachingContextClassLoaderFactoryTest {
 
     var def = new ContextDefinition(MONITOR_INTERVAL_SECS, resources);
 
-    final Path initial = createContextDefinitionFile(fs,
+    final var initial = createContextDefinitionFile(fs,
         "InitialContextDefinitionBadResourceChecksum.json", def.toJson());
     final URL initialDefUrl = new URL(fs.getUri().toString() + 
initial.toUri().toString());
 
@@ -333,7 +335,7 @@ public class LocalCachingContextClassLoaderFactoryTest {
   @Test
   public void testUpdate() throws Exception {
     final var def = ContextDefinition.create(MONITOR_INTERVAL_SECS, 
jarAOrigLocation);
-    final Path defFilePath =
+    final var defFilePath =
         createContextDefinitionFile(fs, "UpdateContextDefinitionFile.json", 
def.toJson());
     final URL updateDefUrl = new URL(fs.getUri().toString() + 
defFilePath.toUri().toString());
 
@@ -364,7 +366,7 @@ public class LocalCachingContextClassLoaderFactoryTest {
   @Test
   public void testUpdateSameClassNameDifferentContent() throws Exception {
     final var def = ContextDefinition.create(MONITOR_INTERVAL_SECS, 
jarAOrigLocation);
-    final Path defFilePath =
+    final var defFilePath =
         createContextDefinitionFile(fs, "UpdateContextDefinitionFile.json", 
def.toJson());
     final URL updateDefUrl = new URL(fs.getUri().toString() + 
defFilePath.toUri().toString());
 
@@ -397,7 +399,7 @@ public class LocalCachingContextClassLoaderFactoryTest {
   @Test
   public void testUpdateContextDefinitionEmpty() throws Exception {
     final var def = ContextDefinition.create(MONITOR_INTERVAL_SECS, 
jarAOrigLocation);
-    final Path defFilePath =
+    final var defFilePath =
         createContextDefinitionFile(fs, 
"UpdateEmptyContextDefinitionFile.json", def.toJson());
     final URL updateDefUrl = new URL(fs.getUri().toString() + 
defFilePath.toUri().toString());
 
@@ -428,7 +430,7 @@ public class LocalCachingContextClassLoaderFactoryTest {
   @Test
   public void testUpdateNonExistentResource() throws Exception {
     final var def = ContextDefinition.create(MONITOR_INTERVAL_SECS, 
jarAOrigLocation);
-    final Path defFilePath =
+    final var defFilePath =
         createContextDefinitionFile(fs, "UpdateNonExistentResource.json", 
def.toJson());
     final URL updateDefUrl = new URL(fs.getUri().toString() + 
defFilePath.toUri().toString());
 
@@ -442,10 +444,10 @@ public class LocalCachingContextClassLoaderFactoryTest {
     // copy jarA to jarACopy
     // create a ContextDefinition that references it
     // delete jarACopy
-    java.nio.file.Path jarAPath = 
java.nio.file.Path.of(jarAOrigLocation.toURI());
-    java.nio.file.Path jarAPathParent = jarAPath.getParent();
+    var jarAPath = Path.of(jarAOrigLocation.toURI());
+    var jarAPathParent = jarAPath.getParent();
     assertNotNull(jarAPathParent);
-    java.nio.file.Path jarACopy = jarAPathParent.resolve("jarACopy.jar");
+    var jarACopy = jarAPathParent.resolve("jarACopy.jar");
     assertTrue(!Files.exists(jarACopy));
     Files.copy(jarAPath, jarACopy, StandardCopyOption.REPLACE_EXISTING);
     assertTrue(Files.exists(jarACopy));
@@ -471,7 +473,7 @@ public class LocalCachingContextClassLoaderFactoryTest {
   @Test
   public void testUpdateBadResourceChecksum() throws Exception {
     final var def = ContextDefinition.create(MONITOR_INTERVAL_SECS, 
jarAOrigLocation);
-    final Path defFilePath =
+    final var defFilePath =
         createContextDefinitionFile(fs, "UpdateBadResourceChecksum.json", 
def.toJson());
     final URL updateDefUrl = new URL(fs.getUri().toString() + 
defFilePath.toUri().toString());
 
@@ -506,7 +508,7 @@ public class LocalCachingContextClassLoaderFactoryTest {
   @Test
   public void testUpdateBadResourceURL() throws Exception {
     final var def = ContextDefinition.create(MONITOR_INTERVAL_SECS, 
jarAOrigLocation);
-    final Path defFilePath =
+    final var defFilePath =
         createContextDefinitionFile(fs, "UpdateBadResourceChecksum.json", 
def.toJson());
     final URL updateDefUrl = new URL(fs.getUri().toString() + 
defFilePath.toUri().toString());
 
@@ -543,7 +545,7 @@ public class LocalCachingContextClassLoaderFactoryTest {
   @Test
   public void testUpdateInvalidJson() throws Exception {
     final var def = ContextDefinition.create(MONITOR_INTERVAL_SECS, 
jarAOrigLocation);
-    final Path defFilePath =
+    final var defFilePath =
         createContextDefinitionFile(fs, 
"UpdateInvalidContextDefinitionFile.json", def.toJson());
     final URL updateDefUrl = new URL(fs.getUri().toString() + 
defFilePath.toUri().toString());
 
@@ -589,7 +591,7 @@ public class LocalCachingContextClassLoaderFactoryTest {
   public void testChangingContext() throws Exception {
     var def = ContextDefinition.create(MONITOR_INTERVAL_SECS, 
jarAOrigLocation, jarBOrigLocation,
         jarCOrigLocation, jarDOrigLocation);
-    final Path update =
+    final var update =
         createContextDefinitionFile(fs, 
"UpdateChangingContextDefinition.json", def.toJson());
     final URL updatedDefUrl = new URL(fs.getUri().toString() + 
update.toUri().toString());
 
@@ -668,7 +670,7 @@ public class LocalCachingContextClassLoaderFactoryTest {
     localFactory.init(() -> new ConfigurationImpl(acuConf));
 
     final var def = ContextDefinition.create(MONITOR_INTERVAL_SECS, 
jarAOrigLocation);
-    final Path defFilePath =
+    final var defFilePath =
         createContextDefinitionFile(fs, "UpdateNonExistentResource.json", 
def.toJson());
     final URL updateDefUrl = new URL(fs.getUri().toString() + 
defFilePath.toUri().toString());
 
@@ -682,10 +684,10 @@ public class LocalCachingContextClassLoaderFactoryTest {
     // copy jarA to jarACopy
     // create a ContextDefinition that references it
     // delete jarACopy
-    java.nio.file.Path jarAPath = 
java.nio.file.Path.of(jarAOrigLocation.toURI());
-    java.nio.file.Path jarAPathParent = jarAPath.getParent();
+    var jarAPath = Path.of(jarAOrigLocation.toURI());
+    var jarAPathParent = jarAPath.getParent();
     assertNotNull(jarAPathParent);
-    java.nio.file.Path jarACopy = jarAPathParent.resolve("jarACopy.jar");
+    var jarACopy = jarAPathParent.resolve("jarACopy.jar");
     assertTrue(!Files.exists(jarACopy));
     Files.copy(jarAPath, jarACopy, StandardCopyOption.REPLACE_EXISTING);
     assertTrue(Files.exists(jarACopy));
@@ -716,4 +718,50 @@ public class LocalCachingContextClassLoaderFactoryTest {
 
   }
 
+  @Test
+  public void testExternalFileModification() throws Exception {
+    var def = ContextDefinition.create(MONITOR_INTERVAL_SECS, 
jarAOrigLocation, jarBOrigLocation,
+        jarCOrigLocation, jarDOrigLocation);
+    final var update =
+        createContextDefinitionFile(fs, 
"UpdateChangingContextDefinition.json", def.toJson());
+    final URL updatedDefUrl = new URL(fs.getUri().toString() + 
update.toUri().toString());
+
+    final ClassLoader cl = FACTORY.getClassLoader(updatedDefUrl.toString());
+    testClassLoads(cl, classA);
+    testClassLoads(cl, classB);
+    testClassLoads(cl, classC);
+    testClassLoads(cl, classD);
+
+    var resources = tempDir.resolve("base").resolve("resources");
+    List<Path> files = def.getResources().stream().map(r -> {
+      String basename;
+      try {
+        basename = FileResolver.resolve(r.getLocation()).getFileName();
+      } catch (IOException e) {
+        throw new UncheckedIOException(e);
+      }
+      var checksum = r.getChecksum();
+      return resources.resolve(LocalStore.localResourceName(basename, 
checksum));
+    }).limit(2).collect(Collectors.toList());
+    assertEquals(2, files.size());
+
+    // overwrite one downloaded jar with others content
+    Files.copy(files.get(0), files.get(1), 
StandardCopyOption.REPLACE_EXISTING);
+
+    final var update2 =
+        createContextDefinitionFile(fs, 
"UpdateChangingContextDefinition2.json", def.toJson());
+    final URL updatedDefUrl2 = new URL(fs.getUri().toString() + 
update2.toUri().toString());
+
+    // The classloader should fail to create because one of the files in the 
local filesystem cache
+    // has a checksum mismatch
+    var exception = assertThrows(ContextClassLoaderException.class,
+        () -> FACTORY.getClassLoader(updatedDefUrl2.toString()));
+    assertTrue(exception.getMessage().contains("Checksum"), 
exception::getMessage);
+
+    // clean up corrupt file
+    Files.delete(files.get(1));
+
+    // ensure it works now
+    FACTORY.getClassLoader(updatedDefUrl2.toString());
+  }
 }
diff --git 
a/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/MiniAccumuloClusterClassLoaderFactoryTest.java
 
b/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/MiniAccumuloClusterClassLoaderFactoryTest.java
index 39a7436..deb259e 100644
--- 
a/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/MiniAccumuloClusterClassLoaderFactoryTest.java
+++ 
b/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/MiniAccumuloClusterClassLoaderFactoryTest.java
@@ -95,7 +95,7 @@ public class MiniAccumuloClusterClassLoaderFactoryTest 
extends SharedMiniCluster
   }
 
   @TempDir
-  private static java.nio.file.Path tempDir;
+  private static Path tempDir;
 
   private static final Set<PosixFilePermission> CACHE_DIR_PERMS =
       EnumSet.of(OWNER_READ, OWNER_WRITE, OWNER_EXECUTE);
@@ -131,8 +131,8 @@ public class MiniAccumuloClusterClassLoaderFactoryTest 
extends SharedMiniCluster
   @Test
   public void testClassLoader() throws Exception {
 
-    Path baseDirPath = tempDir.resolve("base");
-    Path jsonDirPath = baseDirPath.resolve("contextFiles");
+    var baseDirPath = tempDir.resolve("base");
+    var jsonDirPath = baseDirPath.resolve("contextFiles");
     Files.createDirectory(jsonDirPath, PERMISSIONS);
 
     // Create a context definition that only references jar A
@@ -230,10 +230,10 @@ public class MiniAccumuloClusterClassLoaderFactoryTest 
extends SharedMiniCluster
       // Copy jar A, create a context definition using the copy, then
       // remove the copy so that it's not found when the context classloader
       // updates.
-      Path jarAPath = Path.of(jarAOrigLocation.toURI());
-      Path jarAPathParent = jarAPath.getParent();
+      var jarAPath = Path.of(jarAOrigLocation.toURI());
+      var jarAPathParent = jarAPath.getParent();
       assertNotNull(jarAPathParent);
-      Path jarACopy = jarAPathParent.resolve("jarACopy.jar");
+      var jarACopy = jarAPathParent.resolve("jarACopy.jar");
       assertTrue(!Files.exists(jarACopy));
       Files.copy(jarAPath, jarACopy, StandardCopyOption.REPLACE_EXISTING);
       assertTrue(Files.exists(jarACopy));
diff --git 
a/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/TestUtils.java
 
b/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/TestUtils.java
index 99201cb..ca0043f 100644
--- 
a/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/TestUtils.java
+++ 
b/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/TestUtils.java
@@ -30,11 +30,11 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.net.URL;
+import java.nio.file.Path;
 
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FSDataOutputStream;
 import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hdfs.DFSConfigKeys;
 import org.apache.hadoop.hdfs.MiniDFSCluster;
 import org.eclipse.jetty.server.Server;
@@ -64,11 +64,11 @@ public class TestUtils {
     }
   }
 
-  public static Path createContextDefinitionFile(FileSystem fs, String name, 
String contents)
-      throws Exception {
-    Path baseHdfsPath = new Path("/contextDefs");
+  public static org.apache.hadoop.fs.Path 
createContextDefinitionFile(FileSystem fs, String name,
+      String contents) throws Exception {
+    var baseHdfsPath = new org.apache.hadoop.fs.Path("/contextDefs");
     assertTrue(fs.mkdirs(baseHdfsPath));
-    Path newContextDefinitionFile = new Path(baseHdfsPath, name);
+    var newContextDefinitionFile = new org.apache.hadoop.fs.Path(baseHdfsPath, 
name);
 
     if (contents == null) {
       assertTrue(fs.createNewFile(newContextDefinitionFile));
@@ -81,8 +81,8 @@ public class TestUtils {
     return newContextDefinitionFile;
   }
 
-  public static void updateContextDefinitionFile(FileSystem fs, Path 
defFilePath, String contents)
-      throws Exception {
+  public static void updateContextDefinitionFile(FileSystem fs,
+      org.apache.hadoop.fs.Path defFilePath, String contents) throws Exception 
{
     // Update the contents of the context definition json file
     assertTrue(fs.exists(defFilePath));
     fs.delete(defFilePath, false);
@@ -154,7 +154,7 @@ public class TestUtils {
     return cluster;
   }
 
-  public static Server getJetty(java.nio.file.Path resourceDirectory) throws 
Exception {
+  public static Server getJetty(Path resourceDirectory) throws Exception {
     PathResource directory = new PathResource(resourceDirectory);
     ResourceHandler handler = new ResourceHandler();
     handler.setBaseResource(directory);
diff --git 
a/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/resolvers/FileResolversTest.java
 
b/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/resolvers/FileResolversTest.java
index 947034c..8be9907 100644
--- 
a/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/resolvers/FileResolversTest.java
+++ 
b/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/resolvers/FileResolversTest.java
@@ -26,13 +26,13 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
 import java.nio.file.Files;
+import java.nio.file.Path;
 import java.nio.file.StandardOpenOption;
 
 import org.apache.accumulo.classloader.lcc.TestUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
-import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hdfs.MiniDFSCluster;
 import org.eclipse.jetty.server.Server;
 import org.junit.jupiter.api.Test;
@@ -43,7 +43,7 @@ public class FileResolversTest {
 
   private static final Logger LOG = 
LoggerFactory.getLogger(FileResolversTest.class);
 
-  private long getFileSize(java.nio.file.Path p) throws IOException {
+  private long getFileSize(Path p) throws IOException {
     try (InputStream is = Files.newInputStream(p, StandardOpenOption.READ)) {
       return IOUtils.consume(is);
     }
@@ -59,7 +59,7 @@ public class FileResolversTest {
   public void testLocalFile() throws Exception {
     URL jarPath = FileResolversTest.class.getResource("/HelloWorld.jar");
     assertNotNull(jarPath);
-    java.nio.file.Path p = java.nio.file.Path.of(jarPath.toURI());
+    var p = Path.of(jarPath.toURI());
     final long origFileSize = getFileSize(p);
     FileResolver resolver = FileResolver.resolve(jarPath);
     assertTrue(resolver instanceof LocalFileResolver);
@@ -73,7 +73,7 @@ public class FileResolversTest {
 
     URL jarPath = FileResolversTest.class.getResource("/HelloWorld.jar");
     assertNotNull(jarPath);
-    java.nio.file.Path p = java.nio.file.Path.of(jarPath.toURI());
+    var p = Path.of(jarPath.toURI());
     final long origFileSize = getFileSize(p);
 
     Server jetty = TestUtils.getJetty(p.getParent());
@@ -94,15 +94,15 @@ public class FileResolversTest {
 
     URL jarPath = FileResolversTest.class.getResource("/HelloWorld.jar");
     assertNotNull(jarPath);
-    java.nio.file.Path p = java.nio.file.Path.of(jarPath.toURI());
+    var p = Path.of(jarPath.toURI());
     final long origFileSize = getFileSize(p);
 
     MiniDFSCluster cluster = TestUtils.getMiniCluster();
     try {
       FileSystem fs = cluster.getFileSystem();
-      assertTrue(fs.mkdirs(new Path("/context1")));
-      Path dst = new Path("/context1/HelloWorld.jar");
-      fs.copyFromLocalFile(new Path(jarPath.toURI()), dst);
+      assertTrue(fs.mkdirs(new org.apache.hadoop.fs.Path("/context1")));
+      var dst = new org.apache.hadoop.fs.Path("/context1/HelloWorld.jar");
+      fs.copyFromLocalFile(new org.apache.hadoop.fs.Path(jarPath.toURI()), 
dst);
       assertTrue(fs.exists(dst));
 
       URL.setURLStreamHandlerFactory(new 
FsUrlStreamHandlerFactory(cluster.getConfiguration(0)));
diff --git 
a/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/util/LocalStoreTest.java
 
b/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/util/LocalStoreTest.java
index a4c50d8..995ff77 100644
--- 
a/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/util/LocalStoreTest.java
+++ 
b/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/util/LocalStoreTest.java
@@ -30,6 +30,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 import java.io.File;
 import java.net.URL;
 import java.nio.file.Files;
+import java.nio.file.Path;
 import java.util.Comparator;
 import java.util.LinkedHashSet;
 import java.util.stream.Collectors;
@@ -40,7 +41,6 @@ import 
org.apache.accumulo.classloader.lcc.definition.ContextDefinition;
 import org.apache.accumulo.classloader.lcc.definition.Resource;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
-import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hdfs.MiniDFSCluster;
 import org.eclipse.jetty.server.Server;
 import org.junit.jupiter.api.AfterAll;
@@ -52,7 +52,7 @@ import org.junit.jupiter.api.io.TempDir;
 public class LocalStoreTest {
 
   @TempDir
-  private static java.nio.file.Path tempDir;
+  private static Path tempDir;
 
   private static final int MONITOR_INTERVAL_SECS = 5;
   private static MiniDFSCluster hdfs;
@@ -62,7 +62,7 @@ public class LocalStoreTest {
   private static TestClassInfo classB;
   private static TestClassInfo classC;
   private static TestClassInfo classD;
-  private static java.nio.file.Path baseCacheDir = null;
+  private static Path baseCacheDir = null;
 
   @BeforeAll
   public static void beforeAll() throws Exception {
@@ -79,16 +79,15 @@ public class LocalStoreTest {
     // Put B into HDFS
     hdfs = TestUtils.getMiniCluster();
     final FileSystem fs = hdfs.getFileSystem();
-    assertTrue(fs.mkdirs(new Path("/contextB")));
-    final Path dst = new Path("/contextB/TestB.jar");
-    fs.copyFromLocalFile(new Path(jarBOrigLocation.toURI()), dst);
+    assertTrue(fs.mkdirs(new org.apache.hadoop.fs.Path("/contextB")));
+    final var dst = new org.apache.hadoop.fs.Path("/contextB/TestB.jar");
+    fs.copyFromLocalFile(new 
org.apache.hadoop.fs.Path(jarBOrigLocation.toURI()), dst);
     assertTrue(fs.exists(dst));
     URL.setURLStreamHandlerFactory(new 
FsUrlStreamHandlerFactory(hdfs.getConfiguration(0)));
     final URL jarBNewLocation = new URL(fs.getUri().toString() + 
dst.toUri().toString());
 
     // Put C into Jetty
-    java.nio.file.Path jarCParentDirectory =
-        java.nio.file.Path.of(jarCOrigLocation.toURI()).getParent();
+    var jarCParentDirectory = Path.of(jarCOrigLocation.toURI()).getParent();
     jetty = TestUtils.getJetty(jarCParentDirectory);
     final URL jarCNewLocation = jetty.getURI().resolve("TestC.jar").toURL();
 
@@ -123,8 +122,7 @@ public class LocalStoreTest {
   public void cleanBaseDir() throws Exception {
     if (Files.exists(baseCacheDir)) {
       try (var walker = Files.walk(baseCacheDir)) {
-        
walker.map(java.nio.file.Path::toFile).sorted(Comparator.reverseOrder())
-            .forEach(File::delete);
+        
walker.map(Path::toFile).sorted(Comparator.reverseOrder()).forEach(File::delete);
       }
     }
   }

Reply via email to