From 85257957554405fba7a7e4817ee801a09cbd5fd3 Mon Sep 17 00:00:00 2001 From: Slavisa Avramovic Date: Thu, 9 Jun 2016 15:00:56 +0200 Subject: [PATCH 01/19] bengi - guava map --- .../org/baeldung/guava/GuavaMapFromSet.java | 136 +++++++++--------- .../baeldung/guava/GuavaMapFromSetTests.java | 90 ++++++------ 2 files changed, 112 insertions(+), 114 deletions(-) diff --git a/guava/src/test/java/org/baeldung/guava/GuavaMapFromSet.java b/guava/src/test/java/org/baeldung/guava/GuavaMapFromSet.java index 602205ff9f..1d19423f7e 100644 --- a/guava/src/test/java/org/baeldung/guava/GuavaMapFromSet.java +++ b/guava/src/test/java/org/baeldung/guava/GuavaMapFromSet.java @@ -11,91 +11,91 @@ import com.google.common.base.Function; public class GuavaMapFromSet extends AbstractMap { - private class SingleEntry implements Entry { - private K key; + private class SingleEntry implements Entry { + private K key; - public SingleEntry( K key) { - this.key = key; - } + public SingleEntry(K key) { + this.key = key; + } - @Override - public K getKey() { - return this.key; - } + @Override + public K getKey() { + return this.key; + } - @Override - public V getValue() { - V value = GuavaMapFromSet.this.cache.get(this.key); - if (value == null) { - value = GuavaMapFromSet.this.function.apply(this.key); - GuavaMapFromSet.this.cache.put(this.key, value); - } - return value; - } + @Override + public V getValue() { + V value = GuavaMapFromSet.this.cache.get(this.key); + if (value == null) { + value = GuavaMapFromSet.this.function.apply(this.key); + GuavaMapFromSet.this.cache.put(this.key, value); + } + return value; + } - @Override - public V setValue( V value) { - throw new UnsupportedOperationException(); - } - } + @Override + public V setValue(V value) { + throw new UnsupportedOperationException(); + } + } - private class MyEntrySet extends AbstractSet> { + private class MyEntrySet extends AbstractSet> { - public class EntryIterator implements Iterator> { - private Iterator inner; + public class EntryIterator implements Iterator> { + private Iterator inner; - public EntryIterator() { - this.inner = MyEntrySet.this.keys.iterator(); - } + public EntryIterator() { + this.inner = MyEntrySet.this.keys.iterator(); + } - @Override - public boolean hasNext() { - return this.inner.hasNext(); - } + @Override + public boolean hasNext() { + return this.inner.hasNext(); + } - @Override - public Map.Entry next() { - K key = this.inner.next(); - return new SingleEntry(key); - } + @Override + public Map.Entry next() { + K key = this.inner.next(); + return new SingleEntry(key); + } - @Override - public void remove() { - throw new UnsupportedOperationException(); - } - } + @Override + public void remove() { + throw new UnsupportedOperationException(); + } + } - private Set keys; + private Set keys; - public MyEntrySet( Set keys) { - this.keys = keys; - } + public MyEntrySet(Set keys) { + this.keys = keys; + } - @Override - public Iterator> iterator() { - return new EntryIterator(); - } + @Override + public Iterator> iterator() { + return new EntryIterator(); + } - @Override - public int size() { - return this.keys.size(); - } + @Override + public int size() { + return this.keys.size(); + } - } + } - private WeakHashMap cache; - private Set> entries; - private Function function; + private WeakHashMap cache; + private Set> entries; + private Function function; - public GuavaMapFromSet( Set keys, Function function) { - this.function = function; - this.cache = new WeakHashMap(); - this.entries = new MyEntrySet(keys); - } + public GuavaMapFromSet(Set keys, Function function) { + this.function = function; + this.cache = new WeakHashMap(); + this.entries = new MyEntrySet(keys); + } - @Override - public Set> entrySet() { - return this.entries; - } + @Override + public Set> entrySet() { + return this.entries; + } } diff --git a/guava/src/test/java/org/baeldung/guava/GuavaMapFromSetTests.java b/guava/src/test/java/org/baeldung/guava/GuavaMapFromSetTests.java index 9abb5d14a9..7dc4550c09 100644 --- a/guava/src/test/java/org/baeldung/guava/GuavaMapFromSetTests.java +++ b/guava/src/test/java/org/baeldung/guava/GuavaMapFromSetTests.java @@ -13,54 +13,52 @@ import com.google.common.base.Function; public class GuavaMapFromSetTests { - @Test - public void givenStringSet_whenMapsToElementLength_thenCorrect() { - Function function = new Function() { + @Test + public void givenStringSet_whenMapsToElementLength_thenCorrect() { + Function function = new Function() { + @Override + public String apply(Integer from) { + return Integer.toBinaryString(from); + } + }; + Set set = new TreeSet<>(Arrays.asList(32, 64, 128)); + Map map = new GuavaMapFromSet(set, function); + assertTrue(map.get(32).equals("100000") + && map.get(64).equals("1000000") + && map.get(128).equals("10000000")); + } - @Override - public String apply(Integer from) { - return Integer.toBinaryString(from.intValue()); - } - }; - Set set = (Set) new TreeSet(Arrays.asList( - 32, 64, 128)); - Map map = new GuavaMapFromSet(set, - function); - assertTrue(map.get(32).equals("100000") - && map.get(64).equals("1000000") - && map.get(128).equals("10000000")); - } + @Test + public void givenIntSet_whenMapsToElementBinaryValue_thenCorrect() { + Function function = new Function() { - @Test - public void givenIntSet_whenMapsToElementBinaryValue_thenCorrect() { - Function function = new Function() { + @Override + public Integer apply(String from) { + return from.length(); + } + }; + Set set = new TreeSet<>(Arrays.asList( + "four", "three", "twelve")); + Map map = new GuavaMapFromSet(set, + function); + assertTrue(map.get("four") == 4 && map.get("three") == 5 + && map.get("twelve") == 6); + } - @Override - public Integer apply(String from) { - return from.length(); - } - }; - Set set = (Set) new TreeSet(Arrays.asList( - "four", "three", "twelve")); - Map map = new GuavaMapFromSet(set, - function); - assertTrue(map.get("four") == 4 && map.get("three") == 5 - && map.get("twelve") == 6); - } - @Test - public void givenSet_whenNewSetElementAddedAndMappedLive_thenCorrect() { - Function function = new Function() { + @Test + public void givenSet_whenNewSetElementAddedAndMappedLive_thenCorrect() { + Function function = new Function() { - @Override - public Integer apply(String from) { - return from.length(); - } - }; - Set set = (Set) new TreeSet(Arrays.asList( - "four", "three", "twelve")); - Map map = new GuavaMapFromSet(set, - function); - set.add("one"); - assertTrue(map.get("one") == 3 && map.size()==4); - } + @Override + public Integer apply(String from) { + return from.length(); + } + }; + Set set = new TreeSet<>(Arrays.asList( + "four", "three", "twelve")); + Map map = new GuavaMapFromSet(set, + function); + set.add("one"); + assertTrue(map.get("one") == 3 && map.size() == 4); + } } From 9b30521a3ff47c28641ae58d4ab3457562438c63 Mon Sep 17 00:00:00 2001 From: MafaldaLandeiro <1110590@isep.ipp.pt> Date: Sun, 26 Jun 2016 00:16:13 +0100 Subject: [PATCH 02/19] Spring JSONP with Jackson --- .../web/controller/CompanyController.java | 104 +++++++++++------- .../advice/JsonpControllerAdvice.java | 13 +++ .../src/main/webapp/WEB-INF/company.html | 27 +++++ .../web/controller/CompanyController.java | 16 +++ .../advice/JsonpControllerAdvice.java | 13 +++ .../java/org/baeldung/web/dto/Company.java | 38 +++++++ .../src/main/webapp/WEB-INF/company.html | 22 ++++ 7 files changed, 193 insertions(+), 40 deletions(-) create mode 100644 spring-mvc-java/src/main/java/com/baeldung/web/controller/advice/JsonpControllerAdvice.java create mode 100644 spring-mvc-java/src/main/webapp/WEB-INF/company.html create mode 100644 spring-rest/src/main/java/org/baeldung/web/controller/CompanyController.java create mode 100644 spring-rest/src/main/java/org/baeldung/web/controller/advice/JsonpControllerAdvice.java create mode 100644 spring-rest/src/main/java/org/baeldung/web/dto/Company.java create mode 100644 spring-rest/src/main/webapp/WEB-INF/company.html diff --git a/spring-mvc-java/src/main/java/com/baeldung/web/controller/CompanyController.java b/spring-mvc-java/src/main/java/com/baeldung/web/controller/CompanyController.java index 8228eafd5c..8dcfe68a84 100644 --- a/spring-mvc-java/src/main/java/com/baeldung/web/controller/CompanyController.java +++ b/spring-mvc-java/src/main/java/com/baeldung/web/controller/CompanyController.java @@ -1,56 +1,80 @@ package com.baeldung.web.controller; -import com.baeldung.model.Company; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.servlet.ModelAndView; - import java.util.HashMap; import java.util.Map; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.MatrixVariable; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.ModelAndView; + +import com.baeldung.model.Company; + @Controller public class CompanyController { - Map companyMap = new HashMap<>(); + Map companyMap = new HashMap<>(); - @RequestMapping(value = "/company", method = RequestMethod.GET) - public ModelAndView showForm() { - return new ModelAndView("companyHome", "company", new Company()); - } + @RequestMapping(value = "/company", method = RequestMethod.GET) + public ModelAndView showForm() { + return new ModelAndView("companyHome", "company", new Company()); + } - @RequestMapping(value = "/company/{Id}", produces = { "application/json", "application/xml" }, method = RequestMethod.GET) - public @ResponseBody Company getCompanyById(@PathVariable final long Id) { - return companyMap.get(Id); - } + @RequestMapping(value = "/company/{Id}", produces = { "application/json", + "application/xml" }, method = RequestMethod.GET) + public @ResponseBody Company getCompanyById(@PathVariable final long Id) { + return companyMap.get(Id); + } - @RequestMapping(value = "/addCompany", method = RequestMethod.POST) - public String submit(@ModelAttribute("company") final Company company, final BindingResult result, final ModelMap model) { - if (result.hasErrors()) { - return "error"; - } - model.addAttribute("name", company.getName()); - model.addAttribute("id", company.getId()); + @RequestMapping(value = "/addCompany", method = RequestMethod.POST) + public String submit(@ModelAttribute("company") final Company company, + final BindingResult result, final ModelMap model) { + if (result.hasErrors()) { + return "error"; + } + model.addAttribute("name", company.getName()); + model.addAttribute("id", company.getId()); - companyMap.put(company.getId(), company); + companyMap.put(company.getId(), company); - return "companyView"; - } + return "companyView"; + } - @RequestMapping(value = "/companyEmployee/{company}/employeeData/{employee}", method = RequestMethod.GET) - @ResponseBody - public ResponseEntity> getEmployeeDataFromCompany(@MatrixVariable(pathVar = "employee") final Map matrixVars) { - return new ResponseEntity<>(matrixVars, HttpStatus.OK); - } + @RequestMapping(value = "/companyEmployee/{company}/employeeData/{employee}", method = RequestMethod.GET) + @ResponseBody + public ResponseEntity> getEmployeeDataFromCompany( + @MatrixVariable(pathVar = "employee") final Map matrixVars) { + return new ResponseEntity<>(matrixVars, HttpStatus.OK); + } - @RequestMapping(value = "/companyData/{company}/employeeData/{employee}", method = RequestMethod.GET) - @ResponseBody - public ResponseEntity> getCompanyName(@MatrixVariable(value = "name", pathVar = "company") final String name) { - final Map result = new HashMap(); - result.put("name", name); - return new ResponseEntity<>(result, HttpStatus.OK); - } + @RequestMapping(value = "/companyData/{company}/employeeData/{employee}", method = RequestMethod.GET) + @ResponseBody + public ResponseEntity> getCompanyName( + @MatrixVariable(value = "name", pathVar = "company") final String name) { + final Map result = new HashMap(); + result.put("name", name); + return new ResponseEntity<>(result, HttpStatus.OK); + } + + @RequestMapping(value = "/companyResponseBody", produces = MediaType.APPLICATION_JSON_VALUE) + @ResponseBody + public Company getCompanyResponseBody() { + final Company company = new Company(2, "ABC"); + return company; + } + + @RequestMapping(value = "/companyResponseEntity", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity getCompanyResponseEntity() { + final Company company = new Company(3, "123"); + return new ResponseEntity(company, HttpStatus.OK); + } } diff --git a/spring-mvc-java/src/main/java/com/baeldung/web/controller/advice/JsonpControllerAdvice.java b/spring-mvc-java/src/main/java/com/baeldung/web/controller/advice/JsonpControllerAdvice.java new file mode 100644 index 0000000000..8557b15492 --- /dev/null +++ b/spring-mvc-java/src/main/java/com/baeldung/web/controller/advice/JsonpControllerAdvice.java @@ -0,0 +1,13 @@ +package com.baeldung.web.controller.advice; + +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.servlet.mvc.method.annotation.AbstractJsonpResponseBodyAdvice; + +@ControllerAdvice +public class JsonpControllerAdvice extends AbstractJsonpResponseBodyAdvice { + + public JsonpControllerAdvice() { + super("callback"); + } + +} diff --git a/spring-mvc-java/src/main/webapp/WEB-INF/company.html b/spring-mvc-java/src/main/webapp/WEB-INF/company.html new file mode 100644 index 0000000000..97c94fc400 --- /dev/null +++ b/spring-mvc-java/src/main/webapp/WEB-INF/company.html @@ -0,0 +1,27 @@ + + + + +Company Data + + + + + + + + + + + + diff --git a/spring-rest/src/main/java/org/baeldung/web/controller/CompanyController.java b/spring-rest/src/main/java/org/baeldung/web/controller/CompanyController.java new file mode 100644 index 0000000000..d640ac671d --- /dev/null +++ b/spring-rest/src/main/java/org/baeldung/web/controller/CompanyController.java @@ -0,0 +1,16 @@ +package org.baeldung.web.controller; + +import org.baeldung.web.dto.Company; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class CompanyController { + + @RequestMapping(value = "/companyRest", produces = MediaType.APPLICATION_JSON_VALUE) + public Company getCompanyRest() { + final Company company = new Company(1, "Xpto"); + return company; + } +} diff --git a/spring-rest/src/main/java/org/baeldung/web/controller/advice/JsonpControllerAdvice.java b/spring-rest/src/main/java/org/baeldung/web/controller/advice/JsonpControllerAdvice.java new file mode 100644 index 0000000000..7d62cc0c66 --- /dev/null +++ b/spring-rest/src/main/java/org/baeldung/web/controller/advice/JsonpControllerAdvice.java @@ -0,0 +1,13 @@ +package org.baeldung.web.controller.advice; + +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.servlet.mvc.method.annotation.AbstractJsonpResponseBodyAdvice; + +@ControllerAdvice +public class JsonpControllerAdvice extends AbstractJsonpResponseBodyAdvice { + + public JsonpControllerAdvice() { + super("callback"); + } + +} diff --git a/spring-rest/src/main/java/org/baeldung/web/dto/Company.java b/spring-rest/src/main/java/org/baeldung/web/dto/Company.java new file mode 100644 index 0000000000..c7d0718140 --- /dev/null +++ b/spring-rest/src/main/java/org/baeldung/web/dto/Company.java @@ -0,0 +1,38 @@ +package org.baeldung.web.dto; + +public class Company { + + private long id; + private String name; + + public Company() { + super(); + } + + public Company(final long id, final String name) { + this.id = id; + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(final String name) { + this.name = name; + } + + public long getId() { + return id; + } + + public void setId(final long id) { + this.id = id; + } + + @Override + public String toString() { + return "Company [id=" + id + ", name=" + name + "]"; + } + +} diff --git a/spring-rest/src/main/webapp/WEB-INF/company.html b/spring-rest/src/main/webapp/WEB-INF/company.html new file mode 100644 index 0000000000..bf213c62b6 --- /dev/null +++ b/spring-rest/src/main/webapp/WEB-INF/company.html @@ -0,0 +1,22 @@ + + + + +Company Data + + + + + + + + + From 493bae4ee29143a102323c664b02c83fd9bd8c1d Mon Sep 17 00:00:00 2001 From: k0l0ssus Date: Mon, 11 Jul 2016 05:10:51 +0200 Subject: [PATCH 03/19] BAEL-151 - implict EL object example --- jsf/src/main/webapp/el_intro.xhtml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/jsf/src/main/webapp/el_intro.xhtml b/jsf/src/main/webapp/el_intro.xhtml index 3b58d6288d..acf84752af 100644 --- a/jsf/src/main/webapp/el_intro.xhtml +++ b/jsf/src/main/webapp/el_intro.xhtml @@ -31,6 +31,19 @@ + +
+ + + + + + + + + + +
KeyValue
#{header.key}#{header.value}
From 90cb002c40ebb06ddab2ea32411e3262c55b6a30 Mon Sep 17 00:00:00 2001 From: k0l0ssus Date: Mon, 11 Jul 2016 05:14:49 +0200 Subject: [PATCH 04/19] BAEL-151 - adding JSTL support --- jsf/src/main/webapp/el_intro.xhtml | 1 + 1 file changed, 1 insertion(+) diff --git a/jsf/src/main/webapp/el_intro.xhtml b/jsf/src/main/webapp/el_intro.xhtml index acf84752af..4ca5e44703 100644 --- a/jsf/src/main/webapp/el_intro.xhtml +++ b/jsf/src/main/webapp/el_intro.xhtml @@ -2,6 +2,7 @@ Baeldung | The EL Intro From a38487287024e1db0aac135adf9583f62e7dd311 Mon Sep 17 00:00:00 2001 From: MafaldaLandeiro <1110590@isep.ipp.pt> Date: Wed, 27 Jul 2016 20:55:04 +0100 Subject: [PATCH 05/19] Spring JSON-P with Jackson --- .../src/main/webapp/WEB-INF/company.html | 93 ++++++++++++++----- .../src/main/webapp/WEB-INF/company.html | 62 +++++++++---- 2 files changed, 110 insertions(+), 45 deletions(-) diff --git a/spring-mvc-java/src/main/webapp/WEB-INF/company.html b/spring-mvc-java/src/main/webapp/WEB-INF/company.html index 97c94fc400..e1b3c6e441 100644 --- a/spring-mvc-java/src/main/webapp/WEB-INF/company.html +++ b/spring-mvc-java/src/main/webapp/WEB-INF/company.html @@ -1,27 +1,70 @@ - - -Company Data - - - - - - - - - - - - + + + Company Data + + + + + + + +
+ + + +
+ + + +
+ + + \ No newline at end of file diff --git a/spring-rest/src/main/webapp/WEB-INF/company.html b/spring-rest/src/main/webapp/WEB-INF/company.html index bf213c62b6..d2072bfd3c 100644 --- a/spring-rest/src/main/webapp/WEB-INF/company.html +++ b/spring-rest/src/main/webapp/WEB-INF/company.html @@ -1,22 +1,44 @@ - - -Company Data - - - - - - - - - + + + Company Data + + + + + + + +
+ + + \ No newline at end of file From 9143ca63b878888239e5db56627f58b3a08a01af Mon Sep 17 00:00:00 2001 From: egimaben Date: Sun, 31 Jul 2016 17:29:03 +0300 Subject: [PATCH 06/19] fixed timezone issues in dozertests --- .../test/java/com/baeldung/dozer/DozerTest.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/dozer-tutorial/src/test/java/com/baeldung/dozer/DozerTest.java b/dozer-tutorial/src/test/java/com/baeldung/dozer/DozerTest.java index ac4a121c64..c02bb2df9d 100644 --- a/dozer-tutorial/src/test/java/com/baeldung/dozer/DozerTest.java +++ b/dozer-tutorial/src/test/java/com/baeldung/dozer/DozerTest.java @@ -1,9 +1,13 @@ package com.baeldung.dozer; -import static org.junit.Assert.assertEquals; +import static org.junit.Assert.*; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; +import java.util.Date; import java.util.List; import org.dozer.DozerBeanMapper; @@ -13,6 +17,7 @@ import org.junit.Test; public class DozerTest { DozerBeanMapper mapper = new DozerBeanMapper(); + private final long GMT_DIFFERENCE=46800000; @Before public void before() throws Exception { @@ -182,7 +187,8 @@ public class DozerTest { mapper.setMappingFiles(Arrays .asList(new String[] { "dozer_custom_convertor.xml" })); Personne3 person0 = mapper.map(person, Personne3.class); - assertEquals(timestamp, person0.getDtob()); + long timestampToTest=person0.getDtob(); + assertTrue(timestampToTest==timestamp||timestampToTest>=timestamp-GMT_DIFFERENCE||timestampToTest<=timestamp+GMT_DIFFERENCE); } @Test @@ -193,7 +199,7 @@ public class DozerTest { mapper.setMappingFiles(Arrays .asList(new String[] { "dozer_custom_convertor.xml" })); Person3 person0 = mapper.map(person, Person3.class); - assertEquals(dateTime, person0.getDtob()); + String timestampTest=person0.getDtob(); + assertTrue(timestampTest.charAt(10)=='T'&×tampTest.charAt(19)=='Z'); } - } From f9459a583ceaeee4b2cd426e854c41dc480afa2e Mon Sep 17 00:00:00 2001 From: egimaben Date: Sun, 31 Jul 2016 17:38:31 +0300 Subject: [PATCH 07/19] fixed failing tests --- .../src/test/java/com/baeldung/dozer/DozerTest.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/dozer-tutorial/src/test/java/com/baeldung/dozer/DozerTest.java b/dozer-tutorial/src/test/java/com/baeldung/dozer/DozerTest.java index 42ec7ae4bd..ea356d307a 100644 --- a/dozer-tutorial/src/test/java/com/baeldung/dozer/DozerTest.java +++ b/dozer-tutorial/src/test/java/com/baeldung/dozer/DozerTest.java @@ -16,14 +16,8 @@ import org.junit.Before; import org.junit.Test; public class DozerTest { -<<<<<<< HEAD DozerBeanMapper mapper = new DozerBeanMapper(); private final long GMT_DIFFERENCE=46800000; -======= - - private DozerBeanMapper mapper = new DozerBeanMapper(); ->>>>>>> 6f2ccdf18729969951fc37e635d24c30dd9b43d5 - @Before public void before() throws Exception { mapper = new DozerBeanMapper(); From 135adf81b1b21a77f68e6cade80ab6a29ee6f38e Mon Sep 17 00:00:00 2001 From: lor6 Date: Sun, 31 Jul 2016 19:15:08 +0300 Subject: [PATCH 08/19] replace mysql with derby db (#546) * non transient data access exception examples * change to derby db * change to in memory derby db --- spring-exceptions/pom.xml | 21 +++++++++++++++++++ .../cause/Cause1NonTransientConfig.java | 2 +- .../cause/Cause4NonTransientConfig.java | 3 +-- .../resources/persistence-derby.properties | 10 +++++++++ 4 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 spring-exceptions/src/main/resources/persistence-derby.properties diff --git a/spring-exceptions/pom.xml b/spring-exceptions/pom.xml index 9e3cb81ef2..9ed3285018 100644 --- a/spring-exceptions/pom.xml +++ b/spring-exceptions/pom.xml @@ -135,6 +135,27 @@ el-api 2.2 + + + org.apache.derby + derby + 10.12.1.1 + + + org.apache.derby + derbyclient + 10.12.1.1 + + + org.apache.derby + derbynet + 10.12.1.1 + + + org.apache.derby + derbytools + 10.12.1.1 + diff --git a/spring-exceptions/src/main/java/org/baeldung/ex/nontransientexception/cause/Cause1NonTransientConfig.java b/spring-exceptions/src/main/java/org/baeldung/ex/nontransientexception/cause/Cause1NonTransientConfig.java index 266a04b679..3337e4796d 100644 --- a/spring-exceptions/src/main/java/org/baeldung/ex/nontransientexception/cause/Cause1NonTransientConfig.java +++ b/spring-exceptions/src/main/java/org/baeldung/ex/nontransientexception/cause/Cause1NonTransientConfig.java @@ -20,7 +20,7 @@ import com.google.common.base.Preconditions; @Configuration @EnableTransactionManagement -@PropertySource({ "classpath:persistence-mysql.properties" }) +@PropertySource({ "classpath:persistence-derby.properties" }) @ComponentScan({ "org.baeldung.persistence" }) public class Cause1NonTransientConfig { diff --git a/spring-exceptions/src/main/java/org/baeldung/ex/nontransientexception/cause/Cause4NonTransientConfig.java b/spring-exceptions/src/main/java/org/baeldung/ex/nontransientexception/cause/Cause4NonTransientConfig.java index 19e2ceebca..3543526f37 100644 --- a/spring-exceptions/src/main/java/org/baeldung/ex/nontransientexception/cause/Cause4NonTransientConfig.java +++ b/spring-exceptions/src/main/java/org/baeldung/ex/nontransientexception/cause/Cause4NonTransientConfig.java @@ -20,7 +20,7 @@ import com.google.common.base.Preconditions; @Configuration @EnableTransactionManagement -@PropertySource({ "classpath:persistence-mysql.properties" }) +@PropertySource({ "classpath:persistence-derby.properties" }) @ComponentScan({ "org.baeldung.persistence" }) public class Cause4NonTransientConfig { @@ -72,5 +72,4 @@ public class Cause4NonTransientConfig { // hibernateProperties.setProperty("hibernate.globally_quoted_identifiers", "true"); return hibernateProperties; } - } diff --git a/spring-exceptions/src/main/resources/persistence-derby.properties b/spring-exceptions/src/main/resources/persistence-derby.properties new file mode 100644 index 0000000000..49fac9877e --- /dev/null +++ b/spring-exceptions/src/main/resources/persistence-derby.properties @@ -0,0 +1,10 @@ +# jdbc.X +jdbc.driverClassName=org.apache.derby.jdbc.EmbeddedDriver +jdbc.url=jdbc:derby:memory:spring_exceptions;create=true +jdbc.user=tutorialuser +jdbc.pass=tutorialpass + +# hibernate.X +hibernate.dialect=org.hibernate.dialect.DerbyDialect +hibernate.show_sql=false +hibernate.hbm2ddl.auto=create From 944525a5245243116ba7651b2251626546d2cac8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Gonz=C3=A1lez?= Date: Sun, 31 Jul 2016 22:05:45 +0200 Subject: [PATCH 09/19] Code for Advanced JMockit article (#557) * Add new module for mocks comparison. * Add sources for testing. * Changes on testCase. * Enter some tests for mockito. * More tests for Mockito. * Even more tests. * Add the rest of the mocking libraries. * Javadoc on test. * Test bare bones for EasyMock. * Fist kind of test and setup. * Add tests using EasyMock with a change on LoginService. * Create LoginControllerTest.java * Test setup * [JMockit] No method called test. * [JMockit] Two methods called test. * [JMockit] One method called test. * [JMockit] Exception mock test * [JMockit] Mocked object to pass around test. * [JMockit] Custom matcher test. * [JMockit] Partial mocking test. * [JMockit] Fix with IDE. * Not stubs. Mocks. MOCKS!!! * Remove unnecesary import. * Use correct encoding. Was having problems with buildings. * Remove failing module. * Create new module mocks and move mock-comparisons there. * Add jmockit module. * Add model class. * Add collaborator class. * Add performer class. * Add performer test. * Fix * Add interface for tests. * Test for any. * Test for with. * Test for null. * Test for times. * Test for arg that. * Test for result and returns. * Test for delegate. * Add verifications to any tests. * Add verifications to with test. * Add verification examples to methods using null. * Add verifications to methods using times. * Formatting. * Compress tests and fix one test. * Adding new article to readme. * [BAEL-178] Add collaborator for advanced article. * [BAEL-178] Add link to readme. * [BAEL-178] Add test for mockUp. * [BAEL-178] Add test for invoke method. * [BAEL-178] Add constructors and tests for mockup for constructors. * [BAEL-178] Add private fields and more test for deencapsulation. * [BAEL-178] Add inner class and test for instantiating inner classes. * [BAEL-178] Multimocks. * [BAEL-178] Add test for expectation reusing. --- mocks/jmockit/README.md | 1 + .../mocks/jmockit/AdvancedCollaborator.java | 20 ++++ .../baeldung/mocks/jmockit/ReusingTest.java | 57 +++++++++ .../jmockit/AdvancedCollaboratorTest.java | 110 ++++++++++++++++++ 4 files changed, 188 insertions(+) create mode 100644 mocks/jmockit/src/main/java/org/baeldung/mocks/jmockit/AdvancedCollaborator.java create mode 100644 mocks/jmockit/src/main/java/org/baeldung/mocks/jmockit/ReusingTest.java create mode 100644 mocks/jmockit/src/test/java/org/baeldung/mocks/jmockit/AdvancedCollaboratorTest.java diff --git a/mocks/jmockit/README.md b/mocks/jmockit/README.md index d04a07fdc5..db78b2a3ac 100644 --- a/mocks/jmockit/README.md +++ b/mocks/jmockit/README.md @@ -6,3 +6,4 @@ ### Relevant Articles: - [JMockit 101](http://www.baeldung.com/jmockit-101) - [A Guide to JMockit Expectations](http://www.baeldung.com/jmockit-expectations) +- [JMockit Advanced Topics](http://www.baeldung.com/jmockit-advanced-topics) diff --git a/mocks/jmockit/src/main/java/org/baeldung/mocks/jmockit/AdvancedCollaborator.java b/mocks/jmockit/src/main/java/org/baeldung/mocks/jmockit/AdvancedCollaborator.java new file mode 100644 index 0000000000..4d25f466a6 --- /dev/null +++ b/mocks/jmockit/src/main/java/org/baeldung/mocks/jmockit/AdvancedCollaborator.java @@ -0,0 +1,20 @@ +package org.baeldung.mocks.jmockit; + +public class AdvancedCollaborator { + int i; + private int privateField = 5; + public AdvancedCollaborator(){} + public AdvancedCollaborator(String string) throws Exception{ + i = string.length(); + } + public String methodThatCallsPrivateMethod(int i){ + return privateMethod() + i; + } + public int methodThatReturnsThePrivateField(){ + return privateField; + } + private String privateMethod(){ + return "default:"; + } + class InnerAdvancedCollaborator{} +} diff --git a/mocks/jmockit/src/main/java/org/baeldung/mocks/jmockit/ReusingTest.java b/mocks/jmockit/src/main/java/org/baeldung/mocks/jmockit/ReusingTest.java new file mode 100644 index 0000000000..729cb30cd2 --- /dev/null +++ b/mocks/jmockit/src/main/java/org/baeldung/mocks/jmockit/ReusingTest.java @@ -0,0 +1,57 @@ +package org.baeldung.mocks.jmockit; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +import mockit.Expectations; +import mockit.Injectable; +import mockit.Mocked; +import mockit.Tested; +import mockit.Verifications; +import mockit.integration.junit4.JMockit; + +@RunWith(JMockit.class) +public class ReusingTest { + + @Injectable + private Collaborator collaborator; + + @Mocked + private Model model; + + @Tested + private Performer performer; + + @Before + public void setup(){ + new Expectations(){{ + model.getInfo(); result = "foo"; minTimes = 0; + collaborator.collaborate("foo"); result = true; minTimes = 0; + }}; + } + + @Test + public void testWithSetup() { + performer.perform(model); + verifyTrueCalls(1); + } + + protected void verifyTrueCalls(int calls){ + new Verifications(){{ + collaborator.receive(true); times = calls; + }}; + } + + final class TrueCallsVerification extends Verifications{ + public TrueCallsVerification(int calls){ + collaborator.receive(true); times = calls; + } + } + + @Test + public void testWithFinalClass() { + performer.perform(model); + new TrueCallsVerification(1); + } +} diff --git a/mocks/jmockit/src/test/java/org/baeldung/mocks/jmockit/AdvancedCollaboratorTest.java b/mocks/jmockit/src/test/java/org/baeldung/mocks/jmockit/AdvancedCollaboratorTest.java new file mode 100644 index 0000000000..aaabe44f66 --- /dev/null +++ b/mocks/jmockit/src/test/java/org/baeldung/mocks/jmockit/AdvancedCollaboratorTest.java @@ -0,0 +1,110 @@ +package org.baeldung.mocks.jmockit; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.util.ArrayList; +import java.util.List; + +import org.baeldung.mocks.jmockit.AdvancedCollaborator.InnerAdvancedCollaborator; +import org.junit.Test; +import org.junit.runner.RunWith; + +import mockit.Deencapsulation; +import mockit.Expectations; +import mockit.Invocation; +import mockit.Mock; +import mockit.MockUp; +import mockit.Mocked; +import mockit.Tested; +import mockit.integration.junit4.JMockit; + +@RunWith(JMockit.class) +public class AdvancedCollaboratorTest & Comparable>> { + + @Tested + private AdvancedCollaborator mock; + + @Mocked + private MultiMock multiMock; + + @Test + public void testToMockUpPrivateMethod() { + new MockUp() { + @Mock + private String privateMethod() { + return "mocked: "; + } + }; + String res = mock.methodThatCallsPrivateMethod(1); + assertEquals("mocked: 1", res); + } + + @Test + public void testToMockUpDifficultConstructor() throws Exception { + new MockUp() { + @Mock + public void $init(Invocation invocation, String string) { + ((AdvancedCollaborator) invocation.getInvokedInstance()).i = 1; + } + }; + AdvancedCollaborator coll = new AdvancedCollaborator(null); + assertEquals(1, coll.i); + } + + @Test + public void testToCallPrivateMethodsDirectly() { + Object value = Deencapsulation.invoke(mock, "privateMethod"); + assertEquals("default:", value); + } + + @Test + public void testToSetPrivateFieldDirectly() { + Deencapsulation.setField(mock, "privateField", 10); + assertEquals(10, mock.methodThatReturnsThePrivateField()); + } + + @Test + public void testToGetPrivateFieldDirectly() { + int value = Deencapsulation.getField(mock, "privateField"); + assertEquals(5, value); + } + + @Test + public void testToCreateNewInstanceDirectly() { + AdvancedCollaborator coll = Deencapsulation.newInstance(AdvancedCollaborator.class, "foo"); + assertEquals(3, coll.i); + } + + @Test + public void testToCreateNewInnerClassInstanceDirectly() { + InnerAdvancedCollaborator innerCollaborator = Deencapsulation.newInnerInstance(InnerAdvancedCollaborator.class, mock); + assertNotNull(innerCollaborator); + } + + @Test + @SuppressWarnings("unchecked") + public void testMultipleInterfacesWholeTest() { + new Expectations() { + { + multiMock.get(5); result = "foo"; + multiMock.compareTo((List) any); result = 0; + } + }; + assertEquals("foo", multiMock.get(5)); + assertEquals(0, multiMock.compareTo(new ArrayList<>())); + } + + @Test + @SuppressWarnings("unchecked") + public & Comparable>> void testMultipleInterfacesOneMethod(@Mocked M mock) { + new Expectations() { + { + mock.get(5); result = "foo"; + mock.compareTo((List) any); + result = 0; } + }; + assertEquals("foo", mock.get(5)); + assertEquals(0, mock.compareTo(new ArrayList<>())); + } +} From 463f5256c01743fb6057418a24de3182dc450244 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Gonz=C3=A1lez?= Date: Sun, 31 Jul 2016 22:53:10 +0200 Subject: [PATCH 10/19] Move test class to tests folder (#558) * Add new module for mocks comparison. * Add sources for testing. * Changes on testCase. * Enter some tests for mockito. * More tests for Mockito. * Even more tests. * Add the rest of the mocking libraries. * Javadoc on test. * Test bare bones for EasyMock. * Fist kind of test and setup. * Add tests using EasyMock with a change on LoginService. * Create LoginControllerTest.java * Test setup * [JMockit] No method called test. * [JMockit] Two methods called test. * [JMockit] One method called test. * [JMockit] Exception mock test * [JMockit] Mocked object to pass around test. * [JMockit] Custom matcher test. * [JMockit] Partial mocking test. * [JMockit] Fix with IDE. * Not stubs. Mocks. MOCKS!!! * Remove unnecesary import. * Use correct encoding. Was having problems with buildings. * Remove failing module. * Create new module mocks and move mock-comparisons there. * Add jmockit module. * Add model class. * Add collaborator class. * Add performer class. * Add performer test. * Fix * Add interface for tests. * Test for any. * Test for with. * Test for null. * Test for times. * Test for arg that. * Test for result and returns. * Test for delegate. * Add verifications to any tests. * Add verifications to with test. * Add verification examples to methods using null. * Add verifications to methods using times. * Formatting. * Compress tests and fix one test. * Adding new article to readme. * [BAEL-178] Add collaborator for advanced article. * [BAEL-178] Add link to readme. * [BAEL-178] Add test for mockUp. * [BAEL-178] Add test for invoke method. * [BAEL-178] Add constructors and tests for mockup for constructors. * [BAEL-178] Add private fields and more test for deencapsulation. * [BAEL-178] Add inner class and test for instantiating inner classes. * [BAEL-178] Multimocks. * [BAEL-178] Add test for expectation reusing. * [BAEL-178] Move test class to tests folders. --- .../baeldung/mocks/jmockit/ReusingTest.java | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 mocks/jmockit/src/test/java/org/baeldung/mocks/jmockit/ReusingTest.java diff --git a/mocks/jmockit/src/test/java/org/baeldung/mocks/jmockit/ReusingTest.java b/mocks/jmockit/src/test/java/org/baeldung/mocks/jmockit/ReusingTest.java new file mode 100644 index 0000000000..729cb30cd2 --- /dev/null +++ b/mocks/jmockit/src/test/java/org/baeldung/mocks/jmockit/ReusingTest.java @@ -0,0 +1,57 @@ +package org.baeldung.mocks.jmockit; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +import mockit.Expectations; +import mockit.Injectable; +import mockit.Mocked; +import mockit.Tested; +import mockit.Verifications; +import mockit.integration.junit4.JMockit; + +@RunWith(JMockit.class) +public class ReusingTest { + + @Injectable + private Collaborator collaborator; + + @Mocked + private Model model; + + @Tested + private Performer performer; + + @Before + public void setup(){ + new Expectations(){{ + model.getInfo(); result = "foo"; minTimes = 0; + collaborator.collaborate("foo"); result = true; minTimes = 0; + }}; + } + + @Test + public void testWithSetup() { + performer.perform(model); + verifyTrueCalls(1); + } + + protected void verifyTrueCalls(int calls){ + new Verifications(){{ + collaborator.receive(true); times = calls; + }}; + } + + final class TrueCallsVerification extends Verifications{ + public TrueCallsVerification(int calls){ + collaborator.receive(true); times = calls; + } + } + + @Test + public void testWithFinalClass() { + performer.perform(model); + new TrueCallsVerification(1); + } +} From 71e40aa4f5d0f19d766e937ec6fa580dc2198f14 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 31 Jul 2016 23:14:14 +0200 Subject: [PATCH 11/19] Remove duplicated file --- .../baeldung/mocks/jmockit/ReusingTest.java | 57 ------------------- 1 file changed, 57 deletions(-) delete mode 100644 mocks/jmockit/src/main/java/org/baeldung/mocks/jmockit/ReusingTest.java diff --git a/mocks/jmockit/src/main/java/org/baeldung/mocks/jmockit/ReusingTest.java b/mocks/jmockit/src/main/java/org/baeldung/mocks/jmockit/ReusingTest.java deleted file mode 100644 index 729cb30cd2..0000000000 --- a/mocks/jmockit/src/main/java/org/baeldung/mocks/jmockit/ReusingTest.java +++ /dev/null @@ -1,57 +0,0 @@ -package org.baeldung.mocks.jmockit; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; - -import mockit.Expectations; -import mockit.Injectable; -import mockit.Mocked; -import mockit.Tested; -import mockit.Verifications; -import mockit.integration.junit4.JMockit; - -@RunWith(JMockit.class) -public class ReusingTest { - - @Injectable - private Collaborator collaborator; - - @Mocked - private Model model; - - @Tested - private Performer performer; - - @Before - public void setup(){ - new Expectations(){{ - model.getInfo(); result = "foo"; minTimes = 0; - collaborator.collaborate("foo"); result = true; minTimes = 0; - }}; - } - - @Test - public void testWithSetup() { - performer.perform(model); - verifyTrueCalls(1); - } - - protected void verifyTrueCalls(int calls){ - new Verifications(){{ - collaborator.receive(true); times = calls; - }}; - } - - final class TrueCallsVerification extends Verifications{ - public TrueCallsVerification(int calls){ - collaborator.receive(true); times = calls; - } - } - - @Test - public void testWithFinalClass() { - performer.perform(model); - new TrueCallsVerification(1); - } -} From 1972b45a5b1a9a3f802458aeacafb1bd68bd17d7 Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Mon, 1 Aug 2016 00:14:00 +0200 Subject: [PATCH 12/19] BAEL-102 - Spring with JSON-P --- .../WEB-INF/{company.html => view/index.jsp} | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) rename spring-mvc-java/src/main/webapp/WEB-INF/{company.html => view/index.jsp} (73%) diff --git a/spring-mvc-java/src/main/webapp/WEB-INF/company.html b/spring-mvc-java/src/main/webapp/WEB-INF/view/index.jsp similarity index 73% rename from spring-mvc-java/src/main/webapp/WEB-INF/company.html rename to spring-mvc-java/src/main/webapp/WEB-INF/view/index.jsp index e1b3c6e441..fa5498c966 100644 --- a/spring-mvc-java/src/main/webapp/WEB-INF/company.html +++ b/spring-mvc-java/src/main/webapp/WEB-INF/view/index.jsp @@ -1,3 +1,5 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1" %> @@ -45,26 +47,20 @@ }); }); - function getCompanyData(data) { - document.write("ID: "+data.id+"
"); - document.write("NAME: "+data.name+"
"); - document.write("
"); + function getCompanyData(data) { + $("#response").append("ID: "+data.id+"
"); + $("#response").append("NAME: "+data.name+"
"); + $("#response").append("
"); } - - -
- - -
- - - -
+ + +
+ \ No newline at end of file From 7c34948ade6f7112c0e88ffefbf8b9908da80451 Mon Sep 17 00:00:00 2001 From: Sergey Petunin Date: Mon, 1 Aug 2016 12:38:52 +0600 Subject: [PATCH 13/19] Moved spring-akka to a separate project (#560) --- pom.xml | 1 + spring-akka/pom.xml | 80 +++++++++++++++++++ .../org/baeldung/akka/AppConfiguration.java | 0 .../java/org/baeldung/akka/GreetingActor.java | 5 +- .../org/baeldung/akka/GreetingService.java | 0 .../baeldung/akka/SpringActorProducer.java | 0 .../org/baeldung/akka/SpringExtension.java | 0 .../org/baeldung/akka/SpringAkkaTest.java | 0 spring-all/pom.xml | 8 -- 9 files changed, 83 insertions(+), 11 deletions(-) create mode 100644 spring-akka/pom.xml rename {spring-all => spring-akka}/src/main/java/org/baeldung/akka/AppConfiguration.java (100%) rename {spring-all => spring-akka}/src/main/java/org/baeldung/akka/GreetingActor.java (88%) rename {spring-all => spring-akka}/src/main/java/org/baeldung/akka/GreetingService.java (100%) rename {spring-all => spring-akka}/src/main/java/org/baeldung/akka/SpringActorProducer.java (100%) rename {spring-all => spring-akka}/src/main/java/org/baeldung/akka/SpringExtension.java (100%) rename {spring-all => spring-akka}/src/test/java/org/baeldung/akka/SpringAkkaTest.java (100%) diff --git a/pom.xml b/pom.xml index 419916de86..62d3d03633 100644 --- a/pom.xml +++ b/pom.xml @@ -52,6 +52,7 @@ log4j spring-all + spring-akka spring-apache-camel spring-autowire spring-batch diff --git a/spring-akka/pom.xml b/spring-akka/pom.xml new file mode 100644 index 0000000000..6299448ec8 --- /dev/null +++ b/spring-akka/pom.xml @@ -0,0 +1,80 @@ + + 4.0.0 + com.baeldung + spring-akka + 0.1-SNAPSHOT + + spring-akka + + + + + org.springframework + spring-context + + + + com.typesafe.akka + akka-actor_2.11 + ${akka.version} + + + + org.springframework + spring-test + test + + + + junit + junit + ${junit.version} + test + + + + + + + + + + org.springframework + spring-framework-bom + ${spring.version} + pom + import + + + + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + + + + + + + + 4.3.2.RELEASE + 2.4.8 + 4.12 + + 3.5.1 + + + \ No newline at end of file diff --git a/spring-all/src/main/java/org/baeldung/akka/AppConfiguration.java b/spring-akka/src/main/java/org/baeldung/akka/AppConfiguration.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/akka/AppConfiguration.java rename to spring-akka/src/main/java/org/baeldung/akka/AppConfiguration.java diff --git a/spring-all/src/main/java/org/baeldung/akka/GreetingActor.java b/spring-akka/src/main/java/org/baeldung/akka/GreetingActor.java similarity index 88% rename from spring-all/src/main/java/org/baeldung/akka/GreetingActor.java rename to spring-akka/src/main/java/org/baeldung/akka/GreetingActor.java index 1a9386c769..6366c277a4 100644 --- a/spring-all/src/main/java/org/baeldung/akka/GreetingActor.java +++ b/spring-akka/src/main/java/org/baeldung/akka/GreetingActor.java @@ -1,13 +1,12 @@ package org.baeldung.akka; import akka.actor.UntypedActor; +import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; -import static org.springframework.beans.factory.config.ConfigurableBeanFactory.SCOPE_PROTOTYPE; - @Component -@Scope(SCOPE_PROTOTYPE) +@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public class GreetingActor extends UntypedActor { private GreetingService greetingService; diff --git a/spring-all/src/main/java/org/baeldung/akka/GreetingService.java b/spring-akka/src/main/java/org/baeldung/akka/GreetingService.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/akka/GreetingService.java rename to spring-akka/src/main/java/org/baeldung/akka/GreetingService.java diff --git a/spring-all/src/main/java/org/baeldung/akka/SpringActorProducer.java b/spring-akka/src/main/java/org/baeldung/akka/SpringActorProducer.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/akka/SpringActorProducer.java rename to spring-akka/src/main/java/org/baeldung/akka/SpringActorProducer.java diff --git a/spring-all/src/main/java/org/baeldung/akka/SpringExtension.java b/spring-akka/src/main/java/org/baeldung/akka/SpringExtension.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/akka/SpringExtension.java rename to spring-akka/src/main/java/org/baeldung/akka/SpringExtension.java diff --git a/spring-all/src/test/java/org/baeldung/akka/SpringAkkaTest.java b/spring-akka/src/test/java/org/baeldung/akka/SpringAkkaTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/akka/SpringAkkaTest.java rename to spring-akka/src/test/java/org/baeldung/akka/SpringAkkaTest.java diff --git a/spring-all/pom.xml b/spring-all/pom.xml index b7a8fcc79e..25a45d9bae 100644 --- a/spring-all/pom.xml +++ b/spring-all/pom.xml @@ -87,14 +87,6 @@ runtime - - - - com.typesafe.akka - akka-actor_2.11 - 2.4.8 - - From 67f24c25af4f4ddea23341d31764bbe43b51c8f6 Mon Sep 17 00:00:00 2001 From: lor6 Date: Mon, 1 Aug 2016 18:36:25 +0300 Subject: [PATCH 14/19] Non transient exception (#563) * non transient data access exception examples * change to derby db * change to in memory derby db * delete failed test * fix invalidresource test --- .../InvalidResourceUsageExceptionTest.java | 31 +++++++++++-------- .../PermissionDeniedException.java | 27 ---------------- 2 files changed, 18 insertions(+), 40 deletions(-) delete mode 100644 spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/PermissionDeniedException.java diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/InvalidResourceUsageExceptionTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/InvalidResourceUsageExceptionTest.java index 9afe2533de..b3bf0dcdcd 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/InvalidResourceUsageExceptionTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/InvalidResourceUsageExceptionTest.java @@ -17,22 +17,27 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause1NonTransientConfig.class }, loader = AnnotationConfigContextLoader.class) public class InvalidResourceUsageExceptionTest { - @Autowired - private IFooService fooService; + @Autowired + private IFooService fooService; - @Autowired - private DataSource restDataSource; + @Autowired + private DataSource restDataSource; - @Test(expected = InvalidDataAccessResourceUsageException.class) - public void whenRetrievingDataUserNoSelectRights_thenInvalidResourceUsageException() { - fooService.findAll(); - } + @Test(expected = InvalidDataAccessResourceUsageException.class) + public void whenRetrievingDataUserNoSelectRights_thenInvalidResourceUsageException() { + final JdbcTemplate jdbcTemplate = new JdbcTemplate(restDataSource); + jdbcTemplate.execute("revoke select from tutorialuser"); - @Test(expected = BadSqlGrammarException.class) - public void whenIncorrectSql_thenBadSqlGrammarException() { - final JdbcTemplate jdbcTemplate = new JdbcTemplate(restDataSource); + fooService.findAll(); - jdbcTemplate.queryForObject("select * fro foo where id=3", Integer.class); - } + jdbcTemplate.execute("grant select to tutorialuser"); + } + + @Test(expected = BadSqlGrammarException.class) + public void whenIncorrectSql_thenBadSqlGrammarException() { + final JdbcTemplate jdbcTemplate = new JdbcTemplate(restDataSource); + + jdbcTemplate.queryForObject("select * fro foo where id=3", Integer.class); + } } diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/PermissionDeniedException.java b/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/PermissionDeniedException.java deleted file mode 100644 index 7f91b52e00..0000000000 --- a/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/PermissionDeniedException.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.baeldung.ex.nontransientdataaccessexception; - -import org.baeldung.ex.nontransientexception.cause.Cause1NonTransientConfig; -import org.baeldung.persistence.model.Foo; -import org.baeldung.persistence.service.IFooService; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.dao.PermissionDeniedDataAccessException; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.AnnotationConfigContextLoader; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { Cause1NonTransientConfig.class }, loader = AnnotationConfigContextLoader.class) -public class PermissionDeniedException { - - @Autowired - private IFooService fooService; - - @Test(expected = PermissionDeniedDataAccessException.class) - public void whenRetrievingDataUserNoSelectRights_thenPermissionDeniedException() { - final Foo foo = new Foo("foo"); - fooService.create(foo); - } - -} From 96f4f732f8ab709d72a2ca0a73710b251ca21d40 Mon Sep 17 00:00:00 2001 From: prashant1067 Date: Mon, 1 Aug 2016 21:27:05 +0530 Subject: [PATCH 15/19] adding config files (#554) * adding config files * adding test class * adding autowired annotation --- .../config/StudentControllerConfig.java | 37 ++++++++ .../baeldung/controller/config/WebConfig.java | 28 ++++++ .../controller/ControllerAnnotationTest.java | 93 +++++++++++++++++++ 3 files changed, 158 insertions(+) create mode 100644 spring-all/src/main/java/org/baeldung/controller/config/StudentControllerConfig.java create mode 100644 spring-all/src/main/java/org/baeldung/controller/config/WebConfig.java create mode 100644 spring-all/src/test/java/org/baeldung/controller/ControllerAnnotationTest.java diff --git a/spring-all/src/main/java/org/baeldung/controller/config/StudentControllerConfig.java b/spring-all/src/main/java/org/baeldung/controller/config/StudentControllerConfig.java new file mode 100644 index 0000000000..2ae28b6b4a --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/controller/config/StudentControllerConfig.java @@ -0,0 +1,37 @@ +package org.baeldung.controller.config; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRegistration; + +import org.springframework.web.WebApplicationInitializer; +import org.springframework.web.context.ContextLoaderListener; +import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; +import org.springframework.web.context.support.GenericWebApplicationContext; +import org.springframework.web.servlet.DispatcherServlet; + +public class StudentControllerConfig implements WebApplicationInitializer { + + + @Override + public void onStartup(ServletContext sc) throws ServletException { + AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext(); + root.register(WebConfig.class); + + root.refresh(); + root.setServletContext(sc); + + // Manages the lifecycle of the root application context + sc.addListener(new ContextLoaderListener(root)); + + + + DispatcherServlet dv =new DispatcherServlet(new GenericWebApplicationContext()); + + ServletRegistration.Dynamic appServlet = sc.addServlet("test-mvc",dv ); + appServlet.setLoadOnStartup(1); + appServlet.addMapping("/test/*"); + } + + } + diff --git a/spring-all/src/main/java/org/baeldung/controller/config/WebConfig.java b/spring-all/src/main/java/org/baeldung/controller/config/WebConfig.java new file mode 100644 index 0000000000..22a0671be8 --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/controller/config/WebConfig.java @@ -0,0 +1,28 @@ +package org.baeldung.controller.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.ViewResolver; +import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import org.springframework.web.servlet.view.InternalResourceViewResolver; + +@Configuration +@EnableWebMvc +@ComponentScan(basePackages= {"org.baledung.controller.controller","org.baledung.controller.config" }) +public class WebConfig extends WebMvcConfigurerAdapter { + @Override + public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { + configurer.enable(); + } + + @Bean + public ViewResolver viewResolver() { + InternalResourceViewResolver bean = new InternalResourceViewResolver(); + bean.setPrefix("/WEB-INF/"); + bean.setSuffix(".jsp"); + return bean; + } +} \ No newline at end of file diff --git a/spring-all/src/test/java/org/baeldung/controller/ControllerAnnotationTest.java b/spring-all/src/test/java/org/baeldung/controller/ControllerAnnotationTest.java new file mode 100644 index 0000000000..acd80afa95 --- /dev/null +++ b/spring-all/src/test/java/org/baeldung/controller/ControllerAnnotationTest.java @@ -0,0 +1,93 @@ +package org.baeldung.controller; + +import javax.servlet.ServletContext; + +import org.baeldung.controller.config.WebConfig; +import org.baeldung.controller.student.Student; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; +import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.servlet.ModelAndView; + +import com.fasterxml.jackson.databind.ObjectMapper; + + +@RunWith(SpringJUnit4ClassRunner.class) +@WebAppConfiguration +@ContextConfiguration(classes={WebConfig.class},loader=AnnotationConfigContextLoader.class ) +public class ControllerAnnotationTest { + + @Autowired + private MockMvc mockMvc; + + @Autowired + private WebApplicationContext wac; + + @Autowired + private ServletContext servletContext; + + private Student selectedStudent; + + @Before + public void setUp() { + this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build(); + + selectedStudent = new Student(); + selectedStudent.setId(1); + selectedStudent.setName("Peter"); + } + + @Test + public void testTestController() throws Exception { + + ModelAndView mv = this.mockMvc.perform(MockMvcRequestBuilders.get("/test/")) + .andReturn() + .getModelAndView(); + + // validate modal data + Assert.assertSame(mv.getModelMap().get("data").toString(), "Welcome home man"); + + // validate view name + Assert.assertSame(mv.getViewName(), "welcome"); + } + + @Test + public void testRestController() throws Exception { + + String responseBody = this.mockMvc.perform(MockMvcRequestBuilders.get("/student/{studentId}", 1)) + .andReturn().getResponse() + .getContentAsString(); + + ObjectMapper reader = new ObjectMapper(); + + Student studentDetails = reader.readValue(responseBody, Student.class); + + Assert.assertEquals(selectedStudent, studentDetails); + + } + + @Test + public void testRestAnnotatedController() throws Exception { + + String responseBody = this.mockMvc.perform(MockMvcRequestBuilders.get("/annotated/student/{studentId}", 1)) + .andReturn().getResponse() + .getContentAsString(); + + ObjectMapper reader = new ObjectMapper(); + + Student studentDetails = reader.readValue(responseBody, Student.class); + + Assert.assertEquals(selectedStudent, studentDetails); + } + +} From eb8526cfdec4dd61ceeb6a80b805324c0492ac2b Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Mon, 1 Aug 2016 18:31:44 +0200 Subject: [PATCH 16/19] Fix java config --- .../org/baeldung/controller/config/WebConfig.java | 2 +- .../controller/ControllerAnnotationTest.java | 13 +++---------- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/spring-all/src/main/java/org/baeldung/controller/config/WebConfig.java b/spring-all/src/main/java/org/baeldung/controller/config/WebConfig.java index 22a0671be8..f55af69c88 100644 --- a/spring-all/src/main/java/org/baeldung/controller/config/WebConfig.java +++ b/spring-all/src/main/java/org/baeldung/controller/config/WebConfig.java @@ -11,7 +11,7 @@ import org.springframework.web.servlet.view.InternalResourceViewResolver; @Configuration @EnableWebMvc -@ComponentScan(basePackages= {"org.baledung.controller.controller","org.baledung.controller.config" }) +@ComponentScan(basePackages= {"org.baeldung.controller.controller","org.baeldung.controller.config" }) public class WebConfig extends WebMvcConfigurerAdapter { @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { diff --git a/spring-all/src/test/java/org/baeldung/controller/ControllerAnnotationTest.java b/spring-all/src/test/java/org/baeldung/controller/ControllerAnnotationTest.java index acd80afa95..44f1767405 100644 --- a/spring-all/src/test/java/org/baeldung/controller/ControllerAnnotationTest.java +++ b/spring-all/src/test/java/org/baeldung/controller/ControllerAnnotationTest.java @@ -1,7 +1,6 @@ package org.baeldung.controller; -import javax.servlet.ServletContext; - +import com.fasterxml.jackson.databind.ObjectMapper; import org.baeldung.controller.config.WebConfig; import org.baeldung.controller.student.Student; import org.junit.Assert; @@ -11,7 +10,7 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.AnnotationConfigContextLoader; +import org.springframework.test.context.web.AnnotationConfigWebContextLoader; import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; @@ -19,23 +18,17 @@ import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.servlet.ModelAndView; -import com.fasterxml.jackson.databind.ObjectMapper; - @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration -@ContextConfiguration(classes={WebConfig.class},loader=AnnotationConfigContextLoader.class ) +@ContextConfiguration(classes={WebConfig.class}, loader=AnnotationConfigWebContextLoader.class ) public class ControllerAnnotationTest { - @Autowired private MockMvc mockMvc; @Autowired private WebApplicationContext wac; - @Autowired - private ServletContext servletContext; - private Student selectedStudent; @Before From 290566add022dec49ff60b4ffce5a714140eb68b Mon Sep 17 00:00:00 2001 From: egimaben Date: Mon, 1 Aug 2016 21:20:42 +0300 Subject: [PATCH 17/19] made test changes to dozer tutorial --- .../java/com/baeldung/dozer/DozerTest.java | 112 ++++++++++++------ 1 file changed, 76 insertions(+), 36 deletions(-) diff --git a/dozer-tutorial/src/test/java/com/baeldung/dozer/DozerTest.java b/dozer-tutorial/src/test/java/com/baeldung/dozer/DozerTest.java index ea356d307a..162a32bcaf 100644 --- a/dozer-tutorial/src/test/java/com/baeldung/dozer/DozerTest.java +++ b/dozer-tutorial/src/test/java/com/baeldung/dozer/DozerTest.java @@ -1,14 +1,9 @@ package com.baeldung.dozer; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; import java.util.Arrays; -import java.util.Date; -import java.util.List; import org.dozer.DozerBeanMapper; import org.dozer.loader.api.BeanMappingBuilder; @@ -16,14 +11,16 @@ import org.junit.Before; import org.junit.Test; public class DozerTest { - DozerBeanMapper mapper = new DozerBeanMapper(); - private final long GMT_DIFFERENCE=46800000; + private final long GMT_DIFFERENCE = 46800000; + + DozerBeanMapper mapper; + @Before public void before() throws Exception { mapper = new DozerBeanMapper(); } - private BeanMappingBuilder builder = new BeanMappingBuilder() { + BeanMappingBuilder builder = new BeanMappingBuilder() { @Override protected void configure() { @@ -32,7 +29,7 @@ public class DozerTest { } }; - private BeanMappingBuilder builderMinusAge = new BeanMappingBuilder() { + BeanMappingBuilder builderMinusAge = new BeanMappingBuilder() { @Override protected void configure() { @@ -44,10 +41,12 @@ public class DozerTest { @Test public void givenApiMapper_whenMaps_thenCorrect() { + mapper.addMapping(builder); + Personne frenchAppPerson = new Personne("Sylvester Stallone", "Rambo", 70); - mapper.addMapping(builder); Person englishAppPerson = mapper.map(frenchAppPerson, Person.class); + assertEquals(englishAppPerson.getName(), frenchAppPerson.getNom()); assertEquals(englishAppPerson.getNickname(), frenchAppPerson.getSurnom()); @@ -56,9 +55,11 @@ public class DozerTest { @Test public void givenApiMapper_whenMapsOnlySpecifiedFields_thenCorrect() { - Person englishAppPerson = new Person("Sylvester Stallone", "Rambo", 70); mapper.addMapping(builderMinusAge); + + Person englishAppPerson = new Person("Sylvester Stallone", "Rambo", 70); Personne frenchAppPerson = mapper.map(englishAppPerson, Personne.class); + assertEquals(frenchAppPerson.getNom(), englishAppPerson.getName()); assertEquals(frenchAppPerson.getSurnom(), englishAppPerson.getNickname()); @@ -67,9 +68,11 @@ public class DozerTest { @Test public void givenApiMapper_whenMapsBidirectionally_thenCorrect() { - Person englishAppPerson = new Person("Sylvester Stallone", "Rambo", 70); mapper.addMapping(builder); + + Person englishAppPerson = new Person("Sylvester Stallone", "Rambo", 70); Personne frenchAppPerson = mapper.map(englishAppPerson, Personne.class); + assertEquals(frenchAppPerson.getNom(), englishAppPerson.getName()); assertEquals(frenchAppPerson.getSurnom(), englishAppPerson.getNickname()); @@ -103,12 +106,12 @@ public class DozerTest { @Test public void givenSrcAndDestWithDifferentFieldNamesWithCustomMapper_whenMaps_thenCorrect() { - List mappingFiles = new ArrayList<>(); - mappingFiles.add("dozer_mapping.xml"); + configureMapper("dozer_mapping.xml"); + Personne frenchAppPerson = new Personne("Sylvester Stallone", "Rambo", 70); - mapper.setMappingFiles(mappingFiles); Person englishAppPerson = mapper.map(frenchAppPerson, Person.class); + assertEquals(englishAppPerson.getName(), frenchAppPerson.getNom()); assertEquals(englishAppPerson.getNickname(), frenchAppPerson.getSurnom()); @@ -117,25 +120,52 @@ public class DozerTest { @Test public void givenSrcAndDestWithDifferentFieldNamesWithCustomMapper_whenMapsBidirectionally_thenCorrect() { - List mappingFiles = new ArrayList<>(); - mappingFiles.add("dozer_mapping.xml"); + configureMapper("dozer_mapping.xml"); + Person englishAppPerson = new Person("Dwayne Johnson", "The Rock", 44); - mapper.setMappingFiles(mappingFiles); Personne frenchAppPerson = mapper.map(englishAppPerson, Personne.class); + assertEquals(frenchAppPerson.getNom(), englishAppPerson.getName()); assertEquals(frenchAppPerson.getSurnom(), englishAppPerson.getNickname()); assertEquals(frenchAppPerson.getAge(), englishAppPerson.getAge()); } +/* + @Test + public void givenMappingFileOutsideClasspath_whenMaps_thenCorrect() { + configureMapper("file:e:/dozer_mapping.xml"); + Person englishAppPerson = new Person("Marshall Bruce Mathers III", + "Eminem", 43); + Personne frenchAppPerson = mapper.map(englishAppPerson, Personne.class); + + assertEquals(frenchAppPerson.getNom(), englishAppPerson.getName()); + assertEquals(frenchAppPerson.getSurnom(), + englishAppPerson.getNickname()); + assertEquals(frenchAppPerson.getAge(), englishAppPerson.getAge()); + } + */ // @Test -// public void givenMappingFileOutsideClasspath_whenMaps_thenCorrect() { -// List mappingFiles = new ArrayList<>(); -// mappingFiles.add("file:E:\\dozer_mapping.xml"); +// public void givenMappingFileOutsideClasspath_whenMapsOnUnix_thenCorrect() { +// configureMapper("file:/home/dozer_mapping.xml"); +// // Person englishAppPerson = new Person("Marshall Bruce Mathers III", // "Eminem", 43); -// mapper.setMappingFiles(mappingFiles); // Personne frenchAppPerson = mapper.map(englishAppPerson, Personne.class); +// +// assertEquals(frenchAppPerson.getNom(), englishAppPerson.getName()); +// assertEquals(frenchAppPerson.getSurnom(), +// englishAppPerson.getNickname()); +// assertEquals(frenchAppPerson.getAge(), englishAppPerson.getAge()); +// } +// @Test +// public void givenMappingFileOutsideClasspath_whenMapsOnMacOs_thenCorrect() { +// configureMapper("file:/Users/me/dozer_mapping.xml"); +// +// Person englishAppPerson = new Person("Marshall Bruce Mathers III", +// "Eminem", 43); +// Personne frenchAppPerson = mapper.map(englishAppPerson, Personne.class); +// // assertEquals(frenchAppPerson.getNom(), englishAppPerson.getName()); // assertEquals(frenchAppPerson.getSurnom(), // englishAppPerson.getNickname()); @@ -144,11 +174,11 @@ public class DozerTest { @Test public void givenSrcAndDest_whenMapsOnlySpecifiedFields_thenCorrect() { - List mappingFiles = new ArrayList<>(); - mappingFiles.add("dozer_mapping2.xml"); + configureMapper("dozer_mapping2.xml"); + Person englishAppPerson = new Person("Shawn Corey Carter", "Jay Z", 46); - mapper.setMappingFiles(mappingFiles); Personne frenchAppPerson = mapper.map(englishAppPerson, Personne.class); + assertEquals(frenchAppPerson.getNom(), englishAppPerson.getName()); assertEquals(frenchAppPerson.getSurnom(), englishAppPerson.getNickname()); @@ -180,25 +210,35 @@ public class DozerTest { @Test public void givenSrcAndDestWithDifferentFieldTypes_whenAbleToCustomConvert_thenCorrect() { + configureMapper("dozer_custom_convertor.xml"); + String dateTime = "2007-06-26T21:22:39Z"; long timestamp = new Long("1182882159000"); + Person3 person = new Person3("Rich", dateTime); - mapper.setMappingFiles(Arrays - .asList(new String[] { "dozer_custom_convertor.xml" })); Personne3 person0 = mapper.map(person, Personne3.class); - long timestampToTest=person0.getDtob(); - assertTrue(timestampToTest==timestamp||timestampToTest>=timestamp-GMT_DIFFERENCE||timestampToTest<=timestamp+GMT_DIFFERENCE); + + long timestampToTest = person0.getDtob(); + assertTrue(timestampToTest == timestamp + || timestampToTest >= timestamp - GMT_DIFFERENCE + || timestampToTest <= timestamp + GMT_DIFFERENCE); } @Test public void givenSrcAndDestWithDifferentFieldTypes_whenAbleToCustomConvertBidirectionally_thenCorrect() { - String dateTime = "2007-06-26T21:22:39Z"; long timestamp = new Long("1182882159000"); Personne3 person = new Personne3("Rich", timestamp); - mapper.setMappingFiles(Arrays - .asList(new String[] { "dozer_custom_convertor.xml" })); + configureMapper("dozer_custom_convertor.xml"); + Person3 person0 = mapper.map(person, Person3.class); - String timestampTest=person0.getDtob(); - assertTrue(timestampTest.charAt(10)=='T'&×tampTest.charAt(19)=='Z'); + String timestampTest = person0.getDtob(); + + assertTrue(timestampTest.charAt(10) == 'T' + && timestampTest.charAt(19) == 'Z'); } + + public void configureMapper(String... mappingFileUrls) { + mapper.setMappingFiles(Arrays.asList(mappingFileUrls)); + } + } From d531937208e955c6afb48169d153c77b56f07698 Mon Sep 17 00:00:00 2001 From: egimaben Date: Mon, 1 Aug 2016 23:22:09 +0300 Subject: [PATCH 18/19] resolved external mapping file issue --- .../java/com/baeldung/dozer/DozerTest.java | 31 ++----------------- 1 file changed, 3 insertions(+), 28 deletions(-) diff --git a/dozer-tutorial/src/test/java/com/baeldung/dozer/DozerTest.java b/dozer-tutorial/src/test/java/com/baeldung/dozer/DozerTest.java index 162a32bcaf..f79c4a240c 100644 --- a/dozer-tutorial/src/test/java/com/baeldung/dozer/DozerTest.java +++ b/dozer-tutorial/src/test/java/com/baeldung/dozer/DozerTest.java @@ -8,6 +8,7 @@ import java.util.Arrays; import org.dozer.DozerBeanMapper; import org.dozer.loader.api.BeanMappingBuilder; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; public class DozerTest { @@ -130,7 +131,8 @@ public class DozerTest { englishAppPerson.getNickname()); assertEquals(frenchAppPerson.getAge(), englishAppPerson.getAge()); } -/* + + @Ignore("place dozer_mapping.xml at a location of your choice and copy/paste the path after file: in configureMapper method") @Test public void givenMappingFileOutsideClasspath_whenMaps_thenCorrect() { configureMapper("file:e:/dozer_mapping.xml"); @@ -144,33 +146,6 @@ public class DozerTest { englishAppPerson.getNickname()); assertEquals(frenchAppPerson.getAge(), englishAppPerson.getAge()); } - */ -// @Test -// public void givenMappingFileOutsideClasspath_whenMapsOnUnix_thenCorrect() { -// configureMapper("file:/home/dozer_mapping.xml"); -// -// Person englishAppPerson = new Person("Marshall Bruce Mathers III", -// "Eminem", 43); -// Personne frenchAppPerson = mapper.map(englishAppPerson, Personne.class); -// -// assertEquals(frenchAppPerson.getNom(), englishAppPerson.getName()); -// assertEquals(frenchAppPerson.getSurnom(), -// englishAppPerson.getNickname()); -// assertEquals(frenchAppPerson.getAge(), englishAppPerson.getAge()); -// } -// @Test -// public void givenMappingFileOutsideClasspath_whenMapsOnMacOs_thenCorrect() { -// configureMapper("file:/Users/me/dozer_mapping.xml"); -// -// Person englishAppPerson = new Person("Marshall Bruce Mathers III", -// "Eminem", 43); -// Personne frenchAppPerson = mapper.map(englishAppPerson, Personne.class); -// -// assertEquals(frenchAppPerson.getNom(), englishAppPerson.getName()); -// assertEquals(frenchAppPerson.getSurnom(), -// englishAppPerson.getNickname()); -// assertEquals(frenchAppPerson.getAge(), englishAppPerson.getAge()); -// } @Test public void givenSrcAndDest_whenMapsOnlySpecifiedFields_thenCorrect() { From c6193c5e50c92de45be85656b9fc1a6a40059ef1 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Mon, 1 Aug 2016 23:04:40 +0200 Subject: [PATCH 19/19] Add autovalue module --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index 62d3d03633..ea1cc21169 100644 --- a/pom.xml +++ b/pom.xml @@ -16,6 +16,7 @@ assertj apache-cxf apache-fop + autovalue-tutorial core-java core-java-8 couchbase-sdk-intro