
com.undefinedlabs.scope.utils.ClassNameUtils Maven / Gradle / Ivy
package com.undefinedlabs.scope.utils;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
public enum ClassNameUtils {
INSTANCE;
public String getMostInnerClassName(final String className) {
if (StringUtils.isEmpty(className)) {
return null;
}
final int lastIndexOfDot = className.lastIndexOf(".");
final String classNameNoPackage = className.substring(lastIndexOfDot + 1);
final String[] classesName = classNameNoPackage.split("\\$");
for (int i = classesName.length - 1; i >= 0; i--) {
final String classNameChunk = classesName[i];
if (!StringUtils.isNumeric(classNameChunk)) {
return classNameChunk;
}
}
return null;
}
public String extractClassNameFromSource(final File file) throws IOException {
return buildFqClassName(
PackageUtils.extractPackageFromSource(file.getCanonicalPath()), file.getName());
}
private String buildFqClassName(final String packageName, final String fileName) {
return packageName
.concat(StringUtils.isNotEmpty(packageName) ? "." : "")
.concat(FilenameUtils.removeExtension(fileName))
.trim();
}
public String extractBaseClassName(final String className) {
return className.contains("$") ? className.substring(0, className.indexOf("$")) : className;
}
public String extractSourceFileName(final String className, final String extension) {
final String baseClassName = extractBaseClassName(className);
final String[] baseClassNameChunks = baseClassName.split("\\.");
return baseClassNameChunks[baseClassNameChunks.length - 1].concat(".").concat(extension);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy