Skip to content

Commit

Permalink
RELEASE :: v0.0.4-ALPHA
Browse files Browse the repository at this point in the history
  • Loading branch information
Daybreak312 committed Sep 11, 2024
2 parents dde5794 + fc50e72 commit 67b4020
Show file tree
Hide file tree
Showing 7 changed files with 44 additions and 56 deletions.
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ publishing {

groupId = "org.smoodi.framework"
artifactId = "smoodi-core"
version = "0.0.3-ALPHA"
version = "0.0.4-ALPHA"

pom {
name.set("Smoodi Framework Core")
Expand Down
19 changes: 18 additions & 1 deletion src/main/java/org/smoodi/core/SmoodiBootStrap.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,10 @@

import java.time.Duration;
import java.time.LocalDateTime;
import java.util.List;

import static org.smoodi.core.SmoodiFramework.*;
import static org.smoodi.core.SmoodiFramework.finishBootStrap;
import static org.smoodi.core.SmoodiFramework.getInstance;

@Slf4j
public final class SmoodiBootStrap {
Expand Down Expand Up @@ -37,6 +39,8 @@ public static void startSmoodi(Class<?> mainClass) {

getInstance().getStarter().moduleLoader.loadModules();

new SubprojectBootStrapRunner().run();

} catch (Throwable error) {
log.error(error.getMessage(), error);
return;
Expand All @@ -51,4 +55,17 @@ public static void startSmoodi(Class<?> mainClass) {

finishBootStrap();
}

private static final class SubprojectBootStrapRunner {

private final List<SubprojectBootStrap> bootStraps =
SmoodiFramework.getInstance().getModuleContainer().getModulesByClass(
SubprojectBootStrap.class
);

public void run() {
log.info("Smoodi subprojects bootstrap started.");
bootStraps.forEach(SubprojectBootStrap::start);
}
}
}
5 changes: 0 additions & 5 deletions src/main/java/org/smoodi/core/SmoodiFramework.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,6 @@ public static void initSmoodiFramework(Class<?> mainClass) {
getInstance();

SmoodiFramework.mainClass = mainClass;

SubprojectPackageManager.addSubproject(
"Smoodi-Core",
SmoodiFramework.class.getPackage()
);
}

public static void finishBootStrap() {
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/org/smoodi/core/SubprojectBootStrap.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package org.smoodi.core;

public interface SubprojectBootStrap {

void start();
}
31 changes: 0 additions & 31 deletions src/main/java/org/smoodi/core/SubprojectPackageManager.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,13 +1,25 @@
package org.smoodi.core.module.container;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class ModuleListFinder extends ReflectionBasedModuleFinder {

@Override
public <T> List<T> find(Map<Class<?>, List<Object>> objects, Class<T> klass) {
var found = collectWithSubTypes(klass);
final var subTypes = collectWithSubTypes(klass);

final List<Object> found = new ArrayList<>();

subTypes.forEach(subType -> {
if (objects.get(subType) != null) {
found.addAll(
objects.get(subType)
);
}
});


return (List<T>) found;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,40 +2,29 @@

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.smoodi.core.SubprojectPackageManager;
import org.smoodi.core.module.loader.initializer.ModuleInitializer;

import java.util.Map;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;

@Slf4j
@RequiredArgsConstructor
public class SmoodiProjectModuleLoader implements ModuleLoader {

private static final String SMOODI_DEFAULT_PACKAGE = "org.smoodi";

private final ModuleClassScanner moduleClassScanner;

private final ModuleInitializer moduleInitializer;

@Override
public int loadModules() {
final Map<String, Package> projects = Map.copyOf(SubprojectPackageManager.getSubprojects());

AtomicInteger totalModuleCount = new AtomicInteger();

projects.forEach((key, value) -> {
final Set<Class<?>> moduleClasses = moduleClassScanner.getModuleClasses(value.getName());

moduleInitializer.initialize(moduleClasses.stream().toList());

log.info(LOG_PREFIX + "Smoodi project \"{}\" of pacakge \"{}\" \"{}\" modules are loaded.", key, value.getName(), moduleClasses.size());
final Set<Class<?>> moduleClasses = moduleClassScanner.getModuleClasses(SMOODI_DEFAULT_PACKAGE);

totalModuleCount.addAndGet(moduleClasses.size());
}
);
moduleInitializer.initialize(moduleClasses.stream().toList());

log.info(LOG_PREFIX + "Smoodi project modules total {} loaded", totalModuleCount.get());
log.info(LOG_PREFIX + "Smoodi project total {} modules are loaded.", moduleClasses.size());

return totalModuleCount.get();
return moduleClasses.size();
}
}

0 comments on commit 67b4020

Please sign in to comment.