60 }
catch (URISyntaxException | IOException | ClassNotFoundException e) {
61 throw new RuntimeException(
"Error while retrieving auto-register classes", e);
74 throws URISyntaxException, IOException, ClassNotFoundException {
75 List<Class<?>> annotatedClasses =
new ArrayList<>();
78 annotatedClasses.add(clazz);
81 return annotatedClasses;
93 throws URISyntaxException, IOException, ClassNotFoundException {
95 List<Class<?>> classes =
new ArrayList<>();
96 for (String className : getAllClassNamesFromPlugin(javaPlugin)) {
97 classes.add(Class.forName(className));
112 private static List<String> getAllClassNamesFromPlugin(JavaPlugin javaPlugin)
113 throws URISyntaxException, IOException {
114 File pluginFile =
new File(javaPlugin.getClass().getProtectionDomain().getCodeSource().getLocation().toURI());
115 List<String> classNames =
new ArrayList<>();
116 try (ZipInputStream zipStream =
new ZipInputStream(
new FileInputStream(pluginFile))) {
118 while ((entry = zipStream.getNextEntry()) !=
null) {
119 if (isValidClassEntry(entry, javaPlugin)) {
120 String className = entry.getName().replace(
'/',
'.').replace(
".class",
"");
121 classNames.add(className);
134 private static boolean isValidClassEntry(ZipEntry entry, JavaPlugin javaPlugin) {
135 if (entry.isDirectory() || !entry.getName().endsWith(
".class") || entry.getName().contains(
"$")) {
138 String className = entry.getName().replace(
'/',
'.').replace(
".class",
"");
139 return className.startsWith(javaPlugin.getClass().getPackageName());