in src/main/java/org/apache/commons/jexl3/internal/introspection/ClassTool.java [64:103]
static String getPackageName(final Class<?> clz) {
String pkgName = "";
if (clz != null) {
// use native if we can
if (GET_PKGNAME != null) {
try {
return (String) GET_PKGNAME.invoke(clz);
} catch (final Throwable xany) {
return "";
}
}
// remove array
Class<?> clazz = clz;
while (clazz.isArray()) {
clazz = clazz.getComponentType();
}
// mimic getPackageName()
if (clazz.isPrimitive()) {
return "java.lang";
}
// remove enclosing
Class<?> walk = clazz.getEnclosingClass();
while (walk != null) {
clazz = walk;
walk = walk.getEnclosingClass();
}
final Package pkg = clazz.getPackage();
// pkg may be null for unobvious reasons
if (pkg == null) {
final String name = clazz.getName();
final int dot = name.lastIndexOf('.');
if (dot > 0) {
pkgName = name.substring(0, dot);
}
} else {
pkgName = pkg.getName();
}
}
return pkgName;
}