diff --git a/assertj/pom.xml b/assertj/pom.xml index ce97278a97..26f45cfa26 100644 --- a/assertj/pom.xml +++ b/assertj/pom.xml @@ -9,10 +9,16 @@ 1.0.0-SNAPSHOT + + com.google.guava + guava + 19.0 + junit junit 4.12 + test org.assertj @@ -20,6 +26,11 @@ 3.4.1 test + + org.assertj + assertj-guava + 3.0.0 + diff --git a/assertj/src/test/java/com/baeldung/assertj/introduction/AssertJGuavaTest.java b/assertj/src/test/java/com/baeldung/assertj/introduction/AssertJGuavaTest.java new file mode 100644 index 0000000000..558ce87d70 --- /dev/null +++ b/assertj/src/test/java/com/baeldung/assertj/introduction/AssertJGuavaTest.java @@ -0,0 +1,96 @@ +package com.baeldung.assertj.introduction; + +import com.google.common.base.Optional; +import com.google.common.collect.HashBasedTable; +import com.google.common.collect.Multimap; +import com.google.common.collect.Multimaps; +import com.google.common.collect.Range; +import com.google.common.collect.Sets; +import com.google.common.collect.Table; +import com.google.common.collect.TreeRangeMap; +import com.google.common.io.Files; +import org.assertj.guava.data.MapEntry; +import org.junit.Test; + +import java.io.File; +import java.util.HashMap; + +import static org.assertj.guava.api.Assertions.assertThat; +import static org.assertj.guava.api.Assertions.entry; + +public class AssertJGuavaTest { + + @Test + public void givenTwoEmptyFiles_whenComparingContent_thenEqual() throws Exception { + final File temp = File.createTempFile("bael", "dung"); + final File temp2 = File.createTempFile("bael", "dung2"); + + assertThat(Files.asByteSource(temp)) + .hasSize(0) + .hasSameContentAs(Files.asByteSource(temp2)); + } + + @Test + public void givenMultimap_whenVerifying_thenCorrect() throws Exception { + final Multimap mmap = Multimaps.newMultimap(new HashMap<>(), Sets::newHashSet); + mmap.put(1, "one"); + mmap.put(1, "1"); + + assertThat(mmap) + .hasSize(2) + .containsKeys(1) + .contains(entry(1, "one")) + .contains(entry(1, "1")); + } + + @Test + public void givenOptional_whenVerifyingContent_thenShouldBeEqual() throws Exception { + final Optional something = Optional.of("something"); + + assertThat(something) + .isPresent() + .extractingValue() + .isEqualTo("something"); + } + + @Test + public void givenRange_whenVerifying_thenShouldBeCorrect() throws Exception { + final Range range = Range.openClosed("a", "g"); + + assertThat(range) + .hasOpenedLowerBound() + .isNotEmpty() + .hasClosedUpperBound() + .contains("b"); + } + + @Test + public void givenRangeMap_whenVerifying_thenShouldBeCorrect() throws Exception { + final TreeRangeMap map = TreeRangeMap.create(); + + map.put(Range.closed(0, 60), "F"); + map.put(Range.closed(61, 70), "D"); + + assertThat(map) + .isNotEmpty() + .containsKeys(0) + .contains(MapEntry.entry(34, "F")); + } + + @Test + public void givenTable_whenVerifying_thenShouldBeCorrect() throws Exception { + final Table table = HashBasedTable.create(2, 2); + + table.put(1, "A", "PRESENT"); + table.put(1, "B", "ABSENT"); + + assertThat(table) + .hasRowCount(1) + .containsValues("ABSENT") + .containsCell(1, "B", "ABSENT"); + } + + + + +} diff --git a/dependency-injection/build.gradle b/dependency-injection/build.gradle deleted file mode 100644 index 968636154d..0000000000 --- a/dependency-injection/build.gradle +++ /dev/null @@ -1,43 +0,0 @@ -apply plugin: 'java' -apply plugin: 'eclipse' - -allprojects { - apply plugin: 'java' - sourceCompatibility = 1.6 - targetCompatibility = 1.6 -} - -repositories { - mavenCentral() -} - -sourceSets { - main { - resources.srcDirs = ["src/main/java","src/main/resources"] - } - test { - resources.srcDirs = ["src/main/java", "src/main/resources", "src/test/resources"] - } -} - -configurations { - compile -} - -test { - testLogging { - events 'started', 'passed' - } -} - -dependencies { - testCompile('junit:junit:4.11') - testCompile('org.mockito:mockito-all:1.10.19') - testCompile group: 'org.springframework', name: 'spring-test', version: '4.2.6.RELEASE' - testCompile group: 'org.springframework', name: 'spring-core', version: '4.2.6.RELEASE' - testCompile group: 'org.springframework', name: 'spring-beans', version: '4.2.6.RELEASE' - testCompile group: 'org.springframework', name: 'spring-context', version: '4.2.6.RELEASE' - testCompile group: 'javax.inject', name: 'javax.inject', version: '1' - - testRuntime('junit:junit:4.11') -} diff --git a/dependency-injection/docs/inject-qualifier-demo-classdiagram.png b/dependency-injection/docs/inject-qualifier-demo-classdiagram.png deleted file mode 100644 index 7366999ec1..0000000000 Binary files a/dependency-injection/docs/inject-qualifier-demo-classdiagram.png and /dev/null differ diff --git a/dependency-injection/docs/inject-qualifier-demo-classdiagram.xml b/dependency-injection/docs/inject-qualifier-demo-classdiagram.xml deleted file mode 100644 index 704801bdf2..0000000000 --- a/dependency-injection/docs/inject-qualifier-demo-classdiagram.xml +++ /dev/null @@ -1 +0,0 @@ -7VptbyI3EP41SO2Hi1iWl+RjAuSuUpqml6jX+xQZ1uz6zrumXhPC/fqb8Y7ZV0IaXqpGICTWw3hsz/N4Zmxo+cP4+aNm8+h3FXDZ6rSD55Y/anU6XrvvwwdKVpmk3yZBqEVASrngXvzgridJFyLgaUnRKCWNmJeFU5UkfGpKMqa1WpbVZkqWR52z0I2YC+6nTNalX0Rgokx63unn8k9chJEb2etfZN9M2PR7qNUiofFaHX9mX9nXMXO2aKFpxAK1LIj8MfhVKwWW8Sl+HnKJvnVuy/pdb/h2PW/NE5rblg5uHmbl1s4DcAU1lTaRClXC5DiXXtn1cbTQhlZkYgmPHjzCoHr1N8lt4ys2znq2GVwiMmh1zpOHSCSZ9FrAjLIu37gxK2IDWxgFonwGN0rNaZz6KmnhqVroKa0D2pY3TIectAaZCFdY6Eae+chVzGHKoKC5ZEY8lcnAiFPhWi/3KzyQa5vdTHN5YnJBRq8Fl8GfCybFTHD9W/INaDzisarBkS5FLFmCfi94eqYS40DCNtgJwZ+jKXiEaxA8cW0EEPqSvjDovKtpJGRww1ZqgR5JDbDVta4ipcUPMMvcGPC1NoQGML+ocY89CTTNU9C5c2Bgz0x0w1IUoM5UScnmqZisJxwDLCK5UsaomJTcSpEQQyUVLAMc4PbPC6jjWrmLPc2IUhwaEAOW+abuuq0YFTd0h+LVLqCTiQLoH1qdPosRiGSS4ge0Jfo+nbMEnkN8Bj7IYMRhjwQ8ma5gQZkODFdUa/mXYPxST4TRTK/yDk4/EE9O9y3jwtQ3j1u29sIkoHNhHjVyA2yWejmxU6PVd+7gT5Ql/qzACBI5wks+QwvNdId5T0US3lidUTeXfCaoUbSMhOH3IMc5LSGfYdQBezNpg1UkAliRjXqGGZYxGOk6VyIxlh69K3gDi4YY6XqwriG0ATfXhjeqazNUCayPQT/oxmF7LDlukQZmu4Dxama71LSN2d3u7sQmEwVi14CVohqxMmBdNrUx7F+jGgMWNgMRjA82I3yw5ktQ+3WoUVSFULIJl3cqFUYotK8z3Qq0R0BvQEhtQ+98d/B6DeA1xoMQEmByCVl4KTTPU9UfiU1djw+fxrePo/Hd+HY0vh1+9R7/AoVgU9BosP/Lry9GtieVWyuFkD1MtvOmyQJjqhPb0PMU9Y4U9Qa0IbZGvT2kc48i7P+rVObPwthhzroX1MSBvLP2gJp3XAtwBlaN1vKrimuKIsXi2iP09lddU9c7pByoOEacE8Au8/nUdiayeVKvHF9wKcPhnRoxeeM4nXZlnHY21fVRaot+t505KadXNoOcbGufvIp/RL9C4G6su07HhwMcH+jbfq8MsTs9F8KP128IPxcVhr4l/NDJpXyaaNsKJstL90ZDjD8lm9cmG7efdimxG9F2erugTXntVGLvDb0eeXAbensosekusFpiwxVmtkehmDzt2GNg7vA9xo71qCTad3l4NvBwX61LRKjc/HMnqNZuhcpxIhXm2EPesHruar5QBRL3j3/F6iZTrI8SZSKuT2XSscskVxfRNvT79cy5rpZL165OuBMR6pftp0ppp7i73lq7lEqNgO8l8Nbv2U+10o74NRRLjfjtoVjymm6TT9XSf7FrG8qlw+3a+nn2M/9nAbe39kpmC8Q29W10JPoKixtMj5XM/RqsaRsjsHtIht3KdZVf31qNJek+MmH9FPlOfVy5l/HPj+jk+mnPlcrvxLveBR1tXkoOh3Gus/F+ndt3t9euciI6HcO59RPTO3Nu/Qq/KcMdyLv1Y8g7827PXWu7qDs4GHehmf8nLvvtJP/joT/+CQ== \ No newline at end of file diff --git a/dependency-injection/pom.xml b/dependency-injection/pom.xml index f87d061a53..667ea87402 100644 --- a/dependency-injection/pom.xml +++ b/dependency-injection/pom.xml @@ -1,81 +1,83 @@ - + - 4.0.0 + 4.0.0 - com.baeldung - dependency-injection - 0.0.1-SNAPSHOT - war + com.baeldung + dependency-injection + 0.0.1-SNAPSHOT + war - @Resource vs @Inject vs @Autowired - Accompanying the demonstration of the use of the annotations related to injection mechanisms, namely @Resource, @Inject, and @Autowired + Resource vs Inject vs Autowired + Accompanying the demonstration of the use of the annotations related to injection mechanisms, namely + Resource, Inject, and Autowired + - - - junit - junit - 4.11 - test - - - org.mockito - mockito-all - 1.10.19 - - - org.springframework - spring-test - 4.2.6.RELEASE - - - org.springframework - spring-core - 4.2.6.RELEASE - - - org.springframework - spring-beans - 4.2.6.RELEASE - - - org.springframework - spring-context - 4.2.6.RELEASE - - - javax.inject - javax.inject - 1 - - + + + junit + junit + 4.11 + test + + + org.mockito + mockito-all + 1.10.19 + + + org.springframework + spring-test + 4.2.6.RELEASE + + + org.springframework + spring-core + 4.2.6.RELEASE + + + org.springframework + spring-beans + 4.2.6.RELEASE + + + org.springframework + spring-context + 4.2.6.RELEASE + + + javax.inject + javax.inject + 1 + + - - - - maven-compiler-plugin - - 1.6 - 1.6 - - - - org.apache.maven.plugins - maven-surefire-plugin - - - **/*Test.java - - - - - + + + + maven-compiler-plugin + + 1.8 + 1.8 + + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*Test.java + + + + + - - - java.net - https://maven.java.net/content/repositories/releases/ - - + + + java.net + https://maven.java.net/content/repositories/releases/ + + diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java b/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java similarity index 79% rename from dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java rename to dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java index 41dfdb09e2..48c4495465 100644 --- a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java +++ b/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java @@ -4,6 +4,6 @@ import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration -@ComponentScan(basePackages={"com.baeldung.dependency"}) +@ComponentScan(basePackages = {"com.baeldung.dependency"}) public class ApplicationContextTestAutowiredName { } diff --git a/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java b/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java new file mode 100644 index 0000000000..ef6690ab4b --- /dev/null +++ b/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java @@ -0,0 +1,24 @@ +package com.baeldung.configuration; + +import com.baeldung.dependency.AnotherArbitraryDependency; +import com.baeldung.dependency.ArbitraryDependency; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class ApplicationContextTestAutowiredQualifier { + + @Bean + public ArbitraryDependency autowiredFieldDependency() { + ArbitraryDependency autowiredFieldDependency = new ArbitraryDependency(); + + return autowiredFieldDependency; + } + + @Bean + public ArbitraryDependency anotherAutowiredFieldDependency() { + ArbitraryDependency anotherAutowiredFieldDependency = new AnotherArbitraryDependency(); + + return anotherAutowiredFieldDependency; + } +} diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java b/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java similarity index 99% rename from dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java rename to dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java index 703a8214b9..240bc466b7 100644 --- a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java +++ b/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java @@ -1,10 +1,9 @@ package com.baeldung.configuration; +import com.baeldung.dependency.ArbitraryDependency; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import com.baeldung.dependency.ArbitraryDependency; - @Configuration public class ApplicationContextTestAutowiredType { diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectName.java b/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectName.java similarity index 99% rename from dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectName.java rename to dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectName.java index 7fe8306a39..851aa0b8ee 100644 --- a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectName.java +++ b/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectName.java @@ -1,10 +1,9 @@ package com.baeldung.configuration; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - import com.baeldung.dependency.ArbitraryDependency; import com.baeldung.dependency.YetAnotherArbitraryDependency; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; @Configuration public class ApplicationContextTestInjectName { diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java b/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java similarity index 50% rename from dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java rename to dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java index 557ba78aca..59af5a91bb 100644 --- a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java +++ b/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java @@ -1,23 +1,22 @@ package com.baeldung.configuration; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - import com.baeldung.dependency.AnotherArbitraryDependency; import com.baeldung.dependency.ArbitraryDependency; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; @Configuration public class ApplicationContextTestInjectQualifier { - @Bean - public ArbitraryDependency defaultFile() { - ArbitraryDependency defaultFile = new ArbitraryDependency(); - return defaultFile; - } + @Bean + public ArbitraryDependency defaultFile() { + ArbitraryDependency defaultFile = new ArbitraryDependency(); + return defaultFile; + } - @Bean - public ArbitraryDependency namedFile() { - ArbitraryDependency namedFile = new AnotherArbitraryDependency(); - return namedFile; - } + @Bean + public ArbitraryDependency namedFile() { + ArbitraryDependency namedFile = new AnotherArbitraryDependency(); + return namedFile; + } } diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectType.java b/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectType.java similarity index 60% rename from dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectType.java rename to dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectType.java index f84fa8f3a2..1e1f01f269 100644 --- a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectType.java +++ b/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectType.java @@ -1,16 +1,15 @@ package com.baeldung.configuration; +import com.baeldung.dependency.ArbitraryDependency; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import com.baeldung.dependency.ArbitraryDependency; - @Configuration public class ApplicationContextTestInjectType { - @Bean - public ArbitraryDependency injectDependency() { - ArbitraryDependency injectDependency = new ArbitraryDependency(); - return injectDependency; - } + @Bean + public ArbitraryDependency injectDependency() { + ArbitraryDependency injectDependency = new ArbitraryDependency(); + return injectDependency; + } } diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java b/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java similarity index 92% rename from dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java rename to dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java index f53002feca..cb1b5981e8 100644 --- a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java +++ b/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java @@ -1,14 +1,14 @@ package com.baeldung.configuration; -import java.io.File; - import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import java.io.File; + @Configuration public class ApplicationContextTestResourceNameType { - @Bean(name="namedFile") + @Bean(name = "namedFile") public File namedFile() { File namedFile = new File("namedFile.txt"); return namedFile; diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java b/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java similarity index 88% rename from dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java rename to dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java index 18f5af4282..c9aa2f4a7d 100644 --- a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java +++ b/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java @@ -1,20 +1,20 @@ package com.baeldung.configuration; -import java.io.File; - import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import java.io.File; + @Configuration public class ApplicationContextTestResourceQualifier { - @Bean(name="defaultFile") + @Bean(name = "defaultFile") public File defaultFile() { File defaultFile = new File("defaultFile.txt"); return defaultFile; } - @Bean(name="namedFile") + @Bean(name = "namedFile") public File namedFile() { File namedFile = new File("namedFile.txt"); return namedFile; diff --git a/dependency-injection/src/test/java/com/baeldung/dependency/AnotherArbitraryDependency.java b/dependency-injection/src/main/java/com/baeldung/dependency/AnotherArbitraryDependency.java similarity index 100% rename from dependency-injection/src/test/java/com/baeldung/dependency/AnotherArbitraryDependency.java rename to dependency-injection/src/main/java/com/baeldung/dependency/AnotherArbitraryDependency.java diff --git a/dependency-injection/src/test/java/com/baeldung/dependency/ArbitraryDependency.java b/dependency-injection/src/main/java/com/baeldung/dependency/ArbitraryDependency.java similarity index 83% rename from dependency-injection/src/test/java/com/baeldung/dependency/ArbitraryDependency.java rename to dependency-injection/src/main/java/com/baeldung/dependency/ArbitraryDependency.java index d120e8daf7..3c90492d2c 100644 --- a/dependency-injection/src/test/java/com/baeldung/dependency/ArbitraryDependency.java +++ b/dependency-injection/src/main/java/com/baeldung/dependency/ArbitraryDependency.java @@ -2,7 +2,7 @@ package com.baeldung.dependency; import org.springframework.stereotype.Component; -@Component(value="autowiredFieldDependency") +@Component(value = "autowiredFieldDependency") public class ArbitraryDependency { private final String label = "Arbitrary Dependency"; diff --git a/dependency-injection/src/test/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java b/dependency-injection/src/main/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java similarity index 100% rename from dependency-injection/src/test/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java rename to dependency-injection/src/main/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java diff --git a/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameTest.java b/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameTest.java index 0455ca500c..cbdac68543 100644 --- a/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameTest.java +++ b/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameTest.java @@ -1,8 +1,7 @@ package com.baeldung.autowired; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - +import com.baeldung.configuration.ApplicationContextTestAutowiredName; +import com.baeldung.dependency.ArbitraryDependency; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -10,22 +9,21 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.configuration.ApplicationContextTestAutowiredName; -import com.baeldung.dependency.ArbitraryDependency; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( - loader=AnnotationConfigContextLoader.class, - classes=ApplicationContextTestAutowiredName.class) + loader = AnnotationConfigContextLoader.class, + classes = ApplicationContextTestAutowiredName.class) public class FieldAutowiredNameTest { @Autowired private ArbitraryDependency autowiredFieldDependency; @Test - public void givenAutowiredAnnotation_WhenOnField_ThenDependencyValid(){ + public void givenAutowiredAnnotation_WhenOnField_ThenDependencyValid() { assertNotNull(autowiredFieldDependency); - assertEquals("Arbitrary Dependency", - autowiredFieldDependency.toString()); - } + assertEquals("Arbitrary Dependency", autowiredFieldDependency.toString()); + } } diff --git a/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredTest.java b/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredTest.java index 811daebaf6..b736871f85 100644 --- a/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredTest.java +++ b/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredTest.java @@ -1,8 +1,7 @@ package com.baeldung.autowired; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - +import com.baeldung.configuration.ApplicationContextTestAutowiredType; +import com.baeldung.dependency.ArbitraryDependency; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -10,13 +9,13 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.configuration.ApplicationContextTestAutowiredType; -import com.baeldung.dependency.ArbitraryDependency; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( - loader=AnnotationConfigContextLoader.class, - classes=ApplicationContextTestAutowiredType.class) + loader = AnnotationConfigContextLoader.class, + classes = ApplicationContextTestAutowiredType.class) public class FieldAutowiredTest { @Autowired diff --git a/dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredTest.java b/dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredTest.java index d72d38e9a8..cbc3d56f67 100644 --- a/dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredTest.java +++ b/dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredTest.java @@ -1,8 +1,7 @@ package com.baeldung.autowired; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - +import com.baeldung.configuration.ApplicationContextTestAutowiredQualifier; +import com.baeldung.dependency.ArbitraryDependency; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -11,13 +10,13 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.configuration.ApplicationContextTestAutowiredQualifier; -import com.baeldung.dependency.ArbitraryDependency; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( - loader=AnnotationConfigContextLoader.class, - classes=ApplicationContextTestAutowiredQualifier.class) + loader = AnnotationConfigContextLoader.class, + classes = ApplicationContextTestAutowiredQualifier.class) public class FieldQualifierAutowiredTest { @Autowired @@ -29,15 +28,14 @@ public class FieldQualifierAutowiredTest { private ArbitraryDependency fieldDependency2; @Test - public void givenAutowiredQualifier_WhenOnField_ThenDep1Valid(){ + public void givenAutowiredQualifier_WhenOnField_ThenDep1Valid() { assertNotNull(fieldDependency1); assertEquals("Arbitrary Dependency", fieldDependency1.toString()); } @Test - public void givenAutowiredQualifier_WhenOnField_ThenDep2Valid(){ + public void givenAutowiredQualifier_WhenOnField_ThenDep2Valid() { assertNotNull(fieldDependency2); - assertEquals("Another Arbitrary Dependency", - fieldDependency2.toString()); + assertEquals("Another Arbitrary Dependency", fieldDependency2.toString()); } } diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java deleted file mode 100644 index 138fbc46c5..0000000000 --- a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.baeldung.configuration; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import com.baeldung.dependency.AnotherArbitraryDependency; -import com.baeldung.dependency.ArbitraryDependency; - -@Configuration -public class ApplicationContextTestAutowiredQualifier { - - @Bean - public ArbitraryDependency autowiredFieldDependency() { - ArbitraryDependency autowiredFieldDependency = new ArbitraryDependency(); - - return autowiredFieldDependency; - } - - @Bean - public ArbitraryDependency anotherAutowiredFieldDependency() { - ArbitraryDependency anotherAutowiredFieldDependency = new AnotherArbitraryDependency(); - - return anotherAutowiredFieldDependency; - } -} diff --git a/dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectTest.java b/dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectTest.java index 0f0429ea94..665c9f1ddc 100644 --- a/dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectTest.java +++ b/dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectTest.java @@ -1,24 +1,23 @@ package com.baeldung.inject; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import javax.inject.Inject; -import javax.inject.Named; - +import com.baeldung.configuration.ApplicationContextTestInjectName; +import com.baeldung.dependency.ArbitraryDependency; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.configuration.ApplicationContextTestInjectName; -import com.baeldung.dependency.ArbitraryDependency; +import javax.inject.Inject; +import javax.inject.Named; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( - loader=AnnotationConfigContextLoader.class, - classes=ApplicationContextTestInjectName.class) + loader = AnnotationConfigContextLoader.class, + classes = ApplicationContextTestInjectName.class) public class FieldByNameInjectTest { @Inject @@ -28,7 +27,6 @@ public class FieldByNameInjectTest { @Test public void givenInjectQualifier_WhenSetOnField_ThenDependencyValid() { assertNotNull(yetAnotherFieldInjectDependency); - assertEquals("Yet Another Arbitrary Dependency", - yetAnotherFieldInjectDependency.toString()); + assertEquals("Yet Another Arbitrary Dependency", yetAnotherFieldInjectDependency.toString()); } } diff --git a/dependency-injection/src/test/java/com/baeldung/inject/FieldInjectTest.java b/dependency-injection/src/test/java/com/baeldung/inject/FieldInjectTest.java index 7cbba63113..7561c39e76 100644 --- a/dependency-injection/src/test/java/com/baeldung/inject/FieldInjectTest.java +++ b/dependency-injection/src/test/java/com/baeldung/inject/FieldInjectTest.java @@ -1,31 +1,30 @@ package com.baeldung.inject; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import javax.inject.Inject; +import com.baeldung.configuration.ApplicationContextTestInjectType; +import com.baeldung.dependency.ArbitraryDependency; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.configuration.ApplicationContextTestInjectType; -import com.baeldung.dependency.ArbitraryDependency; +import javax.inject.Inject; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( - loader=AnnotationConfigContextLoader.class, - classes=ApplicationContextTestInjectType.class) + loader = AnnotationConfigContextLoader.class, + classes = ApplicationContextTestInjectType.class) public class FieldInjectTest { @Inject private ArbitraryDependency fieldInjectDependency; @Test - public void givenInjectAnnotation_WhenOnField_ThenValidDependency(){ + public void givenInjectAnnotation_WhenOnField_ThenValidDependency() { assertNotNull(fieldInjectDependency); - assertEquals("Arbitrary Dependency", - fieldInjectDependency.toString()); + assertEquals("Arbitrary Dependency", fieldInjectDependency.toString()); } } diff --git a/dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectTest.java b/dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectTest.java index f0fc5866a3..7e5f7e7453 100644 --- a/dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectTest.java +++ b/dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectTest.java @@ -1,10 +1,7 @@ package com.baeldung.inject; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import javax.inject.Inject; - +import com.baeldung.configuration.ApplicationContextTestInjectQualifier; +import com.baeldung.dependency.ArbitraryDependency; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Qualifier; @@ -12,12 +9,14 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.configuration.ApplicationContextTestInjectQualifier; -import com.baeldung.dependency.ArbitraryDependency; +import javax.inject.Inject; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(loader=AnnotationConfigContextLoader.class, - classes=ApplicationContextTestInjectQualifier.class) +@ContextConfiguration(loader = AnnotationConfigContextLoader.class, + classes = ApplicationContextTestInjectQualifier.class) public class FieldQualifierInjectTest { @Inject @@ -29,16 +28,14 @@ public class FieldQualifierInjectTest { private ArbitraryDependency namedDependency; @Test - public void givenInjectQualifier_WhenOnField_ThenDefaultFileValid(){ + public void givenInjectQualifier_WhenOnField_ThenDefaultFileValid() { assertNotNull(defaultDependency); - assertEquals("Arbitrary Dependency", - defaultDependency.toString()); + assertEquals("Arbitrary Dependency", defaultDependency.toString()); } @Test - public void givenInjectQualifier_WhenOnField_ThenNamedFileValid(){ + public void givenInjectQualifier_WhenOnField_ThenNamedFileValid() { assertNotNull(defaultDependency); - assertEquals("Another Arbitrary Dependency", - namedDependency.toString()); + assertEquals("Another Arbitrary Dependency", namedDependency.toString()); } } diff --git a/dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionTest.java b/dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionTest.java index ed73ae8d59..ef7e7b0aeb 100644 --- a/dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionTest.java +++ b/dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionTest.java @@ -1,30 +1,29 @@ package com.baeldung.resource; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.io.File; - -import javax.annotation.Resource; +import com.baeldung.configuration.ApplicationContextTestResourceNameType; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.configuration.ApplicationContextTestResourceNameType; +import javax.annotation.Resource; +import java.io.File; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( - loader=AnnotationConfigContextLoader.class, - classes=ApplicationContextTestResourceNameType.class) + loader = AnnotationConfigContextLoader.class, + classes = ApplicationContextTestResourceNameType.class) public class FieldResourceInjectionTest { - @Resource(name="namedFile") + @Resource(name = "namedFile") private File defaultFile; @Test - public void givenResourceAnnotation_WhenOnField_ThenDependencyValid(){ + public void givenResourceAnnotation_WhenOnField_ThenDependencyValid() { assertNotNull(defaultFile); assertEquals("namedFile.txt", defaultFile.getName()); } diff --git a/dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceTest.java b/dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceTest.java index e512b6fe0a..95e9fc0bd5 100644 --- a/dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceTest.java +++ b/dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceTest.java @@ -1,12 +1,6 @@ package com.baeldung.resource; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.io.File; - -import javax.annotation.Resource; - +import com.baeldung.configuration.ApplicationContextTestResourceQualifier; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Qualifier; @@ -14,34 +8,38 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.configuration.ApplicationContextTestResourceQualifier; +import javax.annotation.Resource; +import java.io.File; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( - loader=AnnotationConfigContextLoader.class, - classes=ApplicationContextTestResourceQualifier.class) + loader = AnnotationConfigContextLoader.class, + classes = ApplicationContextTestResourceQualifier.class) public class MethodByQualifierResourceTest { - private File arbDependency; - private File anotherArbDependency; + private File arbDependency; + private File anotherArbDependency; - @Test - public void givenResourceQualifier_WhenSetter_ThenValidDependencies(){ - assertNotNull(arbDependency); - assertEquals("namedFile.txt", arbDependency.getName()); - assertNotNull(anotherArbDependency); - assertEquals("defaultFile.txt", anotherArbDependency.getName()); - } + @Test + public void givenResourceQualifier_WhenSetter_ThenValidDependencies() { + assertNotNull(arbDependency); + assertEquals("namedFile.txt", arbDependency.getName()); + assertNotNull(anotherArbDependency); + assertEquals("defaultFile.txt", anotherArbDependency.getName()); + } - @Resource - @Qualifier("namedFile") - public void setArbDependency(File arbDependency) { - this.arbDependency = arbDependency; - } + @Resource + @Qualifier("namedFile") + public void setArbDependency(File arbDependency) { + this.arbDependency = arbDependency; + } - @Resource - @Qualifier("defaultFile") - public void setAnotherArbDependency(File anotherArbDependency) { - this.anotherArbDependency = anotherArbDependency; - } + @Resource + @Qualifier("defaultFile") + public void setAnotherArbDependency(File anotherArbDependency) { + this.anotherArbDependency = anotherArbDependency; + } } diff --git a/dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceTest.java b/dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceTest.java index edcf9b12ea..ad9a9a4fb6 100644 --- a/dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceTest.java +++ b/dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceTest.java @@ -1,24 +1,22 @@ package com.baeldung.resource; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.io.File; - -import javax.annotation.Resource; - +import com.baeldung.configuration.ApplicationContextTestResourceNameType; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.configuration.ApplicationContextTestResourceNameType; +import javax.annotation.Resource; +import java.io.File; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( - loader=AnnotationConfigContextLoader.class, - classes=ApplicationContextTestResourceNameType.class) + loader = AnnotationConfigContextLoader.class, + classes = ApplicationContextTestResourceNameType.class) public class MethodByTypeResourceTest { private File defaultFile; @@ -29,7 +27,7 @@ public class MethodByTypeResourceTest { } @Test - public void givenResourceAnnotation_WhenSetter_ThenValidDependency(){ + public void givenResourceAnnotation_WhenSetter_ThenValidDependency() { assertNotNull(defaultFile); assertEquals("namedFile.txt", defaultFile.getName()); } diff --git a/dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionTest.java b/dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionTest.java index 38e9db8737..1622d8896c 100644 --- a/dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionTest.java +++ b/dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionTest.java @@ -1,35 +1,33 @@ package com.baeldung.resource; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.io.File; - -import javax.annotation.Resource; - +import com.baeldung.configuration.ApplicationContextTestResourceNameType; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.configuration.ApplicationContextTestResourceNameType; +import javax.annotation.Resource; +import java.io.File; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( - loader=AnnotationConfigContextLoader.class, - classes=ApplicationContextTestResourceNameType.class) + loader = AnnotationConfigContextLoader.class, + classes = ApplicationContextTestResourceNameType.class) public class MethodResourceInjectionTest { private File defaultFile; - @Resource(name="namedFile") + @Resource(name = "namedFile") protected void setDefaultFile(File defaultFile) { this.defaultFile = defaultFile; } @Test - public void givenResourceAnnotation_WhenSetter_ThenDependencyValid(){ + public void givenResourceAnnotation_WhenSetter_ThenDependencyValid() { assertNotNull(defaultFile); assertEquals("namedFile.txt", defaultFile.getName()); } diff --git a/dependency-injection/src/test/java/com/baeldung/resource/NamedResourceTest.java b/dependency-injection/src/test/java/com/baeldung/resource/NamedResourceTest.java index 6dbe77da39..da104ecaae 100644 --- a/dependency-injection/src/test/java/com/baeldung/resource/NamedResourceTest.java +++ b/dependency-injection/src/test/java/com/baeldung/resource/NamedResourceTest.java @@ -1,25 +1,24 @@ package com.baeldung.resource; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.io.File; - -import javax.annotation.Resource; +import com.baeldung.configuration.ApplicationContextTestResourceNameType; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.configuration.ApplicationContextTestResourceNameType; +import javax.annotation.Resource; +import java.io.File; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(loader=AnnotationConfigContextLoader.class, - classes=ApplicationContextTestResourceNameType.class) +@ContextConfiguration(loader = AnnotationConfigContextLoader.class, + classes = ApplicationContextTestResourceNameType.class) public class NamedResourceTest { - @Resource(name="namedFile") + @Resource(name = "namedFile") private File testFile; @Test diff --git a/dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionTest.java b/dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionTest.java index 9afa0cf4f9..024c8e2bbe 100644 --- a/dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionTest.java +++ b/dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionTest.java @@ -1,11 +1,6 @@ package com.baeldung.resource; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.io.File; - -import javax.annotation.Resource; +import com.baeldung.configuration.ApplicationContextTestResourceQualifier; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Qualifier; @@ -13,30 +8,34 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.configuration.ApplicationContextTestResourceQualifier; +import javax.annotation.Resource; +import java.io.File; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( - loader=AnnotationConfigContextLoader.class, - classes=ApplicationContextTestResourceQualifier.class) + loader = AnnotationConfigContextLoader.class, + classes = ApplicationContextTestResourceQualifier.class) public class QualifierResourceInjectionTest { @Resource @Qualifier("defaultFile") private File dependency1; - + @Resource @Qualifier("namedFile") private File dependency2; @Test - public void givenResourceAnnotation_WhenField_ThenDependency1Valid(){ + public void givenResourceAnnotation_WhenField_ThenDependency1Valid() { assertNotNull(dependency1); assertEquals("defaultFile.txt", dependency1.getName()); } @Test - public void givenResourceQualifier_WhenField_ThenDependency2Valid(){ + public void givenResourceQualifier_WhenField_ThenDependency2Valid() { assertNotNull(dependency2); assertEquals("namedFile.txt", dependency2.getName()); } diff --git a/dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionTest.java b/dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionTest.java index 8a249fea4e..aa7cfda975 100644 --- a/dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionTest.java +++ b/dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionTest.java @@ -1,23 +1,21 @@ package com.baeldung.resource; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.io.File; - -import javax.annotation.Resource; - +import com.baeldung.configuration.ApplicationContextTestResourceNameType; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.configuration.ApplicationContextTestResourceNameType; +import javax.annotation.Resource; +import java.io.File; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(loader=AnnotationConfigContextLoader.class, - classes=ApplicationContextTestResourceNameType.class) +@ContextConfiguration(loader = AnnotationConfigContextLoader.class, + classes = ApplicationContextTestResourceNameType.class) public class SetterResourceInjectionTest { private File defaultFile; diff --git a/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Name.xml b/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Name.xml deleted file mode 100644 index d7fe3abcb3..0000000000 --- a/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Name.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Qualifier.xml b/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Qualifier.xml deleted file mode 100644 index d7fe3abcb3..0000000000 --- a/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Qualifier.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Type.xml b/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Type.xml deleted file mode 100644 index c65b85ccf4..0000000000 --- a/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Type.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - diff --git a/dependency-injection/src/test/resources/applicationContextTest-@Inject-Name.xml b/dependency-injection/src/test/resources/applicationContextTest-@Inject-Name.xml deleted file mode 100644 index 610e8687a7..0000000000 --- a/dependency-injection/src/test/resources/applicationContextTest-@Inject-Name.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/dependency-injection/src/test/resources/applicationContextTest-@Inject-Qualifier.xml b/dependency-injection/src/test/resources/applicationContextTest-@Inject-Qualifier.xml deleted file mode 100644 index 627ec37914..0000000000 --- a/dependency-injection/src/test/resources/applicationContextTest-@Inject-Qualifier.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/dependency-injection/src/test/resources/applicationContextTest-@Inject-Type.xml b/dependency-injection/src/test/resources/applicationContextTest-@Inject-Type.xml deleted file mode 100644 index 405164e603..0000000000 --- a/dependency-injection/src/test/resources/applicationContextTest-@Inject-Type.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - diff --git a/dependency-injection/src/test/resources/applicationContextTest-@Resource-NameType.xml b/dependency-injection/src/test/resources/applicationContextTest-@Resource-NameType.xml deleted file mode 100644 index 82cbe97157..0000000000 --- a/dependency-injection/src/test/resources/applicationContextTest-@Resource-NameType.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/dependency-injection/src/test/resources/applicationContextTest-@Resource-Qualifier.xml b/dependency-injection/src/test/resources/applicationContextTest-@Resource-Qualifier.xml deleted file mode 100644 index 1680a6f66a..0000000000 --- a/dependency-injection/src/test/resources/applicationContextTest-@Resource-Qualifier.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - diff --git a/guava/src/test/java/org/baeldung/hamcrest/Animal.java b/guava/src/test/java/org/baeldung/hamcrest/Animal.java new file mode 100644 index 0000000000..1a0266f5a3 --- /dev/null +++ b/guava/src/test/java/org/baeldung/hamcrest/Animal.java @@ -0,0 +1,33 @@ +package org.baeldung.hamcrest; + +public class Animal { + String name; + boolean wild; + String sound; + + public Animal(String name, boolean wild, String sound) { + super(); + this.name = name; + this.wild = wild; + this.sound = sound; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public boolean isWild() { + return wild; + } + public void setWild(boolean wild) { + this.wild = wild; + } + public String getSound() { + return sound; + } + public void setSound(String sound) { + this.sound = sound; + } + +} diff --git a/guava/src/test/java/org/baeldung/hamcrest/Cat.java b/guava/src/test/java/org/baeldung/hamcrest/Cat.java new file mode 100644 index 0000000000..892e5b6e30 --- /dev/null +++ b/guava/src/test/java/org/baeldung/hamcrest/Cat.java @@ -0,0 +1,13 @@ +package org.baeldung.hamcrest; + +public class Cat extends Animal { + + public Cat() { + super("cat", false, "meow"); + } + + public String makeSound() { + return getSound(); + } + +} diff --git a/guava/src/test/java/org/baeldung/hamcrest/HamcrestMatcherTest.java b/guava/src/test/java/org/baeldung/hamcrest/HamcrestMatcherTest.java new file mode 100644 index 0000000000..b3756d609f --- /dev/null +++ b/guava/src/test/java/org/baeldung/hamcrest/HamcrestMatcherTest.java @@ -0,0 +1,331 @@ +package org.baeldung.hamcrest; + +import org.junit.Test; + +import java.util.*; + +import static org.baeldung.hamcrest.IsPositiveInteger.isAPositiveInteger; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.*; +import static org.hamcrest.beans.HasProperty.hasProperty; +import static org.hamcrest.beans.HasPropertyWithValue.hasProperty; +import static org.hamcrest.beans.SamePropertyValuesAs.samePropertyValuesAs; +import static org.hamcrest.collection.IsArrayContaining.hasItemInArray; +import static org.hamcrest.collection.IsArrayContainingInAnyOrder.arrayContainingInAnyOrder; +import static org.hamcrest.collection.IsArrayContainingInOrder.arrayContaining; +import static org.hamcrest.collection.IsArrayWithSize.arrayWithSize; +import static org.hamcrest.collection.IsCollectionWithSize.hasSize; +import static org.hamcrest.collection.IsEmptyCollection.empty; +import static org.hamcrest.collection.IsIn.isIn; +import static org.hamcrest.collection.IsIn.isOneOf; +import static org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInAnyOrder; +import static org.hamcrest.collection.IsIterableContainingInOrder.contains; +import static org.hamcrest.collection.IsMapContaining.hasEntry; +import static org.hamcrest.collection.IsMapContaining.hasKey; +import static org.hamcrest.collection.IsMapContaining.hasValue; +import static org.hamcrest.core.AllOf.allOf; +import static org.hamcrest.core.AnyOf.anyOf; +import static org.hamcrest.core.Every.everyItem; +import static org.hamcrest.core.Is.is; +import static org.hamcrest.core.IsInstanceOf.instanceOf; +import static org.hamcrest.core.IsNot.not; +import static org.hamcrest.core.IsNull.notNullValue; +import static org.hamcrest.core.IsSame.sameInstance; +import static org.hamcrest.core.StringContains.containsString; +import static org.hamcrest.core.StringEndsWith.endsWith; +import static org.hamcrest.core.StringStartsWith.startsWith; +import static org.hamcrest.object.HasToString.hasToString; +import static org.hamcrest.object.IsCompatibleType.typeCompatibleWith; +import static org.hamcrest.text.IsEmptyString.isEmptyOrNullString; +import static org.hamcrest.text.IsEmptyString.isEmptyString; +import static org.hamcrest.text.IsEqualIgnoringCase.equalToIgnoringCase; +import static org.hamcrest.text.IsEqualIgnoringWhiteSpace.equalToIgnoringWhiteSpace; +import static org.hamcrest.text.StringContainsInOrder.stringContainsInOrder; + +public class HamcrestMatcherTest { + @Test + public void given2Strings_whenEqual_thenCorrect() { + String a = "foo"; + String b = "FOO"; + assertThat(a, equalToIgnoringCase(b)); + } + + @Test + public void givenBean_whenHasValue_thenCorrect() { + Person person = new Person("Baeldung", "New York"); + assertThat(person, hasProperty("name")); + } + + @Test + public void givenBean_whenHasCorrectValue_thenCorrect() { + Person person = new Person("Baeldung", "New York"); + assertThat(person, hasProperty("address", equalTo("New York"))); + } + + @Test + public void given2Beans_whenHavingSameValues_thenCorrect() { + Person person1 = new Person("Baeldung", "New York"); + Person person2 = new Person("Baeldung", "New York"); + assertThat(person1, samePropertyValuesAs(person2)); + } + + @Test + public void givenAList_whenChecksSize_thenCorrect() { + List hamcrestMatchers = Arrays.asList("collections", "beans", + "text", "number"); + assertThat(hamcrestMatchers, hasSize(4)); + } + + @Test + public void givenArray_whenChecksSize_thenCorrect() { + String[] hamcrestMatchers = { "collections", "beans", "text", "number" }; + assertThat(hamcrestMatchers, arrayWithSize(4)); + } + + @Test + public void givenAListAndValues_whenChecksListForGivenValues_thenCorrect() { + List hamcrestMatchers = Arrays.asList("collections", "beans", + "text", "number"); + assertThat(hamcrestMatchers, + containsInAnyOrder("beans", "text", "collections", "number")); + } + + @Test + public void givenAListAndValues_whenChecksListForGivenValuesWithOrder_thenCorrect() { + List hamcrestMatchers = Arrays.asList("collections", "beans", + "text", "number"); + assertThat(hamcrestMatchers, + contains("collections", "beans", "text", "number")); + } + + @Test + public void givenArrayAndValue_whenValueFoundInArray_thenCorrect() { + String[] hamcrestMatchers = { "collections", "beans", "text", "number" }; + assertThat(hamcrestMatchers, hasItemInArray("text")); + + } + + @Test + public void givenValueAndArray_whenValueIsOneOfArrayElements_thenCorrect() { + String[] hamcrestMatchers = { "collections", "beans", "text", "number" }; + assertThat("text", isOneOf(hamcrestMatchers)); + + } + + @Test + public void givenArrayAndValues_whenValuesFoundInArray_thenCorrect() { + String[] hamcrestMatchers = { "collections", "beans", "text", "number" }; + assertThat( + hamcrestMatchers, + arrayContainingInAnyOrder("beans", "collections", "number", + "text")); + + } + + @Test + public void givenArrayAndValues_whenValuesFoundInArrayInOrder_thenCorrect() { + String[] hamcrestMatchers = { "collections", "beans", "text", "number" }; + assertThat(hamcrestMatchers, + arrayContaining("collections", "beans", "text", "number")); + + } + + @Test + public void givenCollection_whenEmpty_thenCorrect() { + List emptyList = new ArrayList<>(); + assertThat(emptyList, empty()); + + } + + @Test + public void givenValueAndArray_whenValueFoundInArray_thenCorrect() { + String[] array = new String[] { "collections", "beans", "text", + "number" }; + assertThat("beans", isIn(array)); + + } + + @Test + public void givenMapAndKey_whenKeyFoundInMap_thenCorrect() { + Map map = new HashMap<>(); + map.put("blogname", "baeldung"); + assertThat(map, hasKey("blogname")); + } + + @Test + public void givenMapAndEntry_whenEntryFoundInMap_thenCorrect() { + Map map = new HashMap<>(); + map.put("blogname", "baeldung"); + assertThat(map, hasEntry("blogname", "baeldung")); + } + + @Test + public void givenMapAndValue_whenValueFoundInMap_thenCorrect() { + Map map = new HashMap<>(); + map.put("blogname", "baeldung"); + assertThat(map, hasValue("baeldung")); + } + + @Test + public void givenString_whenEmpty_thenCorrect() { + String str = ""; + assertThat(str, isEmptyString()); + } + + @Test + public void givenString_whenEmptyOrNull_thenCorrect() { + String str = null; + assertThat(str, isEmptyOrNullString()); + } + + @Test + public void given2Strings_whenEqualRegardlessWhiteSpace_thenCorrect() { + String str1 = "text"; + String str2 = " text "; + assertThat(str1, equalToIgnoringWhiteSpace(str2)); + } + + @Test + public void givenString_whenContainsGivenSubstring_thenCorrect() { + String str = "calligraphy"; + assertThat(str, stringContainsInOrder(Arrays.asList("call", "graph"))); + } + + @Test + public void givenBean_whenToStringReturnsRequiredString_thenCorrect() { + Person person = new Person("Barrack", "Washington"); + String str = person.toString(); + assertThat(person, hasToString(str)); + } + + @Test + public void given2Classes_whenOneInheritsFromOther_thenCorrect() { + assertThat(Cat.class, typeCompatibleWith(Animal.class)); + } + + + @Test + public void given2Strings_whenIsEqualRegardlessWhiteSpace_thenCorrect() { + String str1 = "text"; + String str2 = " text "; + assertThat(str1, is(equalToIgnoringWhiteSpace(str2))); + } + + @Test + public void given2Strings_whenIsNotEqualRegardlessWhiteSpace_thenCorrect() { + String str1 = "text"; + String str2 = " texts "; + assertThat(str1, not(equalToIgnoringWhiteSpace(str2))); + } + + @Test + public void given2Strings_whenNotEqual_thenCorrect() { + String str1 = "text"; + String str2 = "texts"; + assertThat(str1, not(str2)); + } + + @Test + public void given2Strings_whenIsEqual_thenCorrect() { + String str1 = "text"; + String str2 = "text"; + assertThat(str1, is(str2)); + } + + @Test + public void givenAStrings_whenContainsAnotherGivenString_thenCorrect() { + String str1 = "calligraphy"; + String str2 = "call"; + assertThat(str1, containsString(str2)); + } + + @Test + public void givenAString_whenEndsWithAnotherGivenString_thenCorrect() { + String str1 = "calligraphy"; + String str2 = "phy"; + assertThat(str1, endsWith(str2)); + } + + @Test + public void givenAString_whenStartsWithAnotherGivenString_thenCorrect() { + String str1 = "calligraphy"; + String str2 = "call"; + assertThat(str1, startsWith(str2)); + } + + @Test + public void given2Objects_whenSameInstance_thenCorrect() { + Cat cat = new Cat(); + assertThat(cat, sameInstance(cat)); + } + + @Test + public void givenAnObject_whenInstanceOfGivenClass_thenCorrect() { + Cat cat = new Cat(); + assertThat(cat, instanceOf(Cat.class)); + } + + @Test + public void givenList_whenEachElementGreaterThan0_thenCorrect() { + List list = Arrays.asList(1, 2, 3); + int baseCase = 0; + assertThat(list, everyItem(greaterThan(baseCase))); + } + + @Test + public void givenString_whenNotNull_thenCorrect() { + String str = "notnull"; + assertThat(str, notNullValue()); + } + + @Test + public void givenString_whenMeetsAnyOfGivenConditions_thenCorrect() { + String str = "calligraphy"; + String start = "call"; + String end = "foo"; + assertThat(str, anyOf(startsWith(start), containsString(end))); + } + + @Test + public void givenString_whenMeetsAllOfGivenConditions_thenCorrect() { + String str = "calligraphy"; + String start = "call"; + String end = "phy"; + assertThat(str, allOf(startsWith(start), endsWith(end))); + } + + @Test + public void givenInteger_whenAPositiveValue_thenCorrect() { + int num = 1; + assertThat(num, isAPositiveInteger()); + } + + @Test + public void givenAnInteger_whenGreaterThan0_thenCorrect() { + int num = 1; + assertThat(num, greaterThan(0)); + } + + @Test + public void givenAnInteger_whenGreaterThanOrEqTo5_thenCorrect() { + int num = 5; + assertThat(num, greaterThanOrEqualTo(5)); + } + + @Test + public void givenAnInteger_whenLessThan0_thenCorrect() { + int num = -1; + assertThat(num, lessThan(0)); + } + + @Test + public void givenAnInteger_whenLessThanOrEqTo5_thenCorrect() { + assertThat(-1, lessThanOrEqualTo(5)); + } + + @Test + public void givenADouble_whenCloseTo_thenCorrect() { + assertThat(1.2, closeTo(1, 0.5)); + } + +} diff --git a/guava/src/test/java/org/baeldung/hamcrest/IsPositiveInteger.java b/guava/src/test/java/org/baeldung/hamcrest/IsPositiveInteger.java new file mode 100644 index 0000000000..0d8d262538 --- /dev/null +++ b/guava/src/test/java/org/baeldung/hamcrest/IsPositiveInteger.java @@ -0,0 +1,24 @@ +package org.baeldung.hamcrest; + +import org.hamcrest.Description; +import org.hamcrest.Factory; +import org.hamcrest.Matcher; +import org.hamcrest.TypeSafeMatcher; + +public class IsPositiveInteger extends TypeSafeMatcher { + + public void describeTo(Description description) { + description.appendText("a positive integer"); + } + + @Factory + public static Matcher isAPositiveInteger() { + return new IsPositiveInteger(); + } + + @Override + protected boolean matchesSafely(Integer integer) { + return integer > 0; + } + +} diff --git a/guava/src/test/java/org/baeldung/hamcrest/Person.java b/guava/src/test/java/org/baeldung/hamcrest/Person.java new file mode 100644 index 0000000000..0053c98043 --- /dev/null +++ b/guava/src/test/java/org/baeldung/hamcrest/Person.java @@ -0,0 +1,37 @@ +package org.baeldung.hamcrest; + +public class Person { + String name; + String address; + + public Person(String personName, String personAddress) { + name = personName; + address = personAddress; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + @Override + public String toString() { + String str="[address:"+address+",name:"+name+"]"; + return str; + } + + + + +} diff --git a/jsf/pom.xml b/jsf/pom.xml index c4801996de..b5fbae4cf0 100644 --- a/jsf/pom.xml +++ b/jsf/pom.xml @@ -25,6 +25,12 @@ jsf-impl ${com.sun.faces.version} + + javax.el + el-api + ${javax.el.version} + + @@ -114,6 +120,7 @@ 2.1.7 + 2.2 1.7.13 diff --git a/jsf/src/main/java/com/baeldung/springintegration/controllers/ELSampleBean.java b/jsf/src/main/java/com/baeldung/springintegration/controllers/ELSampleBean.java new file mode 100644 index 0000000000..a13f0890b5 --- /dev/null +++ b/jsf/src/main/java/com/baeldung/springintegration/controllers/ELSampleBean.java @@ -0,0 +1,110 @@ +package com.baeldung.springintegration.controllers; + +import java.util.Random; +import javax.annotation.PostConstruct; +import javax.faces.application.Application; +import javax.faces.application.FacesMessage; +import javax.faces.bean.ManagedBean; +import javax.faces.bean.ViewScoped; +import javax.faces.component.html.HtmlInputText; +import javax.faces.context.FacesContext; + +@ManagedBean(name = "ELBean") +@ViewScoped +public class ELSampleBean { + + private String firstName; + private String lastName; + private String pageDescription = "This page demos JSF EL Basics"; + private int pageCounter; + private Random randomIntGen = new Random(); + + @PostConstruct + public void init() { + pageCounter = randomIntGen.nextInt(); + } + + public void save() { + + } + + public void saveFirstName(String firstName) { + this.firstName = firstName; + } + + + public void saveByELEvaluation() { + firstName = (String) evaluateEL("#{firstName.value}", String.class); + FacesContext ctx = FacesContext.getCurrentInstance(); + FacesMessage theMessage = new FacesMessage("Name component Evaluated: " + firstName); + theMessage.setSeverity(FacesMessage.SEVERITY_INFO); + ctx.addMessage(null, theMessage); + + } + + private Object evaluateEL(String elExpression, Class clazz) { + Object toReturn = null; + FacesContext ctx = FacesContext.getCurrentInstance(); + Application app = ctx.getApplication(); + toReturn = app.evaluateExpressionGet(ctx, elExpression, clazz); + + return toReturn; + + } + + /** + * @return the firstName + */ + public String getFirstName() { + return firstName; + } + + /** + * @param firstName the firstName to set + */ + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + /** + * @return the lastName + */ + public String getLastName() { + return lastName; + } + + /** + * @param lastName the lastName to set + */ + public void setLastName(String lastName) { + this.lastName = lastName; + } + + /** + * @return the pageDescription + */ + public String getPageDescription() { + return pageDescription; + } + + /** + * @param pageDescription the pageDescription to set + */ + public void setPageDescription(String pageDescription) { + this.pageDescription = pageDescription; + } + + /** + * @return the pageCounter + */ + public int getPageCounter() { + return pageCounter; + } + + /** + * @param pageCounter the pageCounter to set + */ + public void setPageCounter(int pageCounter) { + this.pageCounter = pageCounter; + } +} diff --git a/jsf/src/main/webapp/el_intro.xhtml b/jsf/src/main/webapp/el_intro.xhtml new file mode 100644 index 0000000000..3b58d6288d --- /dev/null +++ b/jsf/src/main/webapp/el_intro.xhtml @@ -0,0 +1,38 @@ + + + + + Baeldung | The EL Intro + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/jmockit/README.md b/mocks/jmockit/README.md new file mode 100644 index 0000000000..c310463c26 --- /dev/null +++ b/mocks/jmockit/README.md @@ -0,0 +1,7 @@ +========= + +## JMockit related tutorials + + +### Relevant Articles: +- [JMockit 101](http://www.baeldung.com/jmockit-101) diff --git a/mocks/jmockit/pom.xml b/mocks/jmockit/pom.xml new file mode 100644 index 0000000000..8b03313a51 --- /dev/null +++ b/mocks/jmockit/pom.xml @@ -0,0 +1,68 @@ + + 4.0.0 + + + com.baeldung + mocks + 1.0.0-SNAPSHOT + ../pom.xml + + + jmockit + jmockit + + + 4.12 + 1.24 + + + 3.3 + 2.18.1 + + + + + junit + junit + ${junit.version} + test + + + + org.jmockit + jmockit + ${jmockit.version} + test + + + + + jmockit + + + src/main/resources + true + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + + + \ No newline at end of file diff --git a/mocks/jmockit/src/main/java/org/baeldung/mocks/jmockit/Collaborator.java b/mocks/jmockit/src/main/java/org/baeldung/mocks/jmockit/Collaborator.java new file mode 100644 index 0000000000..ef271b9aff --- /dev/null +++ b/mocks/jmockit/src/main/java/org/baeldung/mocks/jmockit/Collaborator.java @@ -0,0 +1,10 @@ +package org.baeldung.mocks.jmockit; + +public class Collaborator { + public boolean collaborate(String string){ + return false; + } + public void receive(boolean bool){ + //NOOP + } +} diff --git a/mocks/jmockit/src/main/java/org/baeldung/mocks/jmockit/Model.java b/mocks/jmockit/src/main/java/org/baeldung/mocks/jmockit/Model.java new file mode 100644 index 0000000000..54249dcd1d --- /dev/null +++ b/mocks/jmockit/src/main/java/org/baeldung/mocks/jmockit/Model.java @@ -0,0 +1,7 @@ +package org.baeldung.mocks.jmockit; + +public class Model { + public String getInfo(){ + return "info"; + } +} diff --git a/mocks/jmockit/src/main/java/org/baeldung/mocks/jmockit/Performer.java b/mocks/jmockit/src/main/java/org/baeldung/mocks/jmockit/Performer.java new file mode 100644 index 0000000000..4f8e8adb24 --- /dev/null +++ b/mocks/jmockit/src/main/java/org/baeldung/mocks/jmockit/Performer.java @@ -0,0 +1,10 @@ +package org.baeldung.mocks.jmockit; + +public class Performer { + private Collaborator collaborator; + + public void perform(Model model){ + boolean value = collaborator.collaborate(model.getInfo()); + collaborator.receive(value); + } +} diff --git a/mocks/jmockit/src/test/java/org/baeldung/mocks/jmockit/PerformerTest.java b/mocks/jmockit/src/test/java/org/baeldung/mocks/jmockit/PerformerTest.java new file mode 100644 index 0000000000..c99ae844c3 --- /dev/null +++ b/mocks/jmockit/src/test/java/org/baeldung/mocks/jmockit/PerformerTest.java @@ -0,0 +1,30 @@ +package org.baeldung.mocks.jmockit; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import mockit.*; +import mockit.integration.junit4.JMockit; + +@RunWith(JMockit.class) +public class PerformerTest { + + @Injectable + private Collaborator collaborator; + + @Tested + private Performer performer; + + @Test + public void testThePerformMethod(@Mocked Model model) { + new Expectations() {{ + model.getInfo();result = "bar"; + collaborator.collaborate("bar"); result = true; + }}; + performer.perform(model); + new Verifications() {{ + collaborator.receive(true); + }}; + } + +} diff --git a/mock-comparisons/README.md b/mocks/mock-comparisons/README.md similarity index 100% rename from mock-comparisons/README.md rename to mocks/mock-comparisons/README.md diff --git a/mock-comparisons/pom.xml b/mocks/mock-comparisons/pom.xml similarity index 90% rename from mock-comparisons/pom.xml rename to mocks/mock-comparisons/pom.xml index c5424d262d..692bfffd53 100644 --- a/mock-comparisons/pom.xml +++ b/mocks/mock-comparisons/pom.xml @@ -1,11 +1,16 @@ 4.0.0 - org.baeldung - mock-comparisons - 0.1-SNAPSHOT - mockito + + com.baeldung + mocks + 1.0.0-SNAPSHOT + ../pom.xml + + + mock-comparisons + mock-comparisons 4.12 diff --git a/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginController.java b/mocks/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginController.java similarity index 100% rename from mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginController.java rename to mocks/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginController.java diff --git a/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginDao.java b/mocks/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginDao.java similarity index 100% rename from mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginDao.java rename to mocks/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginDao.java diff --git a/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginService.java b/mocks/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginService.java similarity index 100% rename from mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginService.java rename to mocks/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginService.java diff --git a/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/UserForm.java b/mocks/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/UserForm.java similarity index 100% rename from mock-comparisons/src/main/java/org/baeldung/mocks/testCase/UserForm.java rename to mocks/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/UserForm.java diff --git a/mock-comparisons/src/test/java/org/baeldung/mocks/easymock/LoginControllerTest.java b/mocks/mock-comparisons/src/test/java/org/baeldung/mocks/easymock/LoginControllerTest.java similarity index 100% rename from mock-comparisons/src/test/java/org/baeldung/mocks/easymock/LoginControllerTest.java rename to mocks/mock-comparisons/src/test/java/org/baeldung/mocks/easymock/LoginControllerTest.java diff --git a/mock-comparisons/src/test/java/org/baeldung/mocks/jmockit/LoginControllerTest.java b/mocks/mock-comparisons/src/test/java/org/baeldung/mocks/jmockit/LoginControllerTest.java similarity index 100% rename from mock-comparisons/src/test/java/org/baeldung/mocks/jmockit/LoginControllerTest.java rename to mocks/mock-comparisons/src/test/java/org/baeldung/mocks/jmockit/LoginControllerTest.java diff --git a/mock-comparisons/src/test/java/org/baeldung/mocks/mockito/LoginControllerTest.java b/mocks/mock-comparisons/src/test/java/org/baeldung/mocks/mockito/LoginControllerTest.java similarity index 100% rename from mock-comparisons/src/test/java/org/baeldung/mocks/mockito/LoginControllerTest.java rename to mocks/mock-comparisons/src/test/java/org/baeldung/mocks/mockito/LoginControllerTest.java diff --git a/mocks/pom.xml b/mocks/pom.xml new file mode 100644 index 0000000000..ec02c255ef --- /dev/null +++ b/mocks/pom.xml @@ -0,0 +1,20 @@ + + 4.0.0 + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + ../pom.xml + + + mocks + mocks + pom + + + mock-comparisons + jmockit + + + diff --git a/pom.xml b/pom.xml index 4bef2ceb45..fa4777860d 100644 --- a/pom.xml +++ b/pom.xml @@ -7,8 +7,12 @@ parent-modules pom + + + UTF-8 + + - apache-fop assertj core-java @@ -25,7 +29,7 @@ jooq-spring json-path mockito - mock-comparisons + mocks jee7schedule querydsl diff --git a/querydsl/pom.xml b/querydsl/pom.xml index cf50144d3f..bed0cf90e5 100644 --- a/querydsl/pom.xml +++ b/querydsl/pom.xml @@ -14,30 +14,25 @@ UTF-8 - 1.6 - 4.10 - 3.1.0.RELEASE - 4.3.11.Final - 2.5.0 - 1.5.10 + 1.8 + 4.12 + 4.3.1.RELEASE + 5.2.1.Final + 4.1.3 + 1.7.21 - - com.mysema.querydsl - querydsl-core - ${querydsl.version} - - com.mysema.querydsl + com.querydsl querydsl-jpa ${querydsl.version} - com.mysema.querydsl + com.querydsl querydsl-apt ${querydsl.version} provided @@ -53,7 +48,7 @@ org.hibernate.javax.persistence - hibernate-jpa-2.0-api + hibernate-jpa-2.1-api 1.0.0.Final compile @@ -69,7 +64,7 @@ commons-pool commons-pool - 1.5.5 + 1.6 jar compile @@ -77,8 +72,8 @@ org.hsqldb - hsqldb-j5 - 2.2.4 + hsqldb + 2.3.4 @@ -118,9 +113,9 @@ - org.slf4j - slf4j-api - ${slf4j.version} + ch.qos.logback + logback-classic + 1.1.7 org.slf4j @@ -128,17 +123,6 @@ ${slf4j.version} runtime - - org.slf4j - slf4j-log4j12 - ${slf4j.version} - runtime - - - log4j - log4j - 1.2.16 - @@ -157,7 +141,7 @@ org.apache.maven.plugins maven-compiler-plugin - 2.3.2 + 3.5.1 ${java.version} ${java.version} @@ -168,16 +152,16 @@ com.mysema.maven - maven-apt-plugin - 1.0.3 + apt-maven-plugin + 1.1.3 process - target/metamodel - com.mysema.query.apt.jpa.JPAAnnotationProcessor + target/generated-sources/java + com.querydsl.apt.jpa.JPAAnnotationProcessor diff --git a/querydsl/src/main/java/org/baeldung/dao/PersonDaoImpl.java b/querydsl/src/main/java/org/baeldung/dao/PersonDaoImpl.java index 555ec226ce..9acaf1dd18 100644 --- a/querydsl/src/main/java/org/baeldung/dao/PersonDaoImpl.java +++ b/querydsl/src/main/java/org/baeldung/dao/PersonDaoImpl.java @@ -10,8 +10,8 @@ import org.baeldung.entity.Person; import org.baeldung.entity.QPerson; import org.springframework.stereotype.Repository; -import com.mysema.query.group.GroupBy; -import com.mysema.query.jpa.impl.JPAQuery; +import com.querydsl.core.group.GroupBy; +import com.querydsl.jpa.impl.JPAQuery; @Repository public class PersonDaoImpl implements PersonDao { @@ -27,39 +27,39 @@ public class PersonDaoImpl implements PersonDao { @Override public List findPersonsByFirstnameQueryDSL(final String firstname) { - final JPAQuery query = new JPAQuery(em); + final JPAQuery query = new JPAQuery<>(em); final QPerson person = QPerson.person; - return query.from(person).where(person.firstname.eq(firstname)).list(person); + return query.from(person).where(person.firstname.eq(firstname)).fetch(); } @Override public List findPersonsByFirstnameAndSurnameQueryDSL(final String firstname, final String surname) { - final JPAQuery query = new JPAQuery(em); + final JPAQuery query = new JPAQuery<>(em); final QPerson person = QPerson.person; - return query.from(person).where(person.firstname.eq(firstname).and(person.surname.eq(surname))).list(person); + return query.from(person).where(person.firstname.eq(firstname).and(person.surname.eq(surname))).fetch(); } @Override public List findPersonsByFirstnameInDescendingOrderQueryDSL(final String firstname) { - final JPAQuery query = new JPAQuery(em); + final JPAQuery query = new JPAQuery<>(em); final QPerson person = QPerson.person; - return query.from(person).where(person.firstname.eq(firstname)).orderBy(person.surname.desc()).list(person); + return query.from(person).where(person.firstname.eq(firstname)).orderBy(person.surname.desc()).fetch(); } @Override public int findMaxAge() { - final JPAQuery query = new JPAQuery(em); + final JPAQuery query = new JPAQuery<>(em); final QPerson person = QPerson.person; - return query.from(person).list(person.age.max()).get(0); + return query.from(person).select(person.age.max()).fetchFirst(); } @Override public Map findMaxAgeByName() { - final JPAQuery query = new JPAQuery(em); + final JPAQuery query = new JPAQuery<>(em); final QPerson person = QPerson.person; return query.from(person).transform(GroupBy.groupBy(person.firstname).as(GroupBy.max(person.age))); diff --git a/querydsl/src/main/java/org/baeldung/querydsl/intro/entities/BlogPost.java b/querydsl/src/main/java/org/baeldung/querydsl/intro/entities/BlogPost.java new file mode 100644 index 0000000000..241bc50b03 --- /dev/null +++ b/querydsl/src/main/java/org/baeldung/querydsl/intro/entities/BlogPost.java @@ -0,0 +1,56 @@ +/* + * (c) Центр ИТ, 2016. Все права защищены. + */ +package org.baeldung.querydsl.intro.entities; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.ManyToOne; + +@Entity +public class BlogPost { + + @Id + @GeneratedValue + private Long id; + + private String title; + + private String body; + + @ManyToOne + private User user; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String code) { + this.title = code; + } + + public String getBody() { + return body; + } + + public void setBody(String body) { + this.body = body; + } + + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } +} diff --git a/querydsl/src/main/java/org/baeldung/querydsl/intro/entities/User.java b/querydsl/src/main/java/org/baeldung/querydsl/intro/entities/User.java new file mode 100644 index 0000000000..c0681e15d1 --- /dev/null +++ b/querydsl/src/main/java/org/baeldung/querydsl/intro/entities/User.java @@ -0,0 +1,55 @@ +/* + * (c) Центр ИТ, 2016. Все права защищены. + */ +package org.baeldung.querydsl.intro.entities; + +import java.util.HashSet; +import java.util.Set; +import javax.persistence.*; + +@Entity +public class User { + + @Id + @GeneratedValue + private Long id; + + private String login; + + private Boolean disabled; + + @OneToMany(cascade = CascadeType.PERSIST, mappedBy = "user") + private Set blogPosts = new HashSet<>(0); + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getLogin() { + return login; + } + + public void setLogin(String name) { + this.login = name; + } + + public Set getBlogPosts() { + return blogPosts; + } + + public void setBlogPosts(Set blogPosts) { + this.blogPosts = blogPosts; + } + + public Boolean getDisabled() { + return disabled; + } + + public void setDisabled(Boolean disabled) { + this.disabled = disabled; + } +} diff --git a/querydsl/src/main/resources/META-INF/persistence.xml b/querydsl/src/main/resources/META-INF/persistence.xml index 111d7933c3..2964382d48 100644 --- a/querydsl/src/main/resources/META-INF/persistence.xml +++ b/querydsl/src/main/resources/META-INF/persistence.xml @@ -16,4 +16,17 @@ + + + org.hibernate.jpa.HibernatePersistenceProvider + + + + + + + + + + \ No newline at end of file diff --git a/querydsl/src/main/resources/log4j.xml b/querydsl/src/main/resources/logback.xml similarity index 53% rename from querydsl/src/main/resources/log4j.xml rename to querydsl/src/main/resources/logback.xml index a7f96b38a4..d0a1dc06ac 100644 --- a/querydsl/src/main/resources/log4j.xml +++ b/querydsl/src/main/resources/logback.xml @@ -1,12 +1,9 @@ - - + - - - - - + + + %d{yyyy-MM-dd HH:mm:ss} [%t] %-5p: %c - %m%n @@ -33,10 +30,8 @@ - - - - + + - \ No newline at end of file + \ No newline at end of file diff --git a/querydsl/src/test/java/org/baeldung/querydsl/intro/QueryDSLTest.java b/querydsl/src/test/java/org/baeldung/querydsl/intro/QueryDSLTest.java new file mode 100644 index 0000000000..682fa2c245 --- /dev/null +++ b/querydsl/src/test/java/org/baeldung/querydsl/intro/QueryDSLTest.java @@ -0,0 +1,215 @@ +/* + * (c) Центр ИТ, 2016. Все права защищены. + */ +package org.baeldung.querydsl.intro; + +import java.util.List; +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; + +import org.baeldung.querydsl.intro.entities.BlogPost; +import org.baeldung.querydsl.intro.entities.QBlogPost; +import org.baeldung.querydsl.intro.entities.QUser; +import org.baeldung.querydsl.intro.entities.User; +import com.querydsl.core.Tuple; +import com.querydsl.core.types.dsl.Expressions; +import com.querydsl.core.types.dsl.NumberPath; +import com.querydsl.jpa.JPAExpressions; +import com.querydsl.jpa.impl.JPAQueryFactory; +import org.junit.*; + +import static org.junit.Assert.*; + +public class QueryDSLTest { + + private static EntityManagerFactory emf; + + private EntityManager em; + + private JPAQueryFactory queryFactory; + + @BeforeClass + public static void populateDatabase() { + emf = Persistence.createEntityManagerFactory("org.baeldung.querydsl.intro"); + EntityManager em = emf.createEntityManager(); + + em.getTransaction().begin(); + User user1 = new User(); + user1.setLogin("David"); + em.persist(user1); + + User user2 = new User(); + user2.setLogin("Ash"); + em.persist(user2); + + User user3 = new User(); + user3.setLogin("Call"); + em.persist(user3); + + User user4 = new User(); + user4.setLogin("Bishop"); + em.persist(user4); + + BlogPost blogPost1 = new BlogPost(); + blogPost1.setTitle("Hello World!"); + blogPost1.setUser(user1); + em.persist(blogPost1); + + BlogPost blogPost2 = new BlogPost(); + blogPost2.setTitle("My Second Post"); + blogPost2.setUser(user1); + em.persist(blogPost2); + + BlogPost blogPost3 = new BlogPost(); + blogPost3.setTitle("Hello World!"); + blogPost3.setUser(user3); + em.persist(blogPost3); + + em.getTransaction().commit(); + + em.close(); + + } + + @Before + public void setUp() { + em = emf.createEntityManager(); + em.getTransaction().begin(); + queryFactory = new JPAQueryFactory(em); + } + + @Test + public void whenFindByLogin_thenShouldReturnUser() { + + QUser user = QUser.user; + User aUser = queryFactory.selectFrom(user) + .where(user.login.eq("David")) + .fetchOne(); + + assertNotNull(aUser); + assertEquals(aUser.getLogin(), "David"); + + } + + @Test + public void whenUsingOrderBy_thenResultsShouldBeOrdered() { + + QUser user = QUser.user; + List users = queryFactory.selectFrom(user) + .orderBy(user.login.asc()) + .fetch(); + + assertEquals(users.size(), 4); + assertEquals(users.get(0).getLogin(), "Ash"); + assertEquals(users.get(1).getLogin(), "Bishop"); + assertEquals(users.get(2).getLogin(), "Call"); + assertEquals(users.get(3).getLogin(), "David"); + + } + + @Test + public void whenGroupingByTitle_thenReturnsTuples() { + + QBlogPost blogPost = QBlogPost.blogPost; + + NumberPath count = Expressions.numberPath(Long.class, "c"); + + List userTitleCounts = queryFactory.select(blogPost.title, blogPost.id.count().as(count)) + .from(blogPost) + .groupBy(blogPost.title) + .orderBy(count.desc()) + .fetch(); + + assertEquals("Hello World!", userTitleCounts.get(0).get(blogPost.title)); + assertEquals(new Long(2), userTitleCounts.get(0).get(count)); + + assertEquals("My Second Post", userTitleCounts.get(1).get(blogPost.title)); + assertEquals(new Long(1), userTitleCounts.get(1).get(count)); + + } + + @Test + public void whenJoiningWithCondition_thenResultCountShouldMatch() { + + QUser user = QUser.user; + QBlogPost blogPost = QBlogPost.blogPost; + + List users = queryFactory.selectFrom(user) + .innerJoin(user.blogPosts, blogPost) + .on(blogPost.title.eq("Hello World!")) + .fetch(); + + assertEquals(2, users.size()); + } + + @Test + public void whenRefiningWithSubquery_thenResultCountShouldMatch() { + + QUser user = QUser.user; + QBlogPost blogPost = QBlogPost.blogPost; + + List users = queryFactory.selectFrom(user) + .where(user.id.in( + JPAExpressions.select(blogPost.user.id) + .from(blogPost) + .where(blogPost.title.eq("Hello World!")))) + .fetch(); + + assertEquals(2, users.size()); + } + + @Test + public void whenUpdating_thenTheRecordShouldChange() { + + QUser user = QUser.user; + + queryFactory.update(user) + .where(user.login.eq("Ash")) + .set(user.login, "Ash2") + .set(user.disabled, true) + .execute(); + + em.getTransaction().commit(); + + em.getTransaction().begin(); + + assertEquals(Boolean.TRUE, + queryFactory.select(user.disabled) + .from(user) + .where(user.login.eq("Ash2")) + .fetchOne()); + + } + + @Test + public void whenDeleting_thenTheRecordShouldBeAbsent() { + + QUser user = QUser.user; + + queryFactory.delete(user) + .where(user.login.eq("Bishop")) + .execute(); + + em.getTransaction().commit(); + + em.getTransaction().begin(); + + assertNull(queryFactory.selectFrom(user) + .where(user.login.eq("Bishop")) + .fetchOne()); + + } + + @After + public void tearDown() { + em.getTransaction().commit(); + em.close(); + } + + @AfterClass + public static void afterClass() { + emf.close(); + } + +} diff --git a/spring-hibernate4/README.md b/spring-hibernate4/README.md index 4c0c6706d6..4b48fe7064 100644 --- a/spring-hibernate4/README.md +++ b/spring-hibernate4/README.md @@ -8,7 +8,7 @@ - [Hibernate Pagination](http://www.baeldung.com/hibernate-pagination) - [Sorting with Hibernate](http://www.baeldung.com/hibernate-sort) - [Auditing with JPA, Hibernate, and Spring Data JPA](http://www.baeldung.com/database-auditing-jpa) - +- [Stored Procedures with Hibernate](http://www.baeldung.com/stored-procedures-with-hibernate-tutorial) ### Quick Start diff --git a/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Foo.java b/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Foo.java index 6b48c1fa66..bdd48d6aa6 100644 --- a/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Foo.java +++ b/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Foo.java @@ -11,93 +11,97 @@ import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; +import javax.persistence.NamedNativeQueries; +import javax.persistence.NamedNativeQuery; import org.hibernate.envers.Audited; +@NamedNativeQueries({ + @NamedNativeQuery(name = "callGetAllFoos", query = "CALL GetAllFoos()", resultClass = Foo.class), + @NamedNativeQuery(name = "callGetFoosByName", query = "CALL GetFoosByName(:fooName)", resultClass = Foo.class) }) @Entity @Audited // @Proxy(lazy = false) public class Foo implements Serializable { - @Id - @GeneratedValue(strategy = GenerationType.AUTO) - @Column(name = "id") - private long id; + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + @Column(name = "id") + private long id; - @Column(name = "name") - private String name; + @Column(name = "name") + private String name; - @ManyToOne(targetEntity = Bar.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER) - @JoinColumn(name = "BAR_ID") - private Bar bar = new Bar(); + @ManyToOne(targetEntity = Bar.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @JoinColumn(name = "BAR_ID") + private Bar bar = new Bar(); - public Foo() { - super(); - } + public Foo() { + super(); + } - public Foo(final String name) { - super(); - this.name = name; - } + public Foo(final String name) { + super(); + this.name = name; + } - // + // - public Bar getBar() { - return bar; - } + public Bar getBar() { + return bar; + } - public void setBar(final Bar bar) { - this.bar = bar; - } + public void setBar(final Bar bar) { + this.bar = bar; + } - public long getId() { - return id; - } + public long getId() { + return id; + } - public void setId(final long id) { - this.id = id; - } + public void setId(final long id) { + this.id = id; + } - public String getName() { - return name; - } + public String getName() { + return name; + } - public void setName(final String name) { - this.name = name; - } + public void setName(final String name) { + this.name = name; + } - // + // - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((name == null) ? 0 : name.hashCode()); - return result; - } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((name == null) ? 0 : name.hashCode()); + return result; + } - @Override - public boolean equals(final Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - final Foo other = (Foo) obj; - if (name == null) { - if (other.name != null) - return false; - } else if (!name.equals(other.name)) - return false; - return true; - } - - @Override - public String toString() { - final StringBuilder builder = new StringBuilder(); - builder.append("Foo [name=").append(name).append("]"); - return builder.toString(); - } + @Override + public boolean equals(final Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + final Foo other = (Foo) obj; + if (name == null) { + if (other.name != null) + return false; + } else if (!name.equals(other.name)) + return false; + return true; + } + @Override + public String toString() { + final StringBuilder builder = new StringBuilder(); + builder.append("Foo [name=").append(name).append("]"); + return builder.toString(); + } } diff --git a/spring-hibernate4/src/main/resources/stored_procedure.sql b/spring-hibernate4/src/main/resources/stored_procedure.sql new file mode 100644 index 0000000000..8e1bdf57dd --- /dev/null +++ b/spring-hibernate4/src/main/resources/stored_procedure.sql @@ -0,0 +1,20 @@ +DELIMITER // + CREATE PROCEDURE GetFoosByName(IN fooName VARCHAR(255)) + LANGUAGE SQL + DETERMINISTIC + SQL SECURITY DEFINER + BEGIN + SELECT * FROM foo WHERE name = fooName; + END // +DELIMITER ; + + +DELIMITER // + CREATE PROCEDURE GetAllFoos() + LANGUAGE SQL + DETERMINISTIC + SQL SECURITY DEFINER + BEGIN + SELECT * FROM foo; + END // +DELIMITER ; \ No newline at end of file diff --git a/spring-hibernate4/src/test/java/com/baeldung/persistence/service/FooStoredProceduresIntegrationTest.java b/spring-hibernate4/src/test/java/com/baeldung/persistence/service/FooStoredProceduresIntegrationTest.java new file mode 100644 index 0000000000..238b228101 --- /dev/null +++ b/spring-hibernate4/src/test/java/com/baeldung/persistence/service/FooStoredProceduresIntegrationTest.java @@ -0,0 +1,126 @@ +package com.baeldung.persistence.service; + +import java.util.List; + +import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; +import static org.junit.Assert.assertEquals; + +import org.hibernate.Query; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.exception.SQLGrammarException; +import org.junit.After; +import org.junit.Assume; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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 com.baeldung.persistence.model.Foo; +import com.baeldung.spring.PersistenceConfig; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = {PersistenceConfig.class}, loader = AnnotationConfigContextLoader.class) +public class FooStoredProceduresIntegrationTest { + + private static final Logger LOGGER = LoggerFactory.getLogger(FooStoredProceduresIntegrationTest.class); + + @Autowired + private SessionFactory sessionFactory; + + @Autowired + private IFooService fooService; + + private Session session; + + @Before + public final void before() { + session = sessionFactory.openSession(); + Assume.assumeTrue(getAllFoosExists()); + Assume.assumeTrue(getFoosByNameExists()); + } + + private boolean getFoosByNameExists() { + try { + Query sqlQuery = session.createSQLQuery("CALL GetAllFoos()") + .addEntity(Foo.class); + sqlQuery.list(); + return true; + } catch (SQLGrammarException e) { + LOGGER.error("WARNING : GetFoosByName() Procedure is may be missing ", e); + return false; + } + } + + private boolean getAllFoosExists() { + try { + Query sqlQuery = session.createSQLQuery("CALL GetAllFoos()") + .addEntity(Foo.class); + sqlQuery.list(); + return true; + } catch (SQLGrammarException e) { + LOGGER.error("WARNING : GetAllFoos() Procedure is may be missing ", e); + return false; + } + } + + @After + public final void after() { + session.close(); + } + + @Test + public final void getAllFoosUsingStoredProcedures() { + + fooService.create(new Foo(randomAlphabetic(6))); + + // Stored procedure getAllFoos using createSQLQuery + Query sqlQuery = session.createSQLQuery("CALL GetAllFoos()").addEntity( + Foo.class); + @SuppressWarnings("unchecked") + List allFoos = sqlQuery.list(); + for (Foo foo : allFoos) { + LOGGER.info("getAllFoos() SQL Query result : {}", foo.getName()); + } + assertEquals(allFoos.size(), fooService.findAll().size()); + + // Stored procedure getAllFoos using a Named Query + Query namedQuery = session.getNamedQuery("callGetAllFoos"); + @SuppressWarnings("unchecked") + List allFoos2 = namedQuery.list(); + for (Foo foo : allFoos2) { + LOGGER.info("getAllFoos() NamedQuery result : {}", foo.getName()); + } + assertEquals(allFoos2.size(), fooService.findAll().size()); + } + + @Test + public final void getFoosByNameUsingStoredProcedures() { + + fooService.create(new Foo("NewFooName")); + + // Stored procedure getFoosByName using createSQLQuery() + Query sqlQuery = session.createSQLQuery("CALL GetFoosByName(:fooName)") + .addEntity(Foo.class).setParameter("fooName", "NewFooName"); + @SuppressWarnings("unchecked") + List allFoosByName = sqlQuery.list(); + for (Foo foo : allFoosByName) { + LOGGER.info("getFoosByName() using SQL Query : found => {}", foo.toString()); + } + + // Stored procedure getFoosByName using getNamedQuery() + Query namedQuery = session.getNamedQuery("callGetFoosByName") + .setParameter("fooName", "NewFooName"); + @SuppressWarnings("unchecked") + List allFoosByName2 = namedQuery.list(); + for (Foo foo : allFoosByName2) { + LOGGER.info("getFoosByName() using Native Query : found => {}", foo.toString()); + } + + } +} diff --git a/spring-rest/pom.xml b/spring-rest/pom.xml index 7941279936..09a50b9579 100644 --- a/spring-rest/pom.xml +++ b/spring-rest/pom.xml @@ -146,6 +146,17 @@ spring-test + + com.google.protobuf + protobuf-java + 2.6.1 + + + + com.esotericsoftware.kryo + kryo + 2.24.0 + @@ -254,4 +265,4 @@ - \ No newline at end of file + diff --git a/spring-rest/src/main/java/org/baeldung/config/WebConfig.java b/spring-rest/src/main/java/org/baeldung/config/WebConfig.java index 999f890ebb..120f1b272a 100644 --- a/spring-rest/src/main/java/org/baeldung/config/WebConfig.java +++ b/spring-rest/src/main/java/org/baeldung/config/WebConfig.java @@ -3,11 +3,13 @@ package org.baeldung.config; import java.text.SimpleDateFormat; import java.util.List; +import org.baeldung.config.converter.KryoHttpMessageConverter; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter; import org.springframework.http.converter.xml.MarshallingHttpMessageConverter; import org.springframework.oxm.xstream.XStreamMarshaller; import org.springframework.web.servlet.config.annotation.EnableWebMvc; @@ -33,7 +35,8 @@ public class WebConfig extends WebMvcConfigurerAdapter { builder.indentOutput(true).dateFormat(new SimpleDateFormat("dd-MM-yyyy hh:mm")); messageConverters.add(new MappingJackson2HttpMessageConverter(builder.build())); // messageConverters.add(new MappingJackson2XmlHttpMessageConverter(builder.createXmlMapper(true).build())); - + messageConverters.add(new ProtobufHttpMessageConverter()); + messageConverters.add(new KryoHttpMessageConverter()); super.configureMessageConverters(messageConverters); } diff --git a/spring-rest/src/main/java/org/baeldung/config/converter/KryoHttpMessageConverter.java b/spring-rest/src/main/java/org/baeldung/config/converter/KryoHttpMessageConverter.java new file mode 100644 index 0000000000..7e63a3ba9e --- /dev/null +++ b/spring-rest/src/main/java/org/baeldung/config/converter/KryoHttpMessageConverter.java @@ -0,0 +1,57 @@ +package org.baeldung.config.converter; + +import java.io.IOException; + +import org.baeldung.web.dto.Foo; +import org.springframework.http.HttpInputMessage; +import org.springframework.http.HttpOutputMessage; +import org.springframework.http.MediaType; +import org.springframework.http.converter.AbstractHttpMessageConverter; + +import com.esotericsoftware.kryo.Kryo; +import com.esotericsoftware.kryo.io.Input; +import com.esotericsoftware.kryo.io.Output; + +/** + * An {@code HttpMessageConverter} that can read and write Kryo messages. + */ +public class KryoHttpMessageConverter extends AbstractHttpMessageConverter { + + public static final MediaType KRYO = new MediaType("application", "x-kryo"); + + private static final ThreadLocal kryoThreadLocal = new ThreadLocal() { + @Override + protected Kryo initialValue() { + final Kryo kryo = new Kryo(); + kryo.register(Foo.class, 1); + return kryo; + } + }; + + public KryoHttpMessageConverter() { + super(KRYO); + } + + @Override + protected boolean supports(final Class clazz) { + return Object.class.isAssignableFrom(clazz); + } + + @Override + protected Object readInternal(final Class clazz, final HttpInputMessage inputMessage) throws IOException { + final Input input = new Input(inputMessage.getBody()); + return kryoThreadLocal.get().readClassAndObject(input); + } + + @Override + protected void writeInternal(final Object object, final HttpOutputMessage outputMessage) throws IOException { + final Output output = new Output(outputMessage.getBody()); + kryoThreadLocal.get().writeClassAndObject(output, object); + output.flush(); + } + + @Override + protected MediaType getDefaultContentType(final Object object) { + return KRYO; + } +} diff --git a/spring-rest/src/main/java/org/baeldung/web/controller/FooController.java b/spring-rest/src/main/java/org/baeldung/web/controller/FooController.java index ed6b150403..386c64bb09 100644 --- a/spring-rest/src/main/java/org/baeldung/web/controller/FooController.java +++ b/spring-rest/src/main/java/org/baeldung/web/controller/FooController.java @@ -4,6 +4,7 @@ import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; import static org.apache.commons.lang3.RandomStringUtils.randomNumeric; import org.baeldung.web.dto.Foo; +import org.baeldung.web.dto.FooProtos; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; @@ -38,4 +39,9 @@ public class FooController { return foo; } + @RequestMapping(method = RequestMethod.GET, value = "/foos/{id}", produces = { "application/x-protobuf" }) + @ResponseBody + public FooProtos.Foo findProtoById(@PathVariable final long id) { + return FooProtos.Foo.newBuilder().setId(1).setName("Foo Name").build(); + } } diff --git a/spring-rest/src/main/java/org/baeldung/web/dto/FooProtos.java b/spring-rest/src/main/java/org/baeldung/web/dto/FooProtos.java new file mode 100644 index 0000000000..61251ea33a --- /dev/null +++ b/spring-rest/src/main/java/org/baeldung/web/dto/FooProtos.java @@ -0,0 +1,620 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: FooProtos.proto + +package org.baeldung.web.dto; + +public final class FooProtos { + private FooProtos() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + } + public interface FooOrBuilder extends + // @@protoc_insertion_point(interface_extends:baeldung.Foo) + com.google.protobuf.MessageOrBuilder { + + /** + * required int64 id = 1; + */ + boolean hasId(); + /** + * required int64 id = 1; + */ + long getId(); + + /** + * required string name = 2; + */ + boolean hasName(); + /** + * required string name = 2; + */ + java.lang.String getName(); + /** + * required string name = 2; + */ + com.google.protobuf.ByteString + getNameBytes(); + } + /** + * Protobuf type {@code baeldung.Foo} + */ + public static final class Foo extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:baeldung.Foo) + FooOrBuilder { + // Use Foo.newBuilder() to construct. + private Foo(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private Foo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + + private static final Foo defaultInstance; + public static Foo getDefaultInstance() { + return defaultInstance; + } + + public Foo getDefaultInstanceForType() { + return defaultInstance; + } + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Foo( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + id_ = input.readInt64(); + break; + } + case 18: { + com.google.protobuf.ByteString bs = input.readBytes(); + bitField0_ |= 0x00000002; + name_ = bs; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.baeldung.web.dto.FooProtos.internal_static_baeldung_Foo_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.baeldung.web.dto.FooProtos.internal_static_baeldung_Foo_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.baeldung.web.dto.FooProtos.Foo.class, org.baeldung.web.dto.FooProtos.Foo.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public Foo parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Foo(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + public static final int ID_FIELD_NUMBER = 1; + private long id_; + /** + * required int64 id = 1; + */ + public boolean hasId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required int64 id = 1; + */ + public long getId() { + return id_; + } + + public static final int NAME_FIELD_NUMBER = 2; + private java.lang.Object name_; + /** + * required string name = 2; + */ + public boolean hasName() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string name = 2; + */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + name_ = s; + } + return s; + } + } + /** + * required string name = 2; + */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private void initFields() { + id_ = 0L; + name_ = ""; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + if (!hasId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasName()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeInt64(1, id_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getNameBytes()); + } + getUnknownFields().writeTo(output); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeInt64Size(1, id_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(2, getNameBytes()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static org.baeldung.web.dto.FooProtos.Foo parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.baeldung.web.dto.FooProtos.Foo parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.baeldung.web.dto.FooProtos.Foo parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.baeldung.web.dto.FooProtos.Foo parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.baeldung.web.dto.FooProtos.Foo parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.baeldung.web.dto.FooProtos.Foo parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static org.baeldung.web.dto.FooProtos.Foo parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static org.baeldung.web.dto.FooProtos.Foo parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static org.baeldung.web.dto.FooProtos.Foo parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.baeldung.web.dto.FooProtos.Foo parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(org.baeldung.web.dto.FooProtos.Foo prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code baeldung.Foo} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:baeldung.Foo) + org.baeldung.web.dto.FooProtos.FooOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.baeldung.web.dto.FooProtos.internal_static_baeldung_Foo_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.baeldung.web.dto.FooProtos.internal_static_baeldung_Foo_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.baeldung.web.dto.FooProtos.Foo.class, org.baeldung.web.dto.FooProtos.Foo.Builder.class); + } + + // Construct using org.baeldung.web.dto.FooProtos.Foo.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + } + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + id_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + name_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return org.baeldung.web.dto.FooProtos.internal_static_baeldung_Foo_descriptor; + } + + public org.baeldung.web.dto.FooProtos.Foo getDefaultInstanceForType() { + return org.baeldung.web.dto.FooProtos.Foo.getDefaultInstance(); + } + + public org.baeldung.web.dto.FooProtos.Foo build() { + org.baeldung.web.dto.FooProtos.Foo result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public org.baeldung.web.dto.FooProtos.Foo buildPartial() { + org.baeldung.web.dto.FooProtos.Foo result = new org.baeldung.web.dto.FooProtos.Foo(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.id_ = id_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.name_ = name_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof org.baeldung.web.dto.FooProtos.Foo) { + return mergeFrom((org.baeldung.web.dto.FooProtos.Foo)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(org.baeldung.web.dto.FooProtos.Foo other) { + if (other == org.baeldung.web.dto.FooProtos.Foo.getDefaultInstance()) return this; + if (other.hasId()) { + setId(other.getId()); + } + if (other.hasName()) { + bitField0_ |= 0x00000002; + name_ = other.name_; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + return this; + } + + public final boolean isInitialized() { + if (!hasId()) { + + return false; + } + if (!hasName()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.baeldung.web.dto.FooProtos.Foo parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.baeldung.web.dto.FooProtos.Foo) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private long id_ ; + /** + * required int64 id = 1; + */ + public boolean hasId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required int64 id = 1; + */ + public long getId() { + return id_; + } + /** + * required int64 id = 1; + */ + public Builder setId(long value) { + bitField0_ |= 0x00000001; + id_ = value; + onChanged(); + return this; + } + /** + * required int64 id = 1; + */ + public Builder clearId() { + bitField0_ = (bitField0_ & ~0x00000001); + id_ = 0L; + onChanged(); + return this; + } + + private java.lang.Object name_ = ""; + /** + * required string name = 2; + */ + public boolean hasName() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string name = 2; + */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + name_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string name = 2; + */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string name = 2; + */ + public Builder setName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + name_ = value; + onChanged(); + return this; + } + /** + * required string name = 2; + */ + public Builder clearName() { + bitField0_ = (bitField0_ & ~0x00000002); + name_ = getDefaultInstance().getName(); + onChanged(); + return this; + } + /** + * required string name = 2; + */ + public Builder setNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + name_ = value; + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:baeldung.Foo) + } + + static { + defaultInstance = new Foo(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:baeldung.Foo) + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_baeldung_Foo_descriptor; + private static + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_baeldung_Foo_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\017FooProtos.proto\022\010baeldung\"\037\n\003Foo\022\n\n\002id" + + "\030\001 \002(\003\022\014\n\004name\030\002 \002(\tB!\n\024org.baeldung.web" + + ".dtoB\tFooProtos" + }; + com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = + new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { + public com.google.protobuf.ExtensionRegistry assignDescriptors( + com.google.protobuf.Descriptors.FileDescriptor root) { + descriptor = root; + return null; + } + }; + com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + }, assigner); + internal_static_baeldung_Foo_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_baeldung_Foo_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_baeldung_Foo_descriptor, + new java.lang.String[] { "Id", "Name", }); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/spring-rest/src/test/java/org/baeldung/web/test/SpringHttpMessageConvertersIntegrationTestsCase.java b/spring-rest/src/test/java/org/baeldung/web/test/SpringHttpMessageConvertersIntegrationTestsCase.java index c21641ca22..1536f14bc8 100644 --- a/spring-rest/src/test/java/org/baeldung/web/test/SpringHttpMessageConvertersIntegrationTestsCase.java +++ b/spring-rest/src/test/java/org/baeldung/web/test/SpringHttpMessageConvertersIntegrationTestsCase.java @@ -7,7 +7,9 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import org.baeldung.config.converter.KryoHttpMessageConverter; import org.baeldung.web.dto.Foo; +import org.baeldung.web.dto.FooProtos; import org.junit.Assert; import org.junit.Test; import org.springframework.http.HttpEntity; @@ -17,6 +19,7 @@ import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter; import org.springframework.http.converter.xml.MarshallingHttpMessageConverter; import org.springframework.oxm.xstream.XStreamMarshaller; import org.springframework.web.client.RestTemplate; @@ -94,6 +97,38 @@ public class SpringHttpMessageConvertersIntegrationTestsCase { Assert.assertEquals(resource.getId(), fooResponse.getId()); } + @Test + public void givenConsumingProtobuf_whenReadingTheFoo_thenCorrect() { + final String URI = BASE_URI + "foos/{id}"; + + final RestTemplate restTemplate = new RestTemplate(); + restTemplate.setMessageConverters(Arrays.asList(new ProtobufHttpMessageConverter())); + final HttpHeaders headers = new HttpHeaders(); + headers.setAccept(Arrays.asList(ProtobufHttpMessageConverter.PROTOBUF)); + final HttpEntity entity = new HttpEntity(headers); + + final ResponseEntity response = restTemplate.exchange(URI, HttpMethod.GET, entity, FooProtos.Foo.class, "1"); + final FooProtos.Foo resource = response.getBody(); + + assertThat(resource, notNullValue()); + } + + @Test + public void givenConsumingKryo_whenReadingTheFoo_thenCorrect() { + final String URI = BASE_URI + "foos/{id}"; + + final RestTemplate restTemplate = new RestTemplate(); + restTemplate.setMessageConverters(Arrays.asList(new KryoHttpMessageConverter())); + final HttpHeaders headers = new HttpHeaders(); + headers.setAccept(Arrays.asList(KryoHttpMessageConverter.KRYO)); + final HttpEntity entity = new HttpEntity(headers); + + final ResponseEntity response = restTemplate.exchange(URI, HttpMethod.GET, entity, Foo.class, "1"); + final Foo resource = response.getBody(); + + assertThat(resource, notNullValue()); + } + // UTIL private List> getMessageConverters() {