introduced ModuleRegistry to easy inter-module dependencies

This commit is contained in:
2025-08-09 13:43:10 +02:00
parent 1d569b4962
commit 5d506ac0f9
25 changed files with 347 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.api.TagService;
import de.srsoftware.umbrella.core.api.UserService;
import de.srsoftware.umbrella.core.ModuleRegistry;
import de.srsoftware.umbrella.core.api.BookmarkService;
import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
import de.srsoftware.umbrella.core.model.Token;
import de.srsoftware.umbrella.core.model.UmbrellaUser;
@@ -24,16 +24,14 @@ import java.util.ArrayList;
import java.util.Optional;
import org.json.JSONArray;
public class BookmarkApi extends BaseHandler {
public class BookmarkApi extends BaseHandler implements BookmarkService {
private final BookmarkDb db;
private final UserService users;
private final TagService tags;
private final ModuleRegistry registry;
public BookmarkApi(Configuration config, TagService tagService) {
public BookmarkApi(ModuleRegistry registry, Configuration config) {
var dbFile = config.get(CONFIG_DATABASE).orElseThrow(() -> missingFieldException(CONFIG_DATABASE));
db = new SqliteDb(connect(dbFile));
tags = tagService;
users = tagService.userService();
this.registry = registry.add(this);
}
@Override
@@ -41,7 +39,7 @@ public class BookmarkApi extends BaseHandler {
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 head = path.pop();
return switch (head) {
@@ -61,7 +59,7 @@ public class BookmarkApi extends BaseHandler {
private boolean getBookmark(UmbrellaUser user, long id, HttpExchange ex) throws IOException {
var bookmark = db.load(id,user.id());
tags.getTags(BOOKMARK, id, user).forEach(bookmark.tags()::add);
registry.tagService().getTags(BOOKMARK, id, user).forEach(bookmark.tags()::add);
return sendContent(ex,bookmark);
}
@@ -70,7 +68,7 @@ public class BookmarkApi extends BaseHandler {
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 head = path.pop();
return switch (head) {
@@ -117,7 +115,7 @@ public class BookmarkApi extends BaseHandler {
if (json.has(TAGS) && json.get(TAGS) instanceof JSONArray tagList){
var list = tagList.toList().stream().map(Object::toString).toList();
tags.save(BOOKMARK,bookmark.urlId(), userList, list);
registry.tagService().save(BOOKMARK,bookmark.urlId(), userList, list);
}
return sendContent(ex,bookmark);
}