diff --git a/src/main/java/it/robfrank/linklift/Application.java b/src/main/java/it/robfrank/linklift/Application.java index 951d108c..e100e0ca 100644 --- a/src/main/java/it/robfrank/linklift/Application.java +++ b/src/main/java/it/robfrank/linklift/Application.java @@ -2,12 +2,7 @@ import com.arcadedb.remote.RemoteDatabase; import io.javalin.Javalin; -import it.robfrank.linklift.adapter.in.web.AuthenticationController; -import it.robfrank.linklift.adapter.in.web.CollectionController; -import it.robfrank.linklift.adapter.in.web.GetContentController; -import it.robfrank.linklift.adapter.in.web.GetRelatedLinksController; -import it.robfrank.linklift.adapter.in.web.ListLinksController; -import it.robfrank.linklift.adapter.in.web.NewLinkController; +import it.robfrank.linklift.adapter.in.web.*; import it.robfrank.linklift.adapter.out.content.SimpleTextSummarizer; import it.robfrank.linklift.adapter.out.event.SimpleEventPublisher; import it.robfrank.linklift.adapter.out.http.HttpContentDownloader; diff --git a/src/main/java/it/robfrank/linklift/adapter/out/persistence/ArcadeCollectionRepository.java b/src/main/java/it/robfrank/linklift/adapter/out/persistence/ArcadeCollectionRepository.java index 1fa53868..7b13527d 100644 --- a/src/main/java/it/robfrank/linklift/adapter/out/persistence/ArcadeCollectionRepository.java +++ b/src/main/java/it/robfrank/linklift/adapter/out/persistence/ArcadeCollectionRepository.java @@ -1,14 +1,12 @@ package it.robfrank.linklift.adapter.out.persistence; +import com.arcadedb.database.Document; import com.arcadedb.exception.ArcadeDBException; import com.arcadedb.query.sql.executor.Result; import com.arcadedb.remote.RemoteDatabase; import it.robfrank.linklift.application.domain.exception.DatabaseException; import it.robfrank.linklift.application.domain.model.Collection; import it.robfrank.linklift.application.domain.model.Link; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.time.temporal.ChronoUnit; import java.util.List; import java.util.Optional; import org.slf4j.Logger; @@ -25,7 +23,7 @@ public ArcadeCollectionRepository(RemoteDatabase database) { this.linkMapper = new LinkMapper(); } - private Collection toCollection(com.arcadedb.database.Document vertex) { + private Collection toCollection(Document vertex) { return new Collection( vertex.getString("id"), vertex.getString("name"), diff --git a/src/main/java/it/robfrank/linklift/adapter/out/persistence/ArcadeLinkRepository.java b/src/main/java/it/robfrank/linklift/adapter/out/persistence/ArcadeLinkRepository.java index f05bcdbe..216581d8 100644 --- a/src/main/java/it/robfrank/linklift/adapter/out/persistence/ArcadeLinkRepository.java +++ b/src/main/java/it/robfrank/linklift/adapter/out/persistence/ArcadeLinkRepository.java @@ -9,6 +9,7 @@ import it.robfrank.linklift.application.domain.model.Link; import it.robfrank.linklift.application.domain.model.LinkPage; import it.robfrank.linklift.application.port.in.ListLinksQuery; +import java.net.URI; import java.net.URISyntaxException; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -106,7 +107,7 @@ public Link saveLinkForUser(Link link, String userId) { // Extract domain and create BELONGS_TO_DOMAIN edge try { - String domainName = new java.net.URI(link.url()).getHost(); + String domainName = new URI(link.url()).getHost(); if (domainName != null) { if (domainName.startsWith("www.")) { domainName = domainName.substring(4); @@ -125,7 +126,7 @@ public Link saveLinkForUser(Link link, String userId) { } } catch (URISyntaxException e) { // Log domain extraction errors instead of printing to stderr - logger.warn("Failed to extract domain from URL: {}", link.url(), e); + logger.error("Failed to extract domain from URL: {}", link.url(), e); } }); return link; diff --git a/src/main/java/it/robfrank/linklift/adapter/out/persistence/LinkPersistenceAdapter.java b/src/main/java/it/robfrank/linklift/adapter/out/persistence/LinkPersistenceAdapter.java index 3462d541..2fa06f3a 100644 --- a/src/main/java/it/robfrank/linklift/adapter/out/persistence/LinkPersistenceAdapter.java +++ b/src/main/java/it/robfrank/linklift/adapter/out/persistence/LinkPersistenceAdapter.java @@ -6,6 +6,7 @@ import it.robfrank.linklift.application.port.in.ListLinksQuery; import it.robfrank.linklift.application.port.out.LoadLinksPort; import it.robfrank.linklift.application.port.out.SaveLinkPort; +import java.util.List; import java.util.Optional; public class LinkPersistenceAdapter implements SaveLinkPort, LoadLinksPort { @@ -86,7 +87,7 @@ public void transferLinkOwnership(String linkId, String fromUserId, String toUse } @Override - public java.util.List getRelatedLinks(String linkId, String userId) { + public List getRelatedLinks(String linkId, String userId) { return linkRepository.getRelatedLinks(linkId, userId); } } diff --git a/src/main/java/it/robfrank/linklift/application/port/out/LoadLinksPort.java b/src/main/java/it/robfrank/linklift/application/port/out/LoadLinksPort.java index 2028fd7c..e72f82ce 100644 --- a/src/main/java/it/robfrank/linklift/application/port/out/LoadLinksPort.java +++ b/src/main/java/it/robfrank/linklift/application/port/out/LoadLinksPort.java @@ -1,10 +1,12 @@ package it.robfrank.linklift.application.port.out; +import it.robfrank.linklift.application.domain.model.Link; import it.robfrank.linklift.application.domain.model.LinkPage; import it.robfrank.linklift.application.port.in.ListLinksQuery; +import java.util.List; public interface LoadLinksPort { LinkPage loadLinks(ListLinksQuery query); - java.util.List getRelatedLinks(String linkId, String userId); + List getRelatedLinks(String linkId, String userId); } diff --git a/src/main/java/it/robfrank/linklift/config/WebBuilder.java b/src/main/java/it/robfrank/linklift/config/WebBuilder.java index cef9df7a..84b392cb 100644 --- a/src/main/java/it/robfrank/linklift/config/WebBuilder.java +++ b/src/main/java/it/robfrank/linklift/config/WebBuilder.java @@ -3,10 +3,7 @@ import static io.javalin.apibuilder.ApiBuilder.get; import io.javalin.Javalin; -import it.robfrank.linklift.adapter.in.web.AuthenticationController; -import it.robfrank.linklift.adapter.in.web.GetContentController; -import it.robfrank.linklift.adapter.in.web.ListLinksController; -import it.robfrank.linklift.adapter.in.web.NewLinkController; +import it.robfrank.linklift.adapter.in.web.*; import it.robfrank.linklift.adapter.in.web.error.GlobalExceptionHandler; import it.robfrank.linklift.adapter.in.web.security.JwtAuthenticationHandler; import it.robfrank.linklift.adapter.in.web.security.RequireAuthentication; @@ -79,7 +76,7 @@ public WebBuilder withGetContentController(GetContentController getContentContro return this; } - public WebBuilder withCollectionController(it.robfrank.linklift.adapter.in.web.CollectionController collectionController) { + public WebBuilder withCollectionController(CollectionController collectionController) { // Shared authentication for all /api/v1/collections endpoints app.before("/api/v1/collections", requireAuthentication); app.before("/api/v1/collections/{id}", requireAuthentication); @@ -111,7 +108,7 @@ public WebBuilder withCollectionController(it.robfrank.linklift.adapter.in.web.C return this; } - public WebBuilder withGetRelatedLinksController(it.robfrank.linklift.adapter.in.web.GetRelatedLinksController getRelatedLinksController) { + public WebBuilder withGetRelatedLinksController(GetRelatedLinksController getRelatedLinksController) { app.before("/api/v1/links/{linkId}/related", requireAuthentication); app.before("/api/v1/links/{linkId}/related", RequirePermission.any(authorizationService, Role.Permissions.READ_OWN_LINKS)); app.get("/api/v1/links/{linkId}/related", getRelatedLinksController::getRelatedLinks);