Sort of working
This commit is contained in:
parent
f8d65d4821
commit
55ee3581f1
@ -87,6 +87,10 @@
|
||||
<groupId>jakarta.persistence</groupId>
|
||||
<artifactId>jakarta.persistence-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>jakarta.transaction</groupId>
|
||||
<artifactId>jakarta.transaction-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.hibernate.orm</groupId>
|
||||
<artifactId>hibernate-core</artifactId>
|
||||
|
@ -43,6 +43,7 @@ public class UserProfileServiceImpl extends AbstractServiceImpl<UserProfile, Lon
|
||||
}
|
||||
|
||||
@Override
|
||||
@jakarta.transaction.Transactional
|
||||
public void setSelectedRole(User user, Roles role) {
|
||||
UserProfile profile = findByUser(user);
|
||||
profile.setSelectedRole(role);
|
||||
|
13
pom.xml
13
pom.xml
@ -98,14 +98,11 @@
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-web</artifactId>
|
||||
<version>6.1.4</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-orm</artifactId>
|
||||
<version>6.1.4</version>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-dependencies</artifactId>
|
||||
<version>3.2.5</version>
|
||||
<scope>import</scope>
|
||||
<type>pom</type>
|
||||
</dependency>
|
||||
|
||||
<!-- Servlet API, needed for compilation. -->
|
||||
|
@ -99,6 +99,14 @@
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-orm</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-tx</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-webmvc</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- Servlet API, needed for compilation. -->
|
||||
<dependency>
|
||||
|
@ -1,22 +1,61 @@
|
||||
import com.google.common.eventbus.EventBus;
|
||||
import jakarta.inject.Named;
|
||||
import jakarta.inject.Provider;
|
||||
import jakarta.inject.Singleton;
|
||||
import jakarta.persistence.EntityManager;
|
||||
import jakarta.persistence.EntityManagerFactory;
|
||||
import jakarta.persistence.Persistence;
|
||||
import jakarta.servlet.ServletContext;
|
||||
import jakarta.servlet.ServletException;
|
||||
import org.apache.wicket.protocol.http.WicketFilter;
|
||||
import org.apache.wicket.spring.injection.annot.SpringComponentInjector;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.core.task.SimpleAsyncTaskExecutor;
|
||||
import org.springframework.orm.jpa.LocalEntityManagerFactoryBean;
|
||||
import org.springframework.orm.jpa.SharedEntityManagerCreator;
|
||||
import org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
||||
import org.springframework.web.WebApplicationInitializer;
|
||||
import org.springframework.web.context.ContextLoaderListener;
|
||||
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
|
||||
import org.springframework.web.servlet.DispatcherServlet;
|
||||
import se.su.dsv.scipro.SciProApplication;
|
||||
import se.su.dsv.scipro.daisyExternal.http.DaisyAPI;
|
||||
import se.su.dsv.scipro.daisyExternal.http.DaisyAPIImpl;
|
||||
import se.su.dsv.scipro.file.FileService;
|
||||
import se.su.dsv.scipro.finalseminar.AuthorRepository;
|
||||
import se.su.dsv.scipro.finalseminar.FinalSeminarActiveParticipationRepository;
|
||||
import se.su.dsv.scipro.finalseminar.FinalSeminarOppositionRepo;
|
||||
import se.su.dsv.scipro.finalseminar.FinalSeminarRepository;
|
||||
import se.su.dsv.scipro.finalseminar.FinalSeminarService;
|
||||
import se.su.dsv.scipro.finalseminar.FinalSeminarServiceImpl;
|
||||
import se.su.dsv.scipro.finalseminar.FinalSeminarSettingsService;
|
||||
import se.su.dsv.scipro.finalseminar.FinalSeminarSettingsServiceImpl;
|
||||
import se.su.dsv.scipro.gdpr.Reporter;
|
||||
import se.su.dsv.scipro.misc.DaysService;
|
||||
import se.su.dsv.scipro.misc.DaysServiceImpl;
|
||||
import se.su.dsv.scipro.nonworkperiod.NonWorkDayPeriodService;
|
||||
import se.su.dsv.scipro.nonworkperiod.NonWorkDayPeriodServiceImpl;
|
||||
import se.su.dsv.scipro.notifications.NotificationService;
|
||||
import se.su.dsv.scipro.notifications.NotificationServiceImpl;
|
||||
import se.su.dsv.scipro.profiles.CurrentProfile;
|
||||
import se.su.dsv.scipro.project.ProjectRepo;
|
||||
import se.su.dsv.scipro.project.ProjectRepoImpl;
|
||||
import se.su.dsv.scipro.project.ProjectService;
|
||||
import se.su.dsv.scipro.project.ProjectServiceImpl;
|
||||
import se.su.dsv.scipro.report.OppositionReportService;
|
||||
import se.su.dsv.scipro.report.OppositionReportServiceImpl;
|
||||
import se.su.dsv.scipro.reviewing.RoughDraftApprovalService;
|
||||
import se.su.dsv.scipro.springdata.serviceimpls.UserProfileServiceImpl;
|
||||
import se.su.dsv.scipro.springdata.services.UserProfileService;
|
||||
import se.su.dsv.scipro.system.FooterAddressRepo;
|
||||
import se.su.dsv.scipro.system.FooterAddressRepoImpl;
|
||||
import se.su.dsv.scipro.system.FooterLinkRepo;
|
||||
import se.su.dsv.scipro.system.FooterLinkRepoImpl;
|
||||
import se.su.dsv.scipro.system.FooterLinkService;
|
||||
import se.su.dsv.scipro.system.FooterLinkServiceImpl;
|
||||
import se.su.dsv.scipro.system.Lifecycle;
|
||||
import se.su.dsv.scipro.system.ResearchArea;
|
||||
import se.su.dsv.scipro.system.User;
|
||||
@ -24,10 +63,9 @@ import se.su.dsv.scipro.system.UserImportService;
|
||||
import se.su.dsv.scipro.system.UserService;
|
||||
import se.su.dsv.scipro.system.UserServiceImpl;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.CookieHandler;
|
||||
import java.net.CookieManager;
|
||||
import java.nio.file.Path;
|
||||
import java.time.Clock;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
@ -40,10 +78,13 @@ public class ApplicationBootstrap implements WebApplicationInitializer {
|
||||
// preserve cookies when using Jersey which will use the logged in session cookie from
|
||||
// Daisy API thus drastically speeding up the batch jobs
|
||||
CookieHandler.setDefault(new CookieManager());
|
||||
|
||||
AnnotationConfigWebApplicationContext webApplicationContext = new AnnotationConfigWebApplicationContext();
|
||||
webApplicationContext.setServletContext(servletContext);
|
||||
webApplicationContext.register(SciProApplication.class);
|
||||
webApplicationContext.register(CurrentProfile.class);
|
||||
webApplicationContext.register(Config.class);
|
||||
webApplicationContext.scan("se.su.dsv.scipro.api");
|
||||
webApplicationContext.refresh();
|
||||
|
||||
servletContext.addListener(new ContextLoaderListener(webApplicationContext));
|
||||
@ -60,9 +101,13 @@ public class ApplicationBootstrap implements WebApplicationInitializer {
|
||||
|
||||
servletContext.addFilter("wicket-filter", filter)
|
||||
.addMappingForUrlPatterns(null, true, "/*");
|
||||
|
||||
servletContext.addServlet("spring-web", new DispatcherServlet(webApplicationContext))
|
||||
.addMapping("/api/*");
|
||||
}
|
||||
|
||||
@Configuration
|
||||
@EnableTransactionManagement
|
||||
public static class Config {
|
||||
@Bean
|
||||
@Named("profile")
|
||||
@ -92,14 +137,16 @@ public class ApplicationBootstrap implements WebApplicationInitializer {
|
||||
|
||||
@Bean
|
||||
@Singleton
|
||||
public EntityManagerFactory entityManagerFactory() {
|
||||
System.out.println("Creating EntityManagerFactory");
|
||||
return Persistence.createEntityManagerFactory("defaultPersistenceUnit");
|
||||
public LocalEntityManagerFactoryBean entityManagerFactory() {
|
||||
LocalEntityManagerFactoryBean localEntityManagerFactoryBean = new LocalEntityManagerFactoryBean();
|
||||
localEntityManagerFactoryBean.setPersistenceUnitName("defaultPersistenceUnit");
|
||||
localEntityManagerFactoryBean.setBootstrapExecutor(new SimpleAsyncTaskExecutor());
|
||||
return localEntityManagerFactoryBean;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public EntityManager entityManager(EntityManagerFactory entityManagerFactory) {
|
||||
return entityManagerFactory.createEntityManager();
|
||||
return SharedEntityManagerCreator.createSharedEntityManager(entityManagerFactory);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ -107,6 +154,11 @@ public class ApplicationBootstrap implements WebApplicationInitializer {
|
||||
return new UserServiceImpl(entityManagerProvider);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
|
||||
return new org.springframework.orm.jpa.JpaTransactionManager(entityManagerFactory);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public UserImportService importService() {
|
||||
return new UserImportService() {
|
||||
@ -130,5 +182,91 @@ public class ApplicationBootstrap implements WebApplicationInitializer {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Bean
|
||||
public UserProfileService userProfileService(Provider<EntityManager> em) {
|
||||
return new UserProfileServiceImpl(em);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public NotificationService notificationService(Provider<EntityManager> em) {
|
||||
return new NotificationServiceImpl(em);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public FooterLinkService footerLinkService(FooterLinkRepo repository) {
|
||||
return new FooterLinkServiceImpl(repository);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public FooterLinkRepo footerLinkRepo(Provider<EntityManager> em) {
|
||||
return new FooterLinkRepoImpl(em);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public FooterAddressRepo footerAddressRepo(Provider<EntityManager> em) {
|
||||
return new FooterAddressRepoImpl(em);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ProjectService projectService(Provider<EntityManager> em, ProjectRepo projectRepo, Clock clock,
|
||||
EventBus eventBus) {
|
||||
return new ProjectServiceImpl(projectRepo, clock, eventBus, em);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ProjectRepo projectRepo(Provider<EntityManager> em) {
|
||||
return new ProjectRepoImpl(em);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Clock clock() {
|
||||
return Clock.systemDefaultZone();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public EventBus eventBus() {
|
||||
return new EventBus();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public FinalSeminarService finalSeminarService(Provider<EntityManager> em, EventBus eventBus, Clock clock) {
|
||||
AuthorRepository authorRepository = null;
|
||||
FileService fileService = null;
|
||||
FinalSeminarOppositionRepo finalSeminarOppositionRepository = null;
|
||||
FinalSeminarActiveParticipationRepository finalSeminarActiveParticipantRepository = null;
|
||||
FinalSeminarRepository finalSeminarRepository = null;
|
||||
RoughDraftApprovalService roughDraftApprovalService = null;
|
||||
return new FinalSeminarServiceImpl(em, eventBus, authorRepository, fileService, finalSeminarOppositionRepository, finalSeminarActiveParticipantRepository, finalSeminarRepository, clock, roughDraftApprovalService);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public FinalSeminarSettingsService finalSeminarSettingsService(Provider<EntityManager> em) {
|
||||
return new FinalSeminarSettingsServiceImpl(em);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public NonWorkDayPeriodService nonWorkDayPeriodService(Provider<EntityManager> em) {
|
||||
return new NonWorkDayPeriodServiceImpl(em);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public DaysService daysService(NonWorkDayPeriodService nonWorkDays) {
|
||||
return new DaysServiceImpl(nonWorkDays);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public OppositionReportService oppositionReportService(Provider<EntityManager> em) {
|
||||
return new OppositionReportServiceImpl(null, null, null, null);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public DaisyAPI daisyAPI(
|
||||
@Value("${daisy.api.url}") String baseUrl,
|
||||
@Value("${daisy.api.username}") String username,
|
||||
@Value("${daisy.api.password}") String password)
|
||||
{
|
||||
return new DaisyAPIImpl(baseUrl, username, password);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
29
view/src/main/java/se/su/dsv/scipro/api/ApiController.java
Normal file
29
view/src/main/java/se/su/dsv/scipro/api/ApiController.java
Normal file
@ -0,0 +1,29 @@
|
||||
package se.su.dsv.scipro.api;
|
||||
|
||||
import jakarta.inject.Inject;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import se.su.dsv.scipro.system.User;
|
||||
import se.su.dsv.scipro.system.UserService;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
@RestController
|
||||
public class ApiController {
|
||||
private final UserService userService;
|
||||
|
||||
@Inject
|
||||
public ApiController(UserService userService) {
|
||||
this.userService = userService;
|
||||
}
|
||||
|
||||
@GetMapping("/hello-world")
|
||||
public String helloWorld(@RequestParam(value = "username", required = false) String username) {
|
||||
String name = Optional.ofNullable(username)
|
||||
.map(userService::findByUsername)
|
||||
.map(User::getFullName)
|
||||
.orElse("World");
|
||||
return "Hello, " + name + "!";
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user