introduced ModuleRegistry to easy inter-module dependencies
This commit is contained in:
@@ -12,8 +12,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.NoteService;
|
||||
import de.srsoftware.umbrella.core.api.UserService;
|
||||
import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
|
||||
import de.srsoftware.umbrella.core.model.Note;
|
||||
import de.srsoftware.umbrella.core.model.Token;
|
||||
@@ -26,12 +26,12 @@ import java.util.stream.Collectors;
|
||||
|
||||
public class NoteModule extends BaseHandler implements NoteService {
|
||||
private final NotesDb notesDb;
|
||||
private final UserService users;
|
||||
private final ModuleRegistry registry;
|
||||
|
||||
public NoteModule(Configuration config, UserService userService) {
|
||||
public NoteModule(ModuleRegistry registry, Configuration config) {
|
||||
var dbFile = config.get(CONFIG_DATABASE).orElseThrow(() -> missingFieldException(CONFIG_DATABASE));
|
||||
notesDb = new SqliteDb(connect(dbFile));
|
||||
users = userService;
|
||||
this.registry = registry.add(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -44,7 +44,7 @@ public class NoteModule extends BaseHandler implements NoteService {
|
||||
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();
|
||||
if (head == null) throw unprocessable("Module missing in path.");
|
||||
@@ -71,7 +71,7 @@ public class NoteModule extends BaseHandler implements NoteService {
|
||||
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();
|
||||
Map<Long,Note> notes = null;
|
||||
@@ -82,7 +82,7 @@ public class NoteModule extends BaseHandler implements NoteService {
|
||||
long entityId = Long.parseLong(head);
|
||||
notes = getNotes(module, entityId);
|
||||
}
|
||||
var authors = notes.values().stream().map(Note::authorId).distinct().map(users::loadUser).collect(Collectors.toMap(UmbrellaUser::id,UmbrellaUser::toMap));
|
||||
var authors = notes.values().stream().map(Note::authorId).distinct().map(registry.userService()::loadUser).collect(Collectors.toMap(UmbrellaUser::id,UmbrellaUser::toMap));
|
||||
return sendContent(ex, Map.of("notes",mapValues(notes),"authors",authors));
|
||||
} catch (NumberFormatException e){
|
||||
return sendContent(ex,HTTP_UNPROCESSABLE,"Entity id missing in path.");
|
||||
@@ -96,7 +96,7 @@ public class NoteModule extends BaseHandler implements NoteService {
|
||||
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();
|
||||
long noteId = Long.parseLong(head);
|
||||
@@ -119,7 +119,7 @@ public class NoteModule extends BaseHandler implements NoteService {
|
||||
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.");
|
||||
|
||||
Reference in New Issue
Block a user