Fix reading class aliases

Fixes #2263
This commit is contained in:
Dan Mulloy 2023-03-26 14:09:45 -05:00
parent 18c2b389a4
commit 7217b11ba7
No known key found for this signature in database
GPG Key ID: E3B02DE32FB04AC1
2 changed files with 38 additions and 7 deletions

View File

@ -75,12 +75,6 @@ final class CachedPackage {
return source.loadClass(combine(packageName, className));
}
public Class<?> requireClass(String className) throws ClassNotFoundException {
String canonicalName = combine(packageName, className);
return source.loadClass(canonicalName)
.orElseThrow(() -> new ClassNotFoundException(className));
}
/**
* Retrieve the class object of a specific class in the current package.
*
@ -96,7 +90,7 @@ final class CachedPackage {
}
for (String alias : aliases) {
clazz = resolveClass(className);
clazz = resolveClass(alias);
if (clazz.isPresent()) {
return clazz;
}

View File

@ -0,0 +1,37 @@
package com.comphenix.protocol.utility;
import java.util.Optional;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class CachedPackageTest {
private CachedPackage pack;
@BeforeEach
public void prepare() {
ClassSource source = ClassSource.fromClassLoader();
this.pack = new CachedPackage("java.lang", source);
}
@Test
public void testGetPackageClass() {
Optional<Class<?>> result = pack.getPackageClass("Object");
assertTrue(result.isPresent());
assertEquals(result.get(), Object.class);
}
@Test
public void testUsingAliases() {
Optional<Class<?>> result = pack.getPackageClass("NOT_A_CLASS", "Object");
assertTrue(result.isPresent());
assertEquals(result.get(), Object.class);
result = pack.getPackageClass("NOT_A_CLASS", "STILL_NOT_A_CLASS", "Object");
assertTrue(result.isPresent());
assertEquals(result.get(), Object.class);
}
}