From 59673e6b0a300f418f08ce655e773cf4bbe4d088 Mon Sep 17 00:00:00 2001 From: "javawebinar@yandex.ru" Date: Tue, 19 May 2015 23:14:34 +0300 Subject: [PATCH 1/6] Update demo url --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4184fef..a094f30 100644 --- a/README.md +++ b/README.md @@ -4,4 +4,4 @@ Проект к вебинару http://javawebinar.ru/topjava/ -Демо разрабатываемого приложения: http://caloriesmng.herokuapp.com/ \ No newline at end of file +Демо разрабатываемого приложения: http://topjava.herokuapp.com/ \ No newline at end of file From cf4d98880532752c5d8130429761d3ef00fc038c Mon Sep 17 00:00:00 2001 From: "javawebinar@yandex.ru" Date: Wed, 20 May 2015 01:24:29 +0300 Subject: [PATCH 2/6] Add email duplicate check Correct read.me --- README.md | 4 +--- .../topjava/web/RootController.java | 18 +++++++++++------- src/main/webapp/WEB-INF/tags/inputField.tag | 2 +- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index a094f30..05696b4 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,5 @@ # topjava02 -Старт вебинара: 27.02 в 20.00 GMT+3 - -Проект к вебинару http://javawebinar.ru/topjava/ +Прграмма курса: http://javawebinar.ru/topjava/ Демо разрабатываемого приложения: http://topjava.herokuapp.com/ \ No newline at end of file diff --git a/src/main/java/ru/javawebinar/topjava/web/RootController.java b/src/main/java/ru/javawebinar/topjava/web/RootController.java index 013f5b4..6f02010 100644 --- a/src/main/java/ru/javawebinar/topjava/web/RootController.java +++ b/src/main/java/ru/javawebinar/topjava/web/RootController.java @@ -1,6 +1,7 @@ package ru.javawebinar.topjava.web; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataIntegrityViolationException; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -81,13 +82,16 @@ public String register(ModelMap model) { @RequestMapping(value = "/register", method = RequestMethod.POST) public String saveRegister(@Valid UserTo userTo, BindingResult result, SessionStatus status, ModelMap model) { - if (result.hasErrors()) { - model.addAttribute("register", true); - return "profile"; - } else { - status.setComplete(); - userService.save(UserUtil.createFromTo(userTo)); - return "redirect:login?message=app.registered"; + if (!result.hasErrors()) { + try { + userService.save(UserUtil.createFromTo(userTo)); + status.setComplete(); + return "redirect:login?message=app.registered"; + } catch (DataIntegrityViolationException ex) { + result.rejectValue("email", "error.user", "User with this email already present in application."); + } } + model.addAttribute("register", true); + return "profile"; } } diff --git a/src/main/webapp/WEB-INF/tags/inputField.tag b/src/main/webapp/WEB-INF/tags/inputField.tag index 57010c1..d952a79 100644 --- a/src/main/webapp/WEB-INF/tags/inputField.tag +++ b/src/main/webapp/WEB-INF/tags/inputField.tag @@ -11,7 +11,7 @@
-
+
From 98715353eddf4fe988512266c17f483fd450b52c Mon Sep 17 00:00:00 2001 From: "javawebinar@yandex.ru" Date: Fri, 29 May 2015 01:16:34 +0300 Subject: [PATCH 3/6] Small correction --- hr.bat | 2 +- pom.xml | 2 +- src/main/resources/db/postgres.properties | 4 ---- .../javawebinar/topjava/web/user/AdminRestControllerTest.java | 3 ++- 4 files changed, 4 insertions(+), 7 deletions(-) diff --git a/hr.bat b/hr.bat index 89b82a0..3c81552 100644 --- a/hr.bat +++ b/hr.bat @@ -1,2 +1,2 @@ -call mvn -P heroku,postgres -DskipTests=true package +call mvn -B -s settings.xml -DskipTests=true clean install call java -Dspring.profiles.active="datajpa,heroku" -DDATABASE_URL="postgres://user:user@localhost:5432/topjava02" -jar target/dependency/webapp-runner.jar target/*.war diff --git a/pom.xml b/pom.xml index 86a4535..c3f36ed 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ 1.0-SNAPSHOT Calories Management - http://caloriesmng.herokuapp.com/ + http://topjava.herokuapp.com/ 1.8 diff --git a/src/main/resources/db/postgres.properties b/src/main/resources/db/postgres.properties index a7f045f..2b5baf8 100644 --- a/src/main/resources/db/postgres.properties +++ b/src/main/resources/db/postgres.properties @@ -1,7 +1,3 @@ -#database.url=jdbc:postgresql://ec2-54-228-184-236.eu-west-1.compute.amazonaws.com:5432/dfgpjfq69ca298?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory -#database.username=banydqiclzovdb -#database.password=h62cZV7oFaJGwaCkqtGuG93nfl - database.url=jdbc:postgresql://localhost:5432/topjava02 database.username=user database.password=user diff --git a/src/test/java/ru/javawebinar/topjava/web/user/AdminRestControllerTest.java b/src/test/java/ru/javawebinar/topjava/web/user/AdminRestControllerTest.java index 579fc6b..55941c1 100644 --- a/src/test/java/ru/javawebinar/topjava/web/user/AdminRestControllerTest.java +++ b/src/test/java/ru/javawebinar/topjava/web/user/AdminRestControllerTest.java @@ -110,7 +110,8 @@ public void testCreate() throws Exception { @Test public void testGetAll() throws Exception { - TestUtil.print(mockMvc.perform(get(REST_URL).contentType(MediaType.APPLICATION_JSON) + TestUtil.print(mockMvc.perform(get(REST_URL) + .contentType(MediaType.APPLICATION_JSON) .with(userHttpBasic(ADMIN))) .andExpect(status().isOk()) .andExpect(content().contentType(MediaType.APPLICATION_JSON)) From 305e38e0a76ef5410fb88a8a193543495718f133 Mon Sep 17 00:00:00 2001 From: "javawebinar@yandex.ru" Date: Sat, 6 Jun 2015 20:27:57 +0300 Subject: [PATCH 4/6] Add Serializable --- .../java/ru/javawebinar/topjava/model/BaseEntity.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/ru/javawebinar/topjava/model/BaseEntity.java b/src/main/java/ru/javawebinar/topjava/model/BaseEntity.java index 4022226..5384cbb 100644 --- a/src/main/java/ru/javawebinar/topjava/model/BaseEntity.java +++ b/src/main/java/ru/javawebinar/topjava/model/BaseEntity.java @@ -2,7 +2,14 @@ import ru.javawebinar.topjava.LoggerWrapper; -import javax.persistence.*; +import javax.persistence.Access; +import javax.persistence.AccessType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.MappedSuperclass; +import javax.persistence.SequenceGenerator; +import java.io.Serializable; /** * User: gkislin @@ -11,7 +18,7 @@ @MappedSuperclass @Access(AccessType.FIELD) //@JsonAutoDetect(fieldVisibility = ANY, getterVisibility = NONE, isGetterVisibility = NONE, setterVisibility = NONE) -public class BaseEntity { +public class BaseEntity implements Serializable{ protected static final LoggerWrapper LOG = LoggerWrapper.get(BaseEntity.class); public static final int START_SEQ = 100000; From a37d765fc776cee4fbb77aa8c2c0bc007c3ad30e Mon Sep 17 00:00:00 2001 From: "javawebinar@yandex.ru" Date: Tue, 16 Jun 2015 22:55:33 +0300 Subject: [PATCH 5/6] Add validation query --- src/main/resources/spring/spring-db.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/spring/spring-db.xml b/src/main/resources/spring/spring-db.xml index c029db2..c322f15 100644 --- a/src/main/resources/spring/spring-db.xml +++ b/src/main/resources/spring/spring-db.xml @@ -58,6 +58,7 @@ + From 5f124faadac0ea89b5983c6f5714d45e6c8e1169 Mon Sep 17 00:00:00 2001 From: "javawebinar@yandex.ru" Date: Wed, 17 Jun 2015 00:10:52 +0300 Subject: [PATCH 6/6] Change pool settings --- src/main/resources/spring/spring-db.xml | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/main/resources/spring/spring-db.xml b/src/main/resources/spring/spring-db.xml index c322f15..b5cf023 100644 --- a/src/main/resources/spring/spring-db.xml +++ b/src/main/resources/spring/spring-db.xml @@ -53,13 +53,21 @@ - - - - - - + class="org.apache.tomcat.jdbc.pool.DataSource" + p:url="#{ 'jdbc:postgresql://' + @dbUrl.getHost() + @dbUrl.getPath() }" + p:username="#{ @dbUrl.getUserInfo().split(':')[0] }" + p:password="#{ @dbUrl.getUserInfo().split(':')[1] }" + p:driverClassName="org.postgresql.Driver" + p:validationQuery="SELECT 1 FROM users" + p:maxActive="5" + p:minIdle="1" + p:maxWait="20000" + p:initialSize="2" + p:maxIdle="5" + p:testOnBorrow="true" + p:removeAbandoned="true" + p:testOnConnect="true" + p:testWhileIdle="true"/>