Skip to content

Commit 5e57244

Browse files
authored
Merge pull request #9 from dmlloyd/improvements
Small improvements
2 parents 1c0893d + 50cf311 commit 5e57244

2 files changed

Lines changed: 18 additions & 21 deletions

File tree

src/main/java/io/smallrye/modules/ModuleClassLoader.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -206,15 +206,15 @@ protected final Class<?> loadClass(final String name, final boolean resolve) thr
206206
if (name.startsWith("[")) {
207207
return loadClassFromDescriptor(name, 0);
208208
}
209-
String dotName = name.replace('/', '.');
210-
String packageName = Util.packageName(dotName);
209+
String binaryName = name.replace('/', '.');
210+
String packageName = Util.packageName(binaryName);
211211
if (packageName.isEmpty() || linkNew().packages().containsKey(packageName)) {
212212
// force full linkage
213213
linkPackages();
214214
return loadClassDirect(name);
215215
}
216216
if (bootModuleIndex.containsKey(packageName)) {
217-
if (dotName.equals("java.util.ServiceLoader")) {
217+
if (binaryName.equals("java.util.ServiceLoader")) {
218218
// loading services! extra linking required
219219
linkUses();
220220
}
@@ -224,7 +224,7 @@ protected final Class<?> loadClass(final String name, final boolean resolve) thr
224224
throw new ClassNotFoundException("Cannot load " + name + ": package " + packageName + " not exported from "
225225
+ module + " to " + module());
226226
}
227-
Class<?> result = Class.forName(module, dotName);
227+
Class<?> result = Class.forName(module, binaryName);
228228
if (result != null) {
229229
return result;
230230
}
@@ -238,14 +238,14 @@ protected final Class<?> loadClass(final String name, final boolean resolve) thr
238238
Class<?> loaded;
239239
ClassLoader cl = lm.classLoader();
240240
if (cl == this) {
241-
loaded = loadClassDirect(dotName);
241+
loaded = loadClassDirect(binaryName);
242242
} else {
243243
Module module = module();
244244
if (lm.module().isExported(packageName, module)) {
245245
if (cl instanceof ModuleClassLoader mcl) {
246-
loaded = mcl.loadClassDirect(dotName);
246+
loaded = mcl.loadClassDirect(binaryName);
247247
} else {
248-
loaded = Class.forName(dotName, false, cl);
248+
loaded = Class.forName(binaryName, false, cl);
249249
}
250250
} else {
251251
throw new ClassNotFoundException(lm.name().map(n -> "Module " + n).orElse("Unnamed module")

src/main/java/io/smallrye/modules/desc/ModuleDescriptor.java

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -212,21 +212,18 @@ private Map<String, PackageInfo> searchPackages(final Resource dir,
212212
} else {
213213
String pathName = child.pathName();
214214
if (pathName.endsWith(".class")) {
215-
int idx = pathName.lastIndexOf('/');
216-
if (idx != -1) {
217-
String pn = pathName.substring(0, idx).replace('/', '.');
218-
if (found.add(pn)) {
219-
PackageInfo existing = map.get(pn);
220-
PackageInfo update = packageFunction.apply(pn, existing);
221-
if (update == null || update.equals(existing)) {
222-
// skip it
223-
continue;
224-
}
225-
if (map == packages) {
226-
map = new HashMap<>(packages);
227-
}
228-
map.put(pn, update);
215+
String pn = Util.resourcePackageName(pathName);
216+
if (!pn.isEmpty() && found.add(pn)) {
217+
PackageInfo existing = map.get(pn);
218+
PackageInfo update = packageFunction.apply(pn, existing);
219+
if (update == null || update.equals(existing)) {
220+
// skip it
221+
continue;
222+
}
223+
if (map == packages) {
224+
map = new HashMap<>(packages);
229225
}
226+
map.put(pn.intern(), update);
230227
}
231228
}
232229
}

0 commit comments

Comments
 (0)