introduced ModuleRegistry to easy inter-module dependencies

This commit is contained in:
2025-08-09 13:43:10 +02:00
parent 1d569b4962
commit 8fb94fea4b
25 changed files with 343 additions and 255 deletions

View File

@@ -14,8 +14,8 @@ import de.srsoftware.configuration.Configuration;
import de.srsoftware.tools.Path;
import de.srsoftware.tools.SessionToken;
import de.srsoftware.umbrella.core.BaseHandler;
import de.srsoftware.umbrella.core.ModuleRegistry;
import de.srsoftware.umbrella.core.api.TagService;
import de.srsoftware.umbrella.core.api.UserService;
import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
import de.srsoftware.umbrella.core.model.Token;
import de.srsoftware.umbrella.core.model.UmbrellaUser;
@@ -25,13 +25,13 @@ import org.json.JSONArray;
public class TagModule extends BaseHandler implements TagService {
private final SqliteDb tagDb;
private final UserService users;
private final ModuleRegistry registry;
public TagModule(Configuration config, UserService userService) {
public TagModule(ModuleRegistry registry, Configuration config) {
var tagDbFile = config.get(CONFIG_DATABASE).orElseThrow(() -> missingFieldException(CONFIG_DATABASE));
var bmDbFile = config.get(de.srsoftware.umbrella.bookmarks.Constants.CONFIG_DATABASE).orElseThrow(() -> missingFieldException(de.srsoftware.umbrella.bookmarks.Constants.CONFIG_DATABASE));
tagDb = new SqliteDb(connect(tagDbFile),connect(bmDbFile));
users = userService;
this.registry = registry.add(this);
}
@Override
@@ -44,7 +44,7 @@ public class TagModule extends BaseHandler implements TagService {
addCors(ex);
try {
Optional<Token> token = SessionToken.from(ex).map(Token::of);
var user = users.loadUser(token);
var user = registry.userService().loadUser(token);
if (user.isEmpty()) return unauthorized(ex);
var module = path.pop();
if (module == null) throw unprocessable("Module missing in path.");
@@ -63,7 +63,7 @@ public class TagModule extends BaseHandler implements TagService {
public boolean doGet(Path path, HttpExchange ex) throws IOException {
addCors(ex);
try {
var user = users.refreshSession(ex);
var user = registry.userService().refreshSession(ex);
if (user.isEmpty()) return unauthorized(ex);
var module = path.pop();
if (module == null) throw unprocessable("Module missing in path.");
@@ -87,7 +87,7 @@ public class TagModule extends BaseHandler implements TagService {
addCors(ex);
try {
Optional<Token> token = SessionToken.from(ex).map(Token::of);
var user = users.loadUser(token);
var user = registry.userService().loadUser(token);
if (user.isEmpty()) return unauthorized(ex);
var module = path.pop();
if (module == null) throw unprocessable("Module missing in path.");
@@ -130,9 +130,4 @@ public class TagModule extends BaseHandler implements TagService {
save(module,entityId,userIds,List.of(tag));
return tag;
}
@Override
public UserService userService() {
return users;
}
}