diff --git a/pom.xml b/pom.xml index 2bacbbc..9ee172f 100644 --- a/pom.xml +++ b/pom.xml @@ -1,141 +1,71 @@ - - - 4.0.0 - fr.plil.sio - spring-mvc-sample - war - 0.2 - - - - - org.springframework - spring-webmvc - ${spring.version} - - - - org.springframework - spring-web - ${spring.version} - - - - org.springframework - spring-context - ${spring.version} - - - - javax.servlet - javax.servlet-api - ${servlet.version} - provided - - - - javax.servlet.jsp - jsp-api - ${jsp.version} - provided - - - - javax.el - el-api - ${jsp.el.version} - provided - - + + 4.0.0 + + fr.plil.sio.web + mvc + 0.2 + war + + spring-mvc-sample + + + + org.springframework.boot + spring-boot-starter-parent + 1.2.3.RELEASE + + + + + UTF-8 + fr.plil.sio.web.mvc.Application + 1.8 + + + + + org.springframework.boot + spring-boot-starter-data-rest + + + org.springframework.boot + spring-boot-starter-web + + + com.h2database + h2 + runtime + + + org.springframework.boot + spring-boot-starter-tomcat + provided + + + org.springframework.boot + spring-boot-starter-test + test + + + org.apache.tomcat.embed + tomcat-embed-jasper + provided + javax.servlet jstl - ${jsp.jstl.version} - - - junit - junit - ${junit.version} - test - - - - org.springframework - spring-test - ${spring.version} - test - - - - org.slf4j - slf4j-api - ${slf4j.version} - compile - - - - ch.qos.logback - logback-classic - ${logback.version} - - - - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.3.2 - - 1.6 - 1.6 - - - - maven-war-plugin - - false - - 2.1.1 - - - spring-mvc-sample - - - - UTF-8 - 4.0.0.RELEASE - 1.7.5 - 4.10 - 1.0.13 - 3.1.0 - 2.2 - 2.2 - 1.2 - - - \ No newline at end of file + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/src/main/java/fr/plil/sio/web/mvc/Application.java b/src/main/java/fr/plil/sio/web/mvc/Application.java new file mode 100644 index 0000000..6a9a19a --- /dev/null +++ b/src/main/java/fr/plil/sio/web/mvc/Application.java @@ -0,0 +1,23 @@ +package fr.plil.sio.web.mvc; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.context.web.SpringBootServletInitializer; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +@EnableAutoConfiguration +@Configuration +@ComponentScan +public class Application extends SpringBootServletInitializer { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + + @Override + protected final SpringApplicationBuilder configure(final SpringApplicationBuilder application) { + return application.sources(Application.class); + } +} diff --git a/src/main/java/fr/plil/sio/web/mvc/ApplicationMvcConfiguration.java b/src/main/java/fr/plil/sio/web/mvc/ApplicationMvcConfiguration.java new file mode 100644 index 0000000..9dda54d --- /dev/null +++ b/src/main/java/fr/plil/sio/web/mvc/ApplicationMvcConfiguration.java @@ -0,0 +1,37 @@ +package fr.plil.sio.web.mvc; + + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Scope; +import org.springframework.context.annotation.ScopedProxyMode; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; + +@Configuration +public class ApplicationMvcConfiguration extends WebMvcConfigurerAdapter{ + + private static final Logger logger = LoggerFactory.getLogger(ApplicationMvcConfiguration.class); + + @Bean + @Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode. TARGET_CLASS) + public UserSession userSession() { + logger.debug("new user session bean"); + return new UserSession(); + } + + @Bean + public CheckUserInterceptor checkUserInterceptor() { + return new CheckUserInterceptor(); + } + + @Override + public void addInterceptors(InterceptorRegistry registry) { + CheckUserInterceptor interceptor = checkUserInterceptor(); + interceptor.setUserSession(userSession()); + registry.addInterceptor(interceptor); + } +} diff --git a/src/main/java/fr/plil/sio/web/mvc/CheckUserInterceptor.java b/src/main/java/fr/plil/sio/web/mvc/CheckUserInterceptor.java index d7fff5a..81873a1 100644 --- a/src/main/java/fr/plil/sio/web/mvc/CheckUserInterceptor.java +++ b/src/main/java/fr/plil/sio/web/mvc/CheckUserInterceptor.java @@ -6,13 +6,14 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; public class CheckUserInterceptor extends HandlerInterceptorAdapter { private static final Logger logger = LoggerFactory.getLogger(CheckUserInterceptor.class); - @Resource + @Autowired private UserSession userSession; @Override diff --git a/src/main/java/fr/plil/sio/web/mvc/LoginController.java b/src/main/java/fr/plil/sio/web/mvc/LoginController.java index eab5cf5..3d79d02 100644 --- a/src/main/java/fr/plil/sio/web/mvc/LoginController.java +++ b/src/main/java/fr/plil/sio/web/mvc/LoginController.java @@ -12,7 +12,7 @@ import org.springframework.web.servlet.ModelAndView; public class LoginController { @Resource - private UserDao userDao; + private UserRepository userRepository; @Resource private UserSession userSession; @@ -25,7 +25,7 @@ public class LoginController { @RequestMapping(method = RequestMethod.POST) public String postLoginCheck(User user, BindingResult result) { - User userFromDao = userDao.getFromUsername(user.getUsername()); + User userFromDao = userRepository.getFromUsername(user.getUsername()); if (userFromDao == null) { result.rejectValue("username","login.form.invalid"); @@ -42,8 +42,8 @@ public class LoginController { return "redirect:/"; } - public void setUserDao(UserDao userDao) { - this.userDao = userDao; + public void setUserRepository(UserRepository userRepository) { + this.userRepository = userRepository; } public void setUserSession(UserSession userSession) { diff --git a/src/main/java/fr/plil/sio/web/mvc/NewUserController.java b/src/main/java/fr/plil/sio/web/mvc/NewUserController.java index 8576505..4970258 100644 --- a/src/main/java/fr/plil/sio/web/mvc/NewUserController.java +++ b/src/main/java/fr/plil/sio/web/mvc/NewUserController.java @@ -11,9 +11,11 @@ import org.springframework.web.servlet.ModelAndView; public class NewUserController { @Resource - private UserDao userDao; + private UserRepository userRepository; + @Resource private UserSession userSession; + @Resource private UserValidator userValidator; @@ -31,7 +33,7 @@ public class NewUserController { userValidator.validate(user, result); - boolean present = (userDao.getFromUsername(user.getUsername()) != null); + boolean present = (userRepository.getFromUsername(user.getUsername()) != null); if (present) { result.rejectValue("username", "new.user.form.present"); @@ -41,13 +43,13 @@ public class NewUserController { return "newUser"; } - userDao.save(user); + userRepository.save(user); return "redirect:/"; } - public void setUserDao(UserDao userDao) { - this.userDao = userDao; + public void setUserRepository(UserRepository userRepository) { + this.userRepository = userRepository; } public void setUserSession(UserSession userSession) { diff --git a/src/main/java/fr/plil/sio/web/mvc/UserDao.java b/src/main/java/fr/plil/sio/web/mvc/UserDao.java deleted file mode 100644 index 9fb32d1..0000000 --- a/src/main/java/fr/plil/sio/web/mvc/UserDao.java +++ /dev/null @@ -1,16 +0,0 @@ -package fr.plil.sio.web.mvc; - -import java.util.Set; - -public interface UserDao { - - boolean save(User user); - - User getFromUsername(String username); - - Set getAllUsers(); - - boolean update(User user); - - boolean delete(User user); -} diff --git a/src/main/java/fr/plil/sio/web/mvc/UserDaoImpl.java b/src/main/java/fr/plil/sio/web/mvc/UserDaoImpl.java deleted file mode 100644 index 313d294..0000000 --- a/src/main/java/fr/plil/sio/web/mvc/UserDaoImpl.java +++ /dev/null @@ -1,48 +0,0 @@ -package fr.plil.sio.web.mvc; - -import java.util.HashSet; -import java.util.Set; -import org.springframework.stereotype.Repository; - -@Repository(value = "userDao") -public class UserDaoImpl implements UserDao { - - private Set users = new HashSet(); - - public UserDaoImpl() { - User user = new User(); - user.setUsername("admin"); - user.setPassword("admin"); - users.add(user); - } - - @Override - public boolean save(User user) { - return users.add(user); - } - - @Override - public User getFromUsername(String username) { - for (User user : users) { - if (user.getUsername().equals(username)) { - return user; - } - } - return null; - } - - @Override - public Set getAllUsers() { - return users; - } - - @Override - public boolean update(User user) { - throw new UnsupportedOperationException("Not supported."); - } - - @Override - public boolean delete(User user) { - throw new UnsupportedOperationException("Not supported."); - } -} diff --git a/src/main/java/fr/plil/sio/web/mvc/UserRepository.java b/src/main/java/fr/plil/sio/web/mvc/UserRepository.java new file mode 100644 index 0000000..8cd46e7 --- /dev/null +++ b/src/main/java/fr/plil/sio/web/mvc/UserRepository.java @@ -0,0 +1,16 @@ +package fr.plil.sio.web.mvc; + +import java.util.Set; + +public interface UserRepository { + + boolean save(User user); + + User getFromUsername(String username); + + Set getAllUsers(); + + boolean update(User user); + + boolean delete(User user); +} diff --git a/src/main/java/fr/plil/sio/web/mvc/UserRepositoryImpl.java b/src/main/java/fr/plil/sio/web/mvc/UserRepositoryImpl.java new file mode 100644 index 0000000..8050ab7 --- /dev/null +++ b/src/main/java/fr/plil/sio/web/mvc/UserRepositoryImpl.java @@ -0,0 +1,48 @@ +package fr.plil.sio.web.mvc; + +import java.util.HashSet; +import java.util.Set; +import org.springframework.stereotype.Repository; + +@Repository(value = "userDao") +public class UserRepositoryImpl implements UserRepository { + + private Set users = new HashSet(); + + public UserRepositoryImpl() { + User user = new User(); + user.setUsername("admin"); + user.setPassword("admin"); + users.add(user); + } + + @Override + public boolean save(User user) { + return users.add(user); + } + + @Override + public User getFromUsername(String username) { + for (User user : users) { + if (user.getUsername().equals(username)) { + return user; + } + } + return null; + } + + @Override + public Set getAllUsers() { + return users; + } + + @Override + public boolean update(User user) { + throw new UnsupportedOperationException("Not supported."); + } + + @Override + public boolean delete(User user) { + throw new UnsupportedOperationException("Not supported."); + } +} diff --git a/src/main/java/fr/plil/sio/web/mvc/ViewUsersController.java b/src/main/java/fr/plil/sio/web/mvc/ViewUsersController.java index 7edadbf..5ff3437 100644 --- a/src/main/java/fr/plil/sio/web/mvc/ViewUsersController.java +++ b/src/main/java/fr/plil/sio/web/mvc/ViewUsersController.java @@ -11,14 +11,14 @@ import org.springframework.web.bind.annotation.RequestMethod; public class ViewUsersController { @Resource - private UserDao userDao; + private UserRepository userRepository; @Resource private UserSession userSession; @ModelAttribute("users") public Set populateUsers() { - return userDao.getAllUsers(); + return userRepository.getAllUsers(); } @ModelAttribute("userSession") @@ -31,8 +31,8 @@ public class ViewUsersController { return "viewUsers"; } - public void setUserDao(UserDao userDao) { - this.userDao = userDao; + public void setUserRepository(UserRepository userRepository) { + this.userRepository = userRepository; } public void setUserSession(UserSession userSession) { diff --git a/src/main/java/fr/plil/sio/web/mvc/WebAppConfig.java b/src/main/java/fr/plil/sio/web/mvc/WebAppConfig.java deleted file mode 100644 index cf91b94..0000000 --- a/src/main/java/fr/plil/sio/web/mvc/WebAppConfig.java +++ /dev/null @@ -1,66 +0,0 @@ -package fr.plil.sio.web.mvc; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.context.MessageSource; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Scope; -import org.springframework.context.annotation.ScopedProxyMode; -import org.springframework.context.support.ResourceBundleMessageSource; -import org.springframework.web.context.WebApplicationContext; -import org.springframework.web.servlet.ViewResolver; -import org.springframework.web.servlet.config.annotation.EnableWebMvc; -import org.springframework.web.servlet.config.annotation.InterceptorRegistry; -import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; -import org.springframework.web.servlet.view.InternalResourceViewResolver; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; - -@Configuration -@ComponentScan(basePackages = {"fr.plil.sio.web.mvc"},scopedProxy = ScopedProxyMode.TARGET_CLASS) -@EnableWebMvc -public class WebAppConfig extends WebMvcConfigurerAdapter { - - private static final Logger logger = LoggerFactory.getLogger(WebAppConfig.class); - - @Bean - @Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode. TARGET_CLASS) - public UserSession userSession() { - logger.debug("new user session bean"); - return new UserSession(); - } - - @Bean - public CheckUserInterceptor checkUserInterceptor() { - return new CheckUserInterceptor(); - } - - @Override - public void addInterceptors(InterceptorRegistry registry) { - CheckUserInterceptor interceptor = checkUserInterceptor(); - interceptor.setUserSession(userSession()); - registry.addInterceptor(interceptor); - } - - @Bean - public MessageSource messageSource() { - ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); - messageSource.setBasename("messages"); - messageSource.setDefaultEncoding("UTF-8"); - return messageSource; - } - - @Bean - public ViewResolver viewResolver() { - InternalResourceViewResolver resolver = new InternalResourceViewResolver(); - resolver.setPrefix("/WEB-INF/views/"); - resolver.setSuffix(".jsp"); - return resolver; - } - - @Override - public void addResourceHandlers(ResourceHandlerRegistry registry) { - registry.addResourceHandler("/resources/").addResourceLocations("/resources/**"); - } -} diff --git a/src/main/java/fr/plil/sio/web/mvc/WebAppInitializer.java b/src/main/java/fr/plil/sio/web/mvc/WebAppInitializer.java deleted file mode 100644 index bd62e09..0000000 --- a/src/main/java/fr/plil/sio/web/mvc/WebAppInitializer.java +++ /dev/null @@ -1,35 +0,0 @@ -package fr.plil.sio.web.mvc; - -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.ServletRegistration; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.web.WebApplicationInitializer; -import org.springframework.web.context.ContextLoaderListener; -import org.springframework.web.context.WebApplicationContext; -import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; -import org.springframework.web.servlet.DispatcherServlet; - -public class WebAppInitializer implements WebApplicationInitializer { - - private static final Logger logger = LoggerFactory.getLogger(WebAppInitializer.class); - - @Override - public void onStartup(ServletContext servletContext) throws ServletException { - logger.info("starting web app initializer"); - WebApplicationContext context = getContext(); - servletContext.addListener(new ContextLoaderListener(context)); - ServletRegistration.Dynamic dispatcher = servletContext - .addServlet("dispatcher", new DispatcherServlet(context)); - dispatcher.setLoadOnStartup(1); - dispatcher.addMapping("/"); - } - - private AnnotationConfigWebApplicationContext getContext() { - logger.info("start web application context"); - AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); - context.register(WebAppConfig.class); - return context; - } -} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..4c38281 --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,4 @@ +logging.level.fr.plil.sio.web.mvc=DEBUG + +spring.view.prefix=/WEB-INF/views/ +spring.view.suffix=.jsp diff --git a/src/test/java/fr/plil/sio/web/mvc/LoginControllerTest.java b/src/test/java/fr/plil/sio/web/mvc/LoginControllerTest.java index c92f8db..65efc28 100644 --- a/src/test/java/fr/plil/sio/web/mvc/LoginControllerTest.java +++ b/src/test/java/fr/plil/sio/web/mvc/LoginControllerTest.java @@ -12,7 +12,7 @@ public class LoginControllerTest { private LoginController loginController; private BindingResult results; private User user; - private UserDao userDao; + private UserRepository userRepository; private UserSession userSession; @Before @@ -20,8 +20,8 @@ public class LoginControllerTest { loginController = new LoginController(); user = new User(); results = new BeanPropertyBindingResult(user, "user"); - userDao = new UserDaoImpl(); - loginController.setUserDao(userDao); + userRepository = new UserRepositoryImpl(); + loginController.setUserRepository(userRepository); userSession = new UserSession(); loginController.setUserSession(userSession); } diff --git a/src/test/java/fr/plil/sio/web/mvc/NewUserControllerTest.java b/src/test/java/fr/plil/sio/web/mvc/NewUserControllerTest.java index 3a9707a..570c022 100644 --- a/src/test/java/fr/plil/sio/web/mvc/NewUserControllerTest.java +++ b/src/test/java/fr/plil/sio/web/mvc/NewUserControllerTest.java @@ -12,7 +12,7 @@ public class NewUserControllerTest { private NewUserController newUserController; private BindingResult results; private User user; - private UserDao userDao; + private UserRepository userRepository; private UserSession userSession; private UserValidator userValidator; @@ -21,8 +21,8 @@ public class NewUserControllerTest { newUserController = new NewUserController(); user = new User(); results = new BeanPropertyBindingResult(user, "user"); - userDao = new UserDaoImpl(); - newUserController.setUserDao(userDao); + userRepository = new UserRepositoryImpl(); + newUserController.setUserRepository(userRepository); userSession = new UserSession(); userSession.setUsername("admin"); newUserController.setUserSession(userSession); diff --git a/src/test/java/fr/plil/sio/web/mvc/UserDaoTest.java b/src/test/java/fr/plil/sio/web/mvc/UserDaoTest.java deleted file mode 100644 index 2cdeb1c..0000000 --- a/src/test/java/fr/plil/sio/web/mvc/UserDaoTest.java +++ /dev/null @@ -1,63 +0,0 @@ -package fr.plil.sio.web.mvc; - -import static org.junit.Assert.*; -import org.junit.Before; -import org.junit.Test; - -public class UserDaoTest { - - private UserDao userDao; - - @Before - public void createInstances() { - userDao = new UserDaoImpl(); - } - - @Test - public void testAdminPresent() { - assertEquals(1, userDao.getAllUsers().size()); - assertNotNull(userDao.getFromUsername("admin")); - assertEquals("admin", userDao.getFromUsername("admin").getUsername()); - } - - @Test - public void testSaveSucceed() { - User user = new User(); - user.setUsername("abc"); - user.setPassword("abc"); - assertTrue(userDao.save(user)); - } - - @Test - public void testSaveFailed() { - User user = new User(); - user.setUsername("admin"); - user.setPassword("abc"); - assertFalse(userDao.save(user)); - } - - @Test - public void testGetFromUsernameFound() { - User user = new User(); - user.setUsername("abc"); - user.setPassword("abc"); - userDao.save(user); - assertNotNull(userDao.getFromUsername("admin")); - assertEquals("admin",userDao.getFromUsername("admin").getUsername()); - } - - @Test - public void testGetFromUsernameNotFound() { - assertNull(userDao.getFromUsername("abc")); - } - - @Test - public void testGetAllUsers() { - assertEquals(1,userDao.getAllUsers().size()); - User user = new User(); - user.setUsername("abc"); - user.setPassword("abc"); - assertTrue(userDao.save(user)); - assertEquals(2,userDao.getAllUsers().size()); - } -} \ No newline at end of file diff --git a/src/test/java/fr/plil/sio/web/mvc/UserRepositoryTest.java b/src/test/java/fr/plil/sio/web/mvc/UserRepositoryTest.java new file mode 100644 index 0000000..5b9cb05 --- /dev/null +++ b/src/test/java/fr/plil/sio/web/mvc/UserRepositoryTest.java @@ -0,0 +1,63 @@ +package fr.plil.sio.web.mvc; + +import static org.junit.Assert.*; +import org.junit.Before; +import org.junit.Test; + +public class UserRepositoryTest { + + private UserRepository userRepository; + + @Before + public void createInstances() { + userRepository = new UserRepositoryImpl(); + } + + @Test + public void testAdminPresent() { + assertEquals(1, userRepository.getAllUsers().size()); + assertNotNull(userRepository.getFromUsername("admin")); + assertEquals("admin", userRepository.getFromUsername("admin").getUsername()); + } + + @Test + public void testSaveSucceed() { + User user = new User(); + user.setUsername("abc"); + user.setPassword("abc"); + assertTrue(userRepository.save(user)); + } + + @Test + public void testSaveFailed() { + User user = new User(); + user.setUsername("admin"); + user.setPassword("abc"); + assertFalse(userRepository.save(user)); + } + + @Test + public void testGetFromUsernameFound() { + User user = new User(); + user.setUsername("abc"); + user.setPassword("abc"); + userRepository.save(user); + assertNotNull(userRepository.getFromUsername("admin")); + assertEquals("admin", userRepository.getFromUsername("admin").getUsername()); + } + + @Test + public void testGetFromUsernameNotFound() { + assertNull(userRepository.getFromUsername("abc")); + } + + @Test + public void testGetAllUsers() { + assertEquals(1, userRepository.getAllUsers().size()); + User user = new User(); + user.setUsername("abc"); + user.setPassword("abc"); + assertTrue(userRepository.save(user)); + assertEquals(2, userRepository.getAllUsers().size()); + } +} \ No newline at end of file diff --git a/src/test/java/fr/plil/sio/web/mvc/ViewUsersControllerTest.java b/src/test/java/fr/plil/sio/web/mvc/ViewUsersControllerTest.java index cd599ca..eaf41b1 100644 --- a/src/test/java/fr/plil/sio/web/mvc/ViewUsersControllerTest.java +++ b/src/test/java/fr/plil/sio/web/mvc/ViewUsersControllerTest.java @@ -7,14 +7,14 @@ import org.junit.Test; public class ViewUsersControllerTest { private ViewUsersController viewUsersController; - private UserDao userDao; + private UserRepository userRepository; private UserSession userSession; @Before public void createInstances() { viewUsersController = new ViewUsersController(); - userDao = new UserDaoImpl(); - viewUsersController.setUserDao(userDao); + userRepository = new UserRepositoryImpl(); + viewUsersController.setUserRepository(userRepository); userSession = new UserSession(); userSession.setUsername("admin"); viewUsersController.setUserSession(userSession); -- libgit2 0.21.2