Enable creating an API using Spring Web #5

Merged
niat8586 merged 39 commits from spring into develop 2024-11-06 11:23:29 +01:00
67 changed files with 57 additions and 65 deletions
Showing only changes of commit 886a3a8d3d - Show all commits

View File

@ -54,6 +54,10 @@
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<!--QueryDSL-->
<dependency>
@ -76,6 +80,16 @@
<groupId>jakarta.transaction</groupId>
<artifactId>jakarta.transaction-api</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate.orm</groupId>
<artifactId>hibernate-core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<scope>test</scope>
</dependency>
<!--Additional stuff-->
<dependency>

View File

@ -1,13 +1,11 @@
package se.su.dsv.scipro.war;
package se.su.dsv.scipro;
import com.google.common.eventbus.EventBus;
import jakarta.inject.Provider;
import jakarta.persistence.EntityManager;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import se.su.dsv.scipro.DataInitializer;
import se.su.dsv.scipro.activityplan.ActivityPlanFacade;
import se.su.dsv.scipro.activityplan.ActivityPlanFacadeImpl;
import se.su.dsv.scipro.activityplan.ActivityPlanServiceImpl;
@ -17,8 +15,6 @@ import se.su.dsv.scipro.checklist.ChecklistAnswerServiceImpl;
import se.su.dsv.scipro.checklist.ChecklistServiceImpl;
import se.su.dsv.scipro.checklist.ChecklistTemplateService;
import se.su.dsv.scipro.checklist.ChecklistTemplateServiceImpl;
import se.su.dsv.scipro.crosscutting.ReviewerAssignedNotifications;
import se.su.dsv.scipro.crosscutting.ReviewerSupportMailer;
import se.su.dsv.scipro.daisyExternal.http.DaisyAPIImpl;
import se.su.dsv.scipro.date.DateServiceImpl;
import se.su.dsv.scipro.file.FileDescriptionRepo;
@ -44,8 +40,6 @@ import se.su.dsv.scipro.finalseminar.FinalSeminarSettingsServiceImpl;
import se.su.dsv.scipro.finalseminar.FinalSeminarUploadControllerImpl;
import se.su.dsv.scipro.finalthesis.FinalThesisService;
import se.su.dsv.scipro.finalthesis.FinalThesisServiceImpl;
import se.su.dsv.scipro.finalthesis.PublishingConsentService;
import se.su.dsv.scipro.finalthesis.PublishingConsentUnavailable;
import se.su.dsv.scipro.firstmeeting.FirstMeetingServiceImpl;
import se.su.dsv.scipro.forum.AbstractThreadRepository;
import se.su.dsv.scipro.forum.BasicForumService;
@ -734,12 +728,6 @@ public class CoreConfig {
return new PublicationMetadataServiceImpl(publicationMetadataRepository);
}
@Bean
@ConditionalOnMissingBean(PublishingConsentService.class)
public PublishingConsentUnavailable publishingConsentService() {
return new PublishingConsentUnavailable();
}
@Bean
public ReflectionServiceImpl reflectionService(
AuthorRepository authorRepository,
@ -910,26 +898,6 @@ public class CoreConfig {
return new NotificationMailFormatterImpl();
}
@Bean
public ReviewerSupportMailer reviewerSupportMailer(
EventBus eventBus,
GeneralSystemSettingsService generalSystemSettingsService,
MailEventService mailEventService)
{
return new ReviewerSupportMailer(eventBus, mailEventService, generalSystemSettingsService);
}
@Bean
public ReviewerAssignedNotifications reviewerAssignedNotifications(
EventBus eventBus,
NotificationController notificationController,
RoughDraftApprovalService roughDraftApprovalService,
FinalSeminarApprovalService finalSeminarApprovalService)
{
return new ReviewerAssignedNotifications(roughDraftApprovalService,
finalSeminarApprovalService, notificationController, eventBus);
}
@Bean
public ReviewerAssignedDeadline reviewerAssignedDeadline(
EventBus eventBus,

View File

@ -1,4 +1,4 @@
package se.su.dsv.scipro.war;
package se.su.dsv.scipro;
import jakarta.inject.Provider;
import jakarta.persistence.EntityManager;

View File

@ -14,10 +14,8 @@ import org.springframework.context.annotation.Import;
import se.su.dsv.scipro.profiles.CurrentProfile;
import se.su.dsv.scipro.sukat.Sukat;
import se.su.dsv.scipro.system.CurrentUser;
import se.su.dsv.scipro.war.CoreConfig;
import se.su.dsv.scipro.war.MailConfig;
import se.su.dsv.scipro.war.RepositoryConfiguration;
import se.su.dsv.scipro.war.WicketConfiguration;
import se.su.dsv.scipro.CoreConfig;
import se.su.dsv.scipro.RepositoryConfiguration;
import java.time.Clock;
import java.util.Optional;
@ -62,7 +60,7 @@ public abstract class SpringTest {
}
@Configuration(proxyBeanMethods = false)
@Import({CoreConfig.class, RepositoryConfiguration.class, MailConfig.class, WicketConfiguration.class})
@Import({CoreConfig.class, RepositoryConfiguration.class})
public static class TestContext {
@Bean
public InMemoryFileStore inMemoryFileStore() {

View File

@ -81,12 +81,6 @@
<artifactId>api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>

View File

@ -7,6 +7,7 @@ import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.boot.autoconfigure.orm.jpa.EntityManagerFactoryBuilderCustomizer;
import org.springframework.boot.builder.SpringApplicationBuilder;
@ -16,9 +17,13 @@ import org.springframework.context.annotation.Import;
import org.springframework.core.task.SimpleAsyncTaskExecutor;
import org.springframework.orm.jpa.SharedEntityManagerCreator;
import org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter;
import se.su.dsv.scipro.CoreConfig;
import se.su.dsv.scipro.CurrentUserFromWicketSession;
import se.su.dsv.scipro.FileSystemStore;
import se.su.dsv.scipro.RepositoryConfiguration;
import se.su.dsv.scipro.file.FileStore;
import se.su.dsv.scipro.finalthesis.PublishingConsentService;
import se.su.dsv.scipro.finalthesis.PublishingConsentUnavailable;
import se.su.dsv.scipro.profiles.CurrentProfile;
import se.su.dsv.scipro.system.AggregateUserSearch;
import se.su.dsv.scipro.system.Lifecycle;
@ -154,4 +159,10 @@ public class Main extends SpringBootServletInitializer implements ServletContain
{
return new AggregateUserSearch(userSearchProviders, userService);
}
@Bean
@ConditionalOnMissingBean(PublishingConsentService.class)
public PublishingConsentUnavailable publishingConsentService() {
return new PublishingConsentUnavailable();
}
}

View File

@ -10,11 +10,16 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import se.su.dsv.scipro.SciProApplication;
import se.su.dsv.scipro.crosscutting.ForwardPhase2Feedback;
import se.su.dsv.scipro.crosscutting.ReviewerAssignedNotifications;
import se.su.dsv.scipro.crosscutting.ReviewerSupportMailer;
import se.su.dsv.scipro.crosscutting.ReviewingNotifications;
import se.su.dsv.scipro.forum.ProjectForumService;
import se.su.dsv.scipro.generalsystemsettings.GeneralSystemSettingsService;
import se.su.dsv.scipro.mail.MailEventService;
import se.su.dsv.scipro.notifications.NotificationController;
import se.su.dsv.scipro.profiles.CurrentProfile;
import se.su.dsv.scipro.reviewing.FinalSeminarApprovalService;
import se.su.dsv.scipro.reviewing.RoughDraftApprovalService;
@Configuration
public class WicketConfiguration {
@ -60,4 +65,26 @@ public class WicketConfiguration {
{
return new ForwardPhase2Feedback(webApplication, projectForumService, eventBus);
}
// Not sure why this dependency lives in the view module
@Bean
public ReviewerSupportMailer reviewerSupportMailer(
EventBus eventBus,
GeneralSystemSettingsService generalSystemSettingsService,
MailEventService mailEventService)
{
return new ReviewerSupportMailer(eventBus, mailEventService, generalSystemSettingsService);
}
// Not sure why this dependency lives in the view module
@Bean
public ReviewerAssignedNotifications reviewerAssignedNotifications(
EventBus eventBus,
NotificationController notificationController,
RoughDraftApprovalService roughDraftApprovalService,
FinalSeminarApprovalService finalSeminarApprovalService)
{
return new ReviewerAssignedNotifications(roughDraftApprovalService,
finalSeminarApprovalService, notificationController, eventBus);
}
}

View File

@ -1,20 +0,0 @@
package se.su.dsv.scipro.test;
import java.time.Duration;
import java.time.Instant;
import java.time.Period;
import java.util.Date;
public class Dates {
public static Date yesterday() {
return Date.from(Instant.now().minus(Period.ofDays(1)));
}
public static Date tomorrow() {
return Date.from(Instant.now().plus(Period.ofDays(1)));
}
public static Date oneHourAgo() {
return Date.from(Instant.now().minus(Duration.ofHours(1)));
}
}