diff --git a/.gitignore b/.gitignore index d3a5dae06d..78125cc3ee 100644 --- a/.gitignore +++ b/.gitignore @@ -85,7 +85,3 @@ transaction.log *-shell.log apache-cxf/cxf-aegis/baeldung.xml -apache-fop/src/test/resources/input.xml -apache-fop/src/test/resources/output_herold.pdf -apache-fop/src/test/resources/output_html2fo.pdf -apache-fop/src/test/resources/output_jtidy.pdf \ No newline at end of file diff --git a/aws-app-sync/pom.xml b/aws-app-sync/pom.xml index 1f915978ab..4c55d38d77 100644 --- a/aws-app-sync/pom.xml +++ b/aws-app-sync/pom.xml @@ -2,19 +2,16 @@ 4.0.0 - - org.springframework.boot - spring-boot-starter-parent - 2.2.6.RELEASE - - - - com.baeldung aws-app-sync - 0.0.1-SNAPSHOT aws-app-sync - Spring Boot using AWS App Sync + + + com.baeldung + parent-boot-2 + 0.0.1-SNAPSHOT + ../parent-boot-2 + 1.8 diff --git a/aws-app-sync/src/test/java/com/baeldung/awsappsync/AwsAppSyncApplicationTests.java b/aws-app-sync/src/test/java/com/baeldung/awsappsync/AwsAppSyncApplicationUnitTest.java similarity index 98% rename from aws-app-sync/src/test/java/com/baeldung/awsappsync/AwsAppSyncApplicationTests.java rename to aws-app-sync/src/test/java/com/baeldung/awsappsync/AwsAppSyncApplicationUnitTest.java index 2338cc29a1..8d83dd5b4b 100644 --- a/aws-app-sync/src/test/java/com/baeldung/awsappsync/AwsAppSyncApplicationTests.java +++ b/aws-app-sync/src/test/java/com/baeldung/awsappsync/AwsAppSyncApplicationUnitTest.java @@ -12,7 +12,7 @@ import static org.junit.jupiter.api.Assertions.*; @SpringBootTest @Disabled -class AwsAppSyncApplicationTests { +class AwsAppSyncApplicationUnitTest { @Test void givenGraphQuery_whenListEvents_thenReturnAllEvents() { diff --git a/core-groovy-2/determine-datatype/pom.xml b/core-groovy-2/determine-datatype/pom.xml deleted file mode 100644 index e03cb58ead..0000000000 --- a/core-groovy-2/determine-datatype/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ - - 4.0.0 - com.baeldung.groovy - determine-datatype - 0.0.1-SNAPSHOT - - src - - - maven-compiler-plugin - 3.8.0 - - 1.8 - 1.8 - - - - org.codehaus.gmaven - groovy-maven-plugin - - - org.codehaus.groovy - groovy-all - 2.0.6 - - - - - - - - - org.junit - junit5-engine - ${junit5.version} - - - - - 5.0.0-ALPHA - - \ No newline at end of file diff --git a/core-groovy-2/determine-datatype/src/com/baeldung/groovy/determine/datatype/Person.groovy b/core-groovy-2/determine-datatype/src/com/baeldung/groovy/determine/datatype/Person.groovy deleted file mode 100644 index 1a89dce435..0000000000 --- a/core-groovy-2/determine-datatype/src/com/baeldung/groovy/determine/datatype/Person.groovy +++ /dev/null @@ -1,14 +0,0 @@ -package com.baeldung.groovy.determine.datatype - -class Person { - - private int ageAsInt - private Double ageAsDouble - private String ageAsString - - Person() {} - Person(int ageAsInt) { this.ageAsInt = ageAsInt} - Person(Double ageAsDouble) { this.ageAsDouble = ageAsDouble} - Person(String ageAsString) { this.ageAsString = ageAsString} -} -class Student extends Person {} diff --git a/core-groovy-2/determine-datatype/src/com/baeldung/groovy/determine/datatype/PersonTest.groovy b/core-groovy-2/determine-datatype/src/com/baeldung/groovy/determine/datatype/PersonTest.groovy deleted file mode 100644 index 56095a3f1b..0000000000 --- a/core-groovy-2/determine-datatype/src/com/baeldung/groovy/determine/datatype/PersonTest.groovy +++ /dev/null @@ -1,55 +0,0 @@ -package com.baeldung.groovy.determine.datatype; - -import org.junit.Assert -import org.junit.Test; - -public class PersonTest { - - @Test - public void givenWhenParameterTypeIsInteger_thenReturnTrue() { - Person personObj = new Person(10) - Assert.assertTrue(personObj.ageAsInt instanceof Integer); - } - - @Test - public void givenWhenParameterTypeIsDouble_thenReturnTrue() { - Person personObj = new Person(10.0) - Assert.assertTrue((personObj.ageAsDouble).getClass() == Double) - } - - @Test - public void givenWhenParameterTypeIsString_thenReturnTrue() { - Person personObj = new Person("10 years") - Assert.assertTrue(personObj.ageAsString.class == String) - } - - @Test - public void givenClassName_WhenParameterIsInteger_thenReturnTrue() { - Assert.assertTrue(Person.class.getDeclaredField('ageAsInt').type == int.class) - } - - @Test - public void givenWhenObjectIsInstanceOfType_thenReturnTrue() { - Person personObj = new Person() - Assert.assertTrue(personObj instanceof Person) - } - - @Test - public void givenWhenInstanceIsOfSubtype_thenReturnTrue() { - Student studentObj = new Student() - Assert.assertTrue(studentObj in Person) - } - - @Test - public void givenGroovyList_WhenFindClassName_thenReturnTrue() { - def ageList = ['ageAsString','ageAsDouble', 10] - Assert.assertTrue(ageList.class == ArrayList) - Assert.assertTrue(ageList.getClass() == ArrayList) - } - - @Test - public void givenGrooyMap_WhenFindClassName_thenReturnTrue() { - def ageMap = [ageAsString: '10 years', ageAsDouble: 10.0] - Assert.assertFalse(ageMap.class == LinkedHashMap) - } -} \ No newline at end of file diff --git a/core-java-modules/core-java-networking-2/src/main/java/com/baeldung/macaddress/GetAllMacAddressesDemo.java b/core-java-modules/core-java-networking-2/src/main/java/com/baeldung/macaddress/GetAllMacAddressesDemo.java new file mode 100644 index 0000000000..8f07d4133e --- /dev/null +++ b/core-java-modules/core-java-networking-2/src/main/java/com/baeldung/macaddress/GetAllMacAddressesDemo.java @@ -0,0 +1,23 @@ +package com.baeldung.macaddress; + +import java.net.NetworkInterface; +import java.net.SocketException; +import java.util.Enumeration; + +public class GetAllMacAddressesDemo { + + public static void main(String[] args) throws SocketException { + Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces(); + while (networkInterfaces.hasMoreElements()) { + NetworkInterface ni = networkInterfaces.nextElement(); + byte[] hardwareAddress = ni.getHardwareAddress(); + if (hardwareAddress != null) { + String[] hexadecimalFormat = new String[hardwareAddress.length]; + for (int i = 0; i < hardwareAddress.length; i++) { + hexadecimalFormat[i] = String.format("%02X", hardwareAddress[i]); + } + System.out.println(String.join("-", hexadecimalFormat)); + } + } + } +} diff --git a/core-java-modules/core-java-networking-2/src/test/java/com/baeldung/macaddress/MacAddressUnitTest.java b/core-java-modules/core-java-networking-2/src/test/java/com/baeldung/macaddress/MacAddressUnitTest.java new file mode 100644 index 0000000000..293e92c690 --- /dev/null +++ b/core-java-modules/core-java-networking-2/src/test/java/com/baeldung/macaddress/MacAddressUnitTest.java @@ -0,0 +1,21 @@ +package com.baeldung.macaddress; + +import org.junit.Test; + +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.net.SocketException; +import java.net.UnknownHostException; + +import static org.junit.Assert.assertEquals; + +public class MacAddressUnitTest { + + @Test + public void givenNetworkInterface_whenUsingLocalHost_thenGetMacAddress() throws UnknownHostException, SocketException { + InetAddress localHost = InetAddress.getLocalHost(); + NetworkInterface ni = NetworkInterface.getByInetAddress(localHost); + byte[] macAddress = ni.getHardwareAddress(); + assertEquals(6, macAddress.length); + } +} diff --git a/mapstruct/pom.xml b/mapstruct/pom.xml index 11c8d9b41e..9fe6ab6485 100644 --- a/mapstruct/pom.xml +++ b/mapstruct/pom.xml @@ -16,7 +16,7 @@ org.mapstruct - mapstruct-jdk8 + mapstruct ${org.mapstruct.version} @@ -71,12 +71,12 @@ - 1.3.0.Final + 1.4.0.Beta1 4.3.4.RELEASE 1.8 1.8 1.18.4 - 3.11.1 + 3.16.1 diff --git a/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/dto/CompanyDTO.java b/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/dto/CompanyDTO.java new file mode 100644 index 0000000000..de3571e676 --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/dto/CompanyDTO.java @@ -0,0 +1,25 @@ +package com.baeldung.mapstruct.mappingCollections.dto; + +import java.util.ArrayList; +import java.util.List; + +public class CompanyDTO { + + private List employees; + + public List getEmployees() { + return employees; + } + + public void setEmployees(List employees) { + this.employees = employees; + } + + public void addEmployee(EmployeeDTO employeeDTO) { + if (employees == null) { + employees = new ArrayList<>(); + } + + employees.add(employeeDTO); + } +} diff --git a/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/dto/EmployeeDTO.java b/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/dto/EmployeeDTO.java new file mode 100644 index 0000000000..04e5a1f180 --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/dto/EmployeeDTO.java @@ -0,0 +1,23 @@ +package com.baeldung.mapstruct.mappingCollections.dto; + +public class EmployeeDTO { + + private String firstName; + private String lastName; + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } +} diff --git a/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/dto/EmployeeFullNameDTO.java b/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/dto/EmployeeFullNameDTO.java new file mode 100644 index 0000000000..10b97bfce4 --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/dto/EmployeeFullNameDTO.java @@ -0,0 +1,14 @@ +package com.baeldung.mapstruct.mappingCollections.dto; + +public class EmployeeFullNameDTO { + + private String fullName; + + public String getFullName() { + return fullName; + } + + public void setFullName(String fullName) { + this.fullName = fullName; + } +} diff --git a/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/mapper/CompanyMapper.java b/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/mapper/CompanyMapper.java new file mode 100644 index 0000000000..5310c0454e --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/mapper/CompanyMapper.java @@ -0,0 +1,11 @@ +package com.baeldung.mapstruct.mappingCollections.mapper; + +import com.baeldung.mapstruct.mappingCollections.dto.CompanyDTO; +import com.baeldung.mapstruct.mappingCollections.model.Company; +import org.mapstruct.Mapper; + +@Mapper(uses = EmployeeMapper.class) +public interface CompanyMapper { + + CompanyDTO map(Company company); +} diff --git a/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/mapper/CompanyMapperAdderPreferred.java b/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/mapper/CompanyMapperAdderPreferred.java new file mode 100644 index 0000000000..e5cc43074e --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/mapper/CompanyMapperAdderPreferred.java @@ -0,0 +1,12 @@ +package com.baeldung.mapstruct.mappingCollections.mapper; + +import com.baeldung.mapstruct.mappingCollections.dto.CompanyDTO; +import com.baeldung.mapstruct.mappingCollections.model.Company; +import org.mapstruct.CollectionMappingStrategy; +import org.mapstruct.Mapper; + +@Mapper(collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED) +public interface CompanyMapperAdderPreferred { + + CompanyDTO map(Company company); +} diff --git a/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/mapper/EmployeeFullNameMapper.java b/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/mapper/EmployeeFullNameMapper.java new file mode 100644 index 0000000000..44d3961f2b --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/mapper/EmployeeFullNameMapper.java @@ -0,0 +1,20 @@ +package com.baeldung.mapstruct.mappingCollections.mapper; + +import com.baeldung.mapstruct.mappingCollections.dto.EmployeeFullNameDTO; +import com.baeldung.mapstruct.mappingCollections.model.Employee; +import org.mapstruct.Mapper; + +import java.util.List; + +@Mapper +public interface EmployeeFullNameMapper { + + List map(List employees); + + default EmployeeFullNameDTO map(Employee employee) { + EmployeeFullNameDTO employeeInfoDTO = new EmployeeFullNameDTO(); + employeeInfoDTO.setFullName(employee.getFirstName() + " " + employee.getLastName()); + + return employeeInfoDTO; + } +} diff --git a/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/mapper/EmployeeMapper.java b/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/mapper/EmployeeMapper.java new file mode 100644 index 0000000000..45bf76c5a4 --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/mapper/EmployeeMapper.java @@ -0,0 +1,19 @@ +package com.baeldung.mapstruct.mappingCollections.mapper; + +import com.baeldung.mapstruct.mappingCollections.dto.EmployeeDTO; +import com.baeldung.mapstruct.mappingCollections.model.Employee; +import org.mapstruct.Mapper; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +@Mapper +public interface EmployeeMapper { + + List map(List employees); + + Set map(Set employees); + + Map map(Map idEmployeeMap); +} diff --git a/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/model/Company.java b/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/model/Company.java new file mode 100644 index 0000000000..f96e0b7aea --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/model/Company.java @@ -0,0 +1,16 @@ +package com.baeldung.mapstruct.mappingCollections.model; + +import java.util.List; + +public class Company { + + private List employees; + + public List getEmployees() { + return employees; + } + + public void setEmployees(List employees) { + this.employees = employees; + } +} diff --git a/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/model/Employee.java b/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/model/Employee.java new file mode 100644 index 0000000000..db6809d53f --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/model/Employee.java @@ -0,0 +1,28 @@ +package com.baeldung.mapstruct.mappingCollections.model; + +public class Employee { + + private String firstName; + private String lastName; + + public Employee(String firstName, String lastName) { + this.firstName = firstName; + this.lastName = lastName; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } +} diff --git a/mapstruct/src/test/java/com/baeldung/mapstruct/mappingCollections/mapper/CompanyMapperAdderPreferredUnitTest.java b/mapstruct/src/test/java/com/baeldung/mapstruct/mappingCollections/mapper/CompanyMapperAdderPreferredUnitTest.java new file mode 100644 index 0000000000..ad0096f189 --- /dev/null +++ b/mapstruct/src/test/java/com/baeldung/mapstruct/mappingCollections/mapper/CompanyMapperAdderPreferredUnitTest.java @@ -0,0 +1,32 @@ +package com.baeldung.mapstruct.mappingCollections.mapper; + +import com.baeldung.mapstruct.mappingCollections.dto.CompanyDTO; +import com.baeldung.mapstruct.mappingCollections.dto.EmployeeDTO; +import com.baeldung.mapstruct.mappingCollections.model.Company; +import com.baeldung.mapstruct.mappingCollections.model.Employee; +import org.junit.jupiter.api.Test; +import org.mapstruct.factory.Mappers; + +import java.util.Collections; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +class CompanyMapperAdderPreferredUnitTest { + + private CompanyMapperAdderPreferred companyMapper = Mappers.getMapper(CompanyMapperAdderPreferred.class); + + @Test + void whenMappingToCompanyDTO_thenExpectCorrectMappingResult() { + Employee employee = new Employee("John", "Doe"); + Company company = new Company(); + company.setEmployees(Collections.singletonList(employee)); + + CompanyDTO result = companyMapper.map(company); + + List employees = result.getEmployees(); + assertThat(employees).hasSize(1); + assertThat(employees.get(0).getFirstName()).isEqualTo("John"); + assertThat(employees.get(0).getLastName()).isEqualTo("Doe"); + } +} \ No newline at end of file diff --git a/mapstruct/src/test/java/com/baeldung/mapstruct/mappingCollections/mapper/CompanyMapperUnitTest.java b/mapstruct/src/test/java/com/baeldung/mapstruct/mappingCollections/mapper/CompanyMapperUnitTest.java new file mode 100644 index 0000000000..a556c88ce5 --- /dev/null +++ b/mapstruct/src/test/java/com/baeldung/mapstruct/mappingCollections/mapper/CompanyMapperUnitTest.java @@ -0,0 +1,32 @@ +package com.baeldung.mapstruct.mappingCollections.mapper; + +import com.baeldung.mapstruct.mappingCollections.dto.CompanyDTO; +import com.baeldung.mapstruct.mappingCollections.dto.EmployeeDTO; +import com.baeldung.mapstruct.mappingCollections.model.Company; +import com.baeldung.mapstruct.mappingCollections.model.Employee; +import org.junit.jupiter.api.Test; +import org.mapstruct.factory.Mappers; + +import java.util.Collections; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +class CompanyMapperUnitTest { + + private CompanyMapper companyMapper = Mappers.getMapper(CompanyMapper.class); + + @Test + void whenMappingToCompanyDTO_thenExpectCorrectMappingResult() { + Employee employee = new Employee("John", "Doe"); + Company company = new Company(); + company.setEmployees(Collections.singletonList(employee)); + + CompanyDTO result = companyMapper.map(company); + + List employees = result.getEmployees(); + assertThat(employees).hasSize(1); + assertThat(employees.get(0).getFirstName()).isEqualTo("John"); + assertThat(employees.get(0).getLastName()).isEqualTo("Doe"); + } +} \ No newline at end of file diff --git a/mapstruct/src/test/java/com/baeldung/mapstruct/mappingCollections/mapper/EmployeeFullNameMapperUnitTest.java b/mapstruct/src/test/java/com/baeldung/mapstruct/mappingCollections/mapper/EmployeeFullNameMapperUnitTest.java new file mode 100644 index 0000000000..ba010a2bca --- /dev/null +++ b/mapstruct/src/test/java/com/baeldung/mapstruct/mappingCollections/mapper/EmployeeFullNameMapperUnitTest.java @@ -0,0 +1,26 @@ +package com.baeldung.mapstruct.mappingCollections.mapper; + +import com.baeldung.mapstruct.mappingCollections.dto.EmployeeFullNameDTO; +import com.baeldung.mapstruct.mappingCollections.model.Employee; +import org.junit.jupiter.api.Test; +import org.mapstruct.factory.Mappers; + +import java.util.Collections; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +class EmployeeFullNameMapperUnitTest { + + private EmployeeFullNameMapper employeeMapper = Mappers.getMapper(EmployeeFullNameMapper.class); + + @Test + void whenMappingToEmployeeFullNameDTOList_thenExpectCorrectMappingResult() { + Employee employee = new Employee("John", "Doe"); + + List result = employeeMapper.map(Collections.singletonList(employee)); + + assertThat(result).hasSize(1); + assertThat(result.get(0).getFullName()).isEqualTo("John Doe"); + } +} \ No newline at end of file diff --git a/mapstruct/src/test/java/com/baeldung/mapstruct/mappingCollections/mapper/EmployeeMapperUnitTest.java b/mapstruct/src/test/java/com/baeldung/mapstruct/mappingCollections/mapper/EmployeeMapperUnitTest.java new file mode 100644 index 0000000000..dfb58252dc --- /dev/null +++ b/mapstruct/src/test/java/com/baeldung/mapstruct/mappingCollections/mapper/EmployeeMapperUnitTest.java @@ -0,0 +1,51 @@ +package com.baeldung.mapstruct.mappingCollections.mapper; + +import com.baeldung.mapstruct.mappingCollections.dto.EmployeeDTO; +import com.baeldung.mapstruct.mappingCollections.model.Employee; +import org.junit.jupiter.api.Test; +import org.mapstruct.factory.Mappers; + +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static org.assertj.core.api.Assertions.assertThat; + +class EmployeeMapperUnitTest { + + private EmployeeMapper employeeMapper = Mappers.getMapper(EmployeeMapper.class); + + @Test + void whenMappingToEmployeeDTOList_thenExpectCorrectMappingResult() { + Employee employee = new Employee("John", "Doe"); + + List result = employeeMapper.map(Collections.singletonList(employee)); + + assertThat(result).hasSize(1); + assertThat(result.get(0).getFirstName()).isEqualTo("John"); + assertThat(result.get(0).getLastName()).isEqualTo("Doe"); + } + + @Test + void whenMappingToEmployeeDTOSet_thenExpectCorrectMappingResult() { + Employee employee = new Employee("John", "Doe"); + + Set result = employeeMapper.map(Collections.singleton(employee)); + + assertThat(result).hasSize(1); + assertThat(result.iterator().next().getFirstName()).isEqualTo("John"); + assertThat(result.iterator().next().getLastName()).isEqualTo("Doe"); + } + + @Test + void whenMappingToEmployeeDTOMap_thenExpectCorrectMappingResult() { + Employee employee = new Employee("John", "Doe"); + + Map result = employeeMapper.map(Collections.singletonMap("1", employee)); + + assertThat(result).hasSize(1); + assertThat(result.get("1").getFirstName()).isEqualTo("John"); + assertThat(result.get("1").getLastName()).isEqualTo("Doe"); + } +} \ No newline at end of file diff --git a/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/observer/IObservable.kt b/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/observer/IObservable.kt deleted file mode 100644 index e896d55cf2..0000000000 --- a/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/observer/IObservable.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.baeldung.observer - -import java.util.ArrayList - -interface IObservable { - val observers: ArrayList - fun add(observer: IObserver) { - observers.add(observer) - } - - fun remove(observer: IObserver) { - observers.remove(observer) - } - - fun sendUpdateEvent() { - observers.forEach { it.update() } - } -} \ No newline at end of file diff --git a/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/observer/IObserver.kt b/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/observer/IObserver.kt deleted file mode 100644 index e2187a9fcb..0000000000 --- a/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/observer/IObserver.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.baeldung.observer - -interface IObserver { - fun update() -} \ No newline at end of file diff --git a/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/observer/delegates/BaeldungNewsletter.kt b/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/observer/delegates/BaeldungNewsletter.kt deleted file mode 100644 index 748c1064ff..0000000000 --- a/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/observer/delegates/BaeldungNewsletter.kt +++ /dev/null @@ -1,10 +0,0 @@ -package com.baeldung.observer.delegates - -import kotlin.properties.Delegates - -class BaeldungNewsletter { - val newestArticleObservers = mutableListOf<(String) -> Unit>() - var newestArticleUrl: String by Delegates.observable("") { _, _, newValue -> - newestArticleObservers.forEach { it(newValue) } - } -} \ No newline at end of file diff --git a/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/observer/delegates/BaeldungReader.kt b/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/observer/delegates/BaeldungReader.kt deleted file mode 100644 index f275648549..0000000000 --- a/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/observer/delegates/BaeldungReader.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.baeldung.observer.delegates - -fun main() { - val newsletter = BaeldungNewsletter() - newsletter.newestArticleObservers.add { newestArticleUrl -> - println("New Baeldung article: ${newestArticleUrl}") - } -} \ No newline at end of file diff --git a/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/observer/standard/BaeldungNewsletter.kt b/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/observer/standard/BaeldungNewsletter.kt deleted file mode 100644 index 0ec4796edb..0000000000 --- a/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/observer/standard/BaeldungNewsletter.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.baeldung.observer.standard - -import com.baeldung.observer.IObservable -import com.baeldung.observer.IObserver -import java.util.ArrayList - -class BaeldungNewsletter : IObservable { - override val observers: ArrayList = ArrayList() - var newestArticleUrl = "" - set(value) { - field = value - sendUpdateEvent() - } -} \ No newline at end of file diff --git a/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/observer/standard/BaeldungReader.kt b/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/observer/standard/BaeldungReader.kt deleted file mode 100644 index 14e686f2f8..0000000000 --- a/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/observer/standard/BaeldungReader.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.baeldung.observer.standard - -import com.baeldung.observer.IObserver - -class BaeldungReader(private var newsletter: BaeldungNewsletter) : IObserver { - override fun update() { - println("New Baeldung article: ${newsletter.newestArticleUrl}") - } -} \ No newline at end of file diff --git a/persistence-modules/r2dbc/pom.xml b/persistence-modules/r2dbc/pom.xml index b1de88e9ea..d0f53ba37c 100644 --- a/persistence-modules/r2dbc/pom.xml +++ b/persistence-modules/r2dbc/pom.xml @@ -10,11 +10,11 @@ Sample R2DBC Project - org.springframework.boot - spring-boot-starter-parent - 2.1.6.RELEASE - - + com.baeldung + parent-boot-2 + 0.0.1-SNAPSHOT + ../../parent-boot-2 + diff --git a/persistence-modules/r2dbc/src/test/java/com/baeldung/examples/r2dbc/R2dbcExampleApplicationTests.java b/persistence-modules/r2dbc/src/test/java/com/baeldung/examples/r2dbc/R2dbcExampleApplicationIntegrationTest.java similarity index 98% rename from persistence-modules/r2dbc/src/test/java/com/baeldung/examples/r2dbc/R2dbcExampleApplicationTests.java rename to persistence-modules/r2dbc/src/test/java/com/baeldung/examples/r2dbc/R2dbcExampleApplicationIntegrationTest.java index 3fb9e24a8e..7c3badc976 100644 --- a/persistence-modules/r2dbc/src/test/java/com/baeldung/examples/r2dbc/R2dbcExampleApplicationTests.java +++ b/persistence-modules/r2dbc/src/test/java/com/baeldung/examples/r2dbc/R2dbcExampleApplicationIntegrationTest.java @@ -19,7 +19,7 @@ import reactor.core.publisher.Flux; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -public class R2dbcExampleApplicationTests { +public class R2dbcExampleApplicationIntegrationTest { @Autowired diff --git a/spring-boot-modules/spring-boot-properties-2/src/main/java/com/baeldung/properties/yamlmap/factory/YamlPropertySourceFactory.java b/spring-boot-modules/spring-boot-properties-2/src/main/java/com/baeldung/properties/yamlmap/factory/YamlPropertySourceFactory.java deleted file mode 100644 index e46f7c9cba..0000000000 --- a/spring-boot-modules/spring-boot-properties-2/src/main/java/com/baeldung/properties/yamlmap/factory/YamlPropertySourceFactory.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.baeldung.properties.yamlmap.factory; - -import org.springframework.beans.factory.config.YamlPropertiesFactoryBean; -import org.springframework.core.env.PropertiesPropertySource; -import org.springframework.core.env.PropertySource; -import org.springframework.core.io.support.EncodedResource; -import org.springframework.core.io.support.PropertySourceFactory; - -import java.io.IOException; -import java.util.Properties; - -public class YamlPropertySourceFactory implements PropertySourceFactory { - - @Override - public PropertySource createPropertySource(String name, EncodedResource encodedResource) throws IOException { - YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean(); - factory.setResources(encodedResource.getResource()); - - Properties properties = factory.getObject(); - - return new PropertiesPropertySource(encodedResource.getResource() - .getFilename(), properties); - } - -} diff --git a/spring-boot-modules/spring-boot-properties-2/src/main/java/com/baeldung/properties/yamlmap/pojo/ServerProperties.java b/spring-boot-modules/spring-boot-properties-2/src/main/java/com/baeldung/properties/yamlmap/pojo/ServerProperties.java index 38b44fddc7..9d54daf070 100644 --- a/spring-boot-modules/spring-boot-properties-2/src/main/java/com/baeldung/properties/yamlmap/pojo/ServerProperties.java +++ b/spring-boot-modules/spring-boot-properties-2/src/main/java/com/baeldung/properties/yamlmap/pojo/ServerProperties.java @@ -4,13 +4,9 @@ import java.util.List; import java.util.Map; import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; -import com.baeldung.properties.yamlmap.factory.YamlPropertySourceFactory; - @Component -@PropertySource(value = "classpath:server.yml", factory = YamlPropertySourceFactory.class) @ConfigurationProperties(prefix = "server") public class ServerProperties { diff --git a/spring-boot-modules/spring-boot-properties-2/src/main/resources/server.yml b/spring-boot-modules/spring-boot-properties-2/src/main/resources/application.yml similarity index 100% rename from spring-boot-modules/spring-boot-properties-2/src/main/resources/server.yml rename to spring-boot-modules/spring-boot-properties-2/src/main/resources/application.yml diff --git a/spring-cloud/spring-cloud-circuit-breaker/pom.xml b/spring-cloud/spring-cloud-circuit-breaker/pom.xml index a179f3c831..ae44fa8199 100644 --- a/spring-cloud/spring-cloud-circuit-breaker/pom.xml +++ b/spring-cloud/spring-cloud-circuit-breaker/pom.xml @@ -16,14 +16,14 @@ - spring-snapshots - Spring Snapshots - https://repo.spring.io/libs-snapshot + spring-release + Spring Release + https://repo.spring.io/release - true + false - false + true diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-kafka/pom.xml b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kafka/pom.xml index 3a4cf6c56e..669499efb7 100644 --- a/spring-cloud/spring-cloud-stream/spring-cloud-stream-kafka/pom.xml +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kafka/pom.xml @@ -8,9 +8,10 @@ Simple Spring Cloud Stream - org.springframework.boot - spring-boot-starter-parent - 2.1.5.RELEASE + com.baeldung + parent-boot-2 + 0.0.1-SNAPSHOT + ../../../parent-boot-2 diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/pom.xml b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/pom.xml index 3817f2747a..bb515fcb36 100644 --- a/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/pom.xml +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/pom.xml @@ -7,10 +7,10 @@ spring-cloud-stream-kinesis - org.springframework.boot - spring-boot-starter-parent - 2.1.8.RELEASE - + com.baeldung + parent-boot-2 + 0.0.1-SNAPSHOT + ../../../parent-boot-2 diff --git a/structurizr/pom.xml b/structurizr/pom.xml index f1b4355dcf..b8efba0937 100644 --- a/structurizr/pom.xml +++ b/structurizr/pom.xml @@ -42,7 +42,7 @@ 1.8 1.8 - 1.0.0-RC5 + 1.0.0 \ No newline at end of file diff --git a/structurizr/src/main/java/com/baeldung/structurizr/StructurizrSimple.java b/structurizr/src/main/java/com/baeldung/structurizr/StructurizrSimple.java index b33a1d9a77..3f52ea657f 100644 --- a/structurizr/src/main/java/com/baeldung/structurizr/StructurizrSimple.java +++ b/structurizr/src/main/java/com/baeldung/structurizr/StructurizrSimple.java @@ -2,6 +2,8 @@ package com.baeldung.structurizr; import java.io.File; import java.io.StringWriter; +import java.util.HashSet; +import java.util.Set; import com.structurizr.Workspace; import com.structurizr.analysis.ComponentFinder; @@ -40,15 +42,31 @@ public class StructurizrSimple { addContainers(workspace); addComponents(workspace); addSpringComponents(workspace); - exportToPlantUml(workspace.getViews().getViewWithKey(SOFTWARE_SYSTEM_VIEW)); - exportToPlantUml(workspace.getViews().getViewWithKey(CONTAINER_VIEW)); - exportToPlantUml(workspace.getViews().getViewWithKey(COMPONENT_VIEW)); + exportToPlantUml(findViewWithKey(workspace.getViews(), SOFTWARE_SYSTEM_VIEW)); + exportToPlantUml(findViewWithKey(workspace.getViews(), CONTAINER_VIEW)); + exportToPlantUml(findViewWithKey(workspace.getViews(), COMPONENT_VIEW)); - exportToPlantUml(workspace.getViews().getViewWithKey(JVM2_COMPONENT_VIEW)); + exportToPlantUml(findViewWithKey(workspace.getViews(), JVM2_COMPONENT_VIEW)); addStyles(workspace.getViews()); //uploadToExternal(workspace); } + + private static View findViewWithKey(ViewSet viewSet, String key) { + if (key == null) { + throw new IllegalArgumentException("A key must be specified."); + } + + Set views = new HashSet<>(); + views.addAll(viewSet.getSystemLandscapeViews()); + views.addAll(viewSet.getSystemContextViews()); + views.addAll(viewSet.getContainerViews()); + views.addAll(viewSet.getComponentViews()); + views.addAll(viewSet.getDynamicViews()); + views.addAll(viewSet.getDeploymentViews()); + + return views.stream().filter(v -> key.equals(v.getKey())).findFirst().orElse(null); + } private static void addSpringComponents(Workspace workspace) throws Exception { Container jvm2 = workspace.getModel().getSoftwareSystemWithName(PAYMENT_TERMINAL).getContainerWithName("JVM-2"); diff --git a/testing-modules/selenium-junit-testng/pom.xml b/testing-modules/selenium-junit-testng/pom.xml index 3734bf72c9..8d661997f8 100644 --- a/testing-modules/selenium-junit-testng/pom.xml +++ b/testing-modules/selenium-junit-testng/pom.xml @@ -1,6 +1,7 @@ - + 4.0.0 selenium-junit-testng 0.0.1-SNAPSHOT @@ -40,35 +41,30 @@ hamcrest-all ${hamcrest-all.version} + + ru.yandex.qatools.ashot + ashot + ${ashot.version} + - src + + + src/main/resources + true + + + src/test/resources + true + + - - - live - - - - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire-plugin.version} - - - **/*LiveTest.java - - - - - - - - 6.10 3.4.0 + 1.5.4 diff --git a/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java b/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java index c5ad5182ff..b32e51d250 100644 --- a/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java +++ b/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java @@ -1,14 +1,12 @@ -package main.java.com.baeldung.selenium; - -import main.java.com.baeldung.selenium.config.SeleniumConfig; -import org.openqa.selenium.By; -import org.openqa.selenium.WebDriver; -import org.openqa.selenium.WebElement; -import org.openqa.selenium.firefox.FirefoxDriver; -import org.openqa.selenium.interactions.Actions; +package com.baeldung.selenium; import java.util.List; -import java.util.concurrent.TimeUnit; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; + +import com.baeldung.selenium.config.SeleniumConfig; public class SeleniumExample { @@ -17,15 +15,18 @@ public class SeleniumExample { public SeleniumExample() { config = new SeleniumConfig(); - config.getDriver().get(url); + config.getDriver() + .get(url); } public void closeWindow() { - this.config.getDriver().close(); + this.config.getDriver() + .close(); } public String getTitle() { - return this.config.getDriver().getTitle(); + return this.config.getDriver() + .getTitle(); } public void getAboutBaeldungPage() { @@ -35,29 +36,35 @@ public class SeleniumExample { } private void closeOverlay() { - List webElementList = this.config.getDriver().findElements(By.tagName("a")); + List webElementList = this.config.getDriver() + .findElements(By.tagName("a")); if (webElementList != null) { webElementList.stream() - .filter(webElement -> "Close".equalsIgnoreCase(webElement.getAttribute("title"))) - .filter(WebElement::isDisplayed) - .findAny() - .ifPresent(WebElement::click); + .filter(webElement -> "Close".equalsIgnoreCase(webElement.getAttribute("title"))) + .filter(WebElement::isDisplayed) + .findAny() + .ifPresent(WebElement::click); } } private void clickAboutLink() { - this.config.getDriver().findElement(By.partialLinkText("About")).click(); + Actions actions = new Actions(config.getDriver()); + WebElement aboutElement = this.config.getDriver() + .findElement(By.id("menu-item-6138")); + + actions.moveToElement(aboutElement).perform(); } private void clickAboutUsLink() { - Actions builder = new Actions(config.getDriver()); - WebElement element = this.config.getDriver().findElement(By.partialLinkText("About Baeldung.")); - builder.moveToElement(element).build().perform(); + WebElement element = this.config.getDriver() + .findElement(By.partialLinkText("About Baeldung.")); + element.click(); } public boolean isAuthorInformationAvailable() { return this.config.getDriver() - .findElement(By.cssSelector("article > .row > div")) - .isDisplayed(); + .getPageSource() + .contains("Hey ! I'm Eugen"); } + } diff --git a/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/config/SeleniumConfig.java b/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/config/SeleniumConfig.java index c84283b76b..b1b7754648 100644 --- a/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/config/SeleniumConfig.java +++ b/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/config/SeleniumConfig.java @@ -1,17 +1,14 @@ -package main.java.com.baeldung.selenium.config; +package com.baeldung.selenium.config; + +import java.io.File; +import java.util.concurrent.TimeUnit; import org.openqa.selenium.Capabilities; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; -import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.remote.DesiredCapabilities; -import java.io.File; -import java.util.concurrent.TimeUnit; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - public class SeleniumConfig { private WebDriver driver; @@ -19,15 +16,17 @@ public class SeleniumConfig { public SeleniumConfig() { Capabilities capabilities = DesiredCapabilities.firefox(); driver = new FirefoxDriver(capabilities); - driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); + driver.manage() + .timeouts() + .implicitlyWait(5, TimeUnit.SECONDS); } static { System.setProperty("webdriver.gecko.driver", findFile("geckodriver.mac")); } - static private String findFile(String filename) { - String paths[] = {"", "bin/", "target/classes"}; // if you have chromedriver somewhere else on the path, then put it here. + private static String findFile(String filename) { + String[] paths = { "", "bin/", "target/classes" }; // if you have chromedriver somewhere else on the path, then put it here. for (String path : paths) { if (new File(path + filename).exists()) return path + filename; @@ -40,7 +39,8 @@ public class SeleniumConfig { } public void navigateTo(String url) { - driver.navigate().to(url); + driver.navigate() + .to(url); } public void clickElement(WebElement element) { diff --git a/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/models/BaeldungAbout.java b/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/models/BaeldungAbout.java index 838beb5326..580cbd1f2b 100644 --- a/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/models/BaeldungAbout.java +++ b/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/models/BaeldungAbout.java @@ -1,7 +1,7 @@ -package main.java.com.baeldung.selenium.models; +package com.baeldung.selenium.models; -import main.java.com.baeldung.selenium.config.SeleniumConfig; -import main.java.com.baeldung.selenium.pages.BaeldungAboutPage; +import com.baeldung.selenium.config.SeleniumConfig; +import com.baeldung.selenium.pages.BaeldungAboutPage; import org.openqa.selenium.support.PageFactory; public class BaeldungAbout { diff --git a/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/pages/BaeldungAboutPage.java b/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/pages/BaeldungAboutPage.java index d33cb76398..064462fc10 100644 --- a/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/pages/BaeldungAboutPage.java +++ b/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/pages/BaeldungAboutPage.java @@ -1,4 +1,4 @@ -package main.java.com.baeldung.selenium.pages; +package com.baeldung.selenium.pages; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; diff --git a/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/pages/BaeldungHomePage.java b/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/pages/BaeldungHomePage.java index 55a8044375..d901bf3c34 100644 --- a/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/pages/BaeldungHomePage.java +++ b/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/pages/BaeldungHomePage.java @@ -1,6 +1,6 @@ -package main.java.com.baeldung.selenium.pages; +package com.baeldung.selenium.pages; -import main.java.com.baeldung.selenium.config.SeleniumConfig; +import com.baeldung.selenium.config.SeleniumConfig; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; @@ -8,7 +8,7 @@ import org.openqa.selenium.support.PageFactory; public class BaeldungHomePage { private SeleniumConfig config; - @FindBy(css=".header--menu > a") + @FindBy(css = ".nav--logo_mobile") private WebElement title; @FindBy(css = ".menu-start-here > a") private WebElement startHere; diff --git a/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/pages/StartHerePage.java b/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/pages/StartHerePage.java index 4f0ee9edcd..ccc166c351 100644 --- a/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/pages/StartHerePage.java +++ b/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/pages/StartHerePage.java @@ -1,6 +1,6 @@ -package main.java.com.baeldung.selenium.pages; +package com.baeldung.selenium.pages; -import main.java.com.baeldung.selenium.config.SeleniumConfig; +import com.baeldung.selenium.config.SeleniumConfig; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; diff --git a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/clickusingjavascript/SeleniumJavaScriptClickTest.java b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/clickusingjavascript/SeleniumJavaScriptClickLiveTest.java similarity index 74% rename from testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/clickusingjavascript/SeleniumJavaScriptClickTest.java rename to testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/clickusingjavascript/SeleniumJavaScriptClickLiveTest.java index 6d2ab8ef1f..de519a44fc 100644 --- a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/clickusingjavascript/SeleniumJavaScriptClickTest.java +++ b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/clickusingjavascript/SeleniumJavaScriptClickLiveTest.java @@ -1,4 +1,4 @@ -package java.com.baeldung.selenium.clickusingjavascript; +package com.baeldung.selenium.clickusingjavascript; import org.junit.After; import org.junit.Before; @@ -14,16 +14,18 @@ import org.openqa.selenium.support.ui.WebDriverWait; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -public class SeleniumJavaScriptClickTest { +import java.io.File; + +public class SeleniumJavaScriptClickLiveTest { private WebDriver driver; private WebDriverWait wait; @Before public void setUp() { - System.setProperty("webdriver.chrome.driver", "chromedriver.exe"); + System.setProperty("webdriver.chrome.driver", new File("src/main/resources/chromedriver.mac").getAbsolutePath()); driver = new ChromeDriver(); - wait = new WebDriverWait(driver, 5000); + wait = new WebDriverWait(driver, 20); } @After @@ -37,19 +39,21 @@ public class SeleniumJavaScriptClickTest { String title = driver.getTitle(); assertEquals("Baeldung | Java, Spring and Web Development tutorials", title); - wait.until(ExpectedConditions.elementToBeClickable(By.className("menu-search"))); - WebElement searchButton = driver.findElement(By.className("menu-search")); + wait.until(ExpectedConditions.elementToBeClickable(By.className("nav--menu_item_anchor"))); + WebElement searchButton = driver.findElement(By.className("nav--menu_item_anchor")); clickElement(searchButton); wait.until(ExpectedConditions.elementToBeClickable(By.id("search"))); WebElement searchInput = driver.findElement(By.id("search")); searchInput.sendKeys("Selenium"); - wait.until(ExpectedConditions.elementToBeClickable(By.className("btn-search"))); - WebElement seeSearchResultsButton = driver.findElement(By.className("btn-search")); + wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector(".btn-search"))); + WebElement seeSearchResultsButton = driver.findElement(By.cssSelector(".btn-search")); clickElement(seeSearchResultsButton); - int seleniumPostsCount = driver.findElements(By.className("post")).size(); + wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.className("post"))); + int seleniumPostsCount = driver.findElements(By.className("post")) + .size(); assertTrue(seleniumPostsCount > 0); } diff --git a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/SeleniumCookiesJUnitLiveTest.java b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/cookies/SeleniumCookiesJUnitLiveTest.java similarity index 80% rename from testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/SeleniumCookiesJUnitLiveTest.java rename to testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/cookies/SeleniumCookiesJUnitLiveTest.java index 0cbbf52454..337e3b85fb 100644 --- a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/SeleniumCookiesJUnitLiveTest.java +++ b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/cookies/SeleniumCookiesJUnitLiveTest.java @@ -1,4 +1,16 @@ -package test.java.com.baeldung.selenium.junit; +package com.baeldung.selenium.cookies; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.containsString; +import static org.hamcrest.Matchers.empty; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.not; +import static org.hamcrest.Matchers.nullValue; + +import java.io.File; +import java.util.Set; +import java.util.concurrent.TimeUnit; import org.junit.After; import org.junit.Before; @@ -9,12 +21,6 @@ import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.remote.DesiredCapabilities; -import java.util.Set; -import java.util.concurrent.TimeUnit; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.*; - public class SeleniumCookiesJUnitLiveTest { private WebDriver driver; @@ -22,11 +28,21 @@ public class SeleniumCookiesJUnitLiveTest { @Before public void setUp() { + System.setProperty("webdriver.gecko.driver", findFile("geckodriver.mac")); + Capabilities capabilities = DesiredCapabilities.firefox(); driver = new FirefoxDriver(capabilities); navUrl = "https://baeldung.com"; driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); - System.setProperty("webdriver.gecko.driver", "geckodriver.exe"); + } + + private static String findFile(String filename) { + String[] paths = { "", "bin/", "target/classes" }; // if you have chromedriver somewhere else on the path, then put it here. + for (String path : paths) { + if (new File(path + filename).exists()) + return path + filename; + } + return ""; } @After diff --git a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/SeleniumWithJUnitLiveTest.java b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/SeleniumWithJUnitLiveTest.java index b1a4149358..1b1035cc6c 100644 --- a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/SeleniumWithJUnitLiveTest.java +++ b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/SeleniumWithJUnitLiveTest.java @@ -1,16 +1,21 @@ -package test.java.com.baeldung.selenium.junit; +package com.baeldung.selenium.junit; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.io.IOException; -import main.java.com.baeldung.selenium.SeleniumExample; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; -import static org.testng.Assert.*; +import com.baeldung.selenium.SeleniumExample; public class SeleniumWithJUnitLiveTest { private static SeleniumExample seleniumExample; - private String expectedTitle = "Baeldung | Java, Spring and Web Development tutorials"; + private String expectedTitle = "About Baeldung | Baeldung"; @BeforeClass public static void setUp() { @@ -18,17 +23,17 @@ public class SeleniumWithJUnitLiveTest { } @AfterClass - public static void tearDown() { + public static void tearDown() throws IOException { seleniumExample.closeWindow(); } @Test public void whenAboutBaeldungIsLoaded_thenAboutEugenIsMentionedOnPage() { - seleniumExample.getAboutBaeldungPage(); - String actualTitle = seleniumExample.getTitle(); - assertNotNull(actualTitle); - assertEquals(expectedTitle, actualTitle); - assertTrue(seleniumExample.isAuthorInformationAvailable()); + seleniumExample.getAboutBaeldungPage(); + String actualTitle = seleniumExample.getTitle(); + assertNotNull(actualTitle); + assertEquals(expectedTitle, actualTitle); + assertTrue(seleniumExample.isAuthorInformationAvailable()); } } diff --git a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/SeleniumPageObjectLiveTest.java b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/pages/SeleniumPageObjectLiveTest.java similarity index 79% rename from testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/SeleniumPageObjectLiveTest.java rename to testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/pages/SeleniumPageObjectLiveTest.java index 8493122414..96772821a9 100644 --- a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/SeleniumPageObjectLiveTest.java +++ b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/pages/SeleniumPageObjectLiveTest.java @@ -1,9 +1,9 @@ -package test.java.com.baeldung.selenium.junit; +package com.baeldung.selenium.pages; -import main.java.com.baeldung.selenium.config.SeleniumConfig; -import main.java.com.baeldung.selenium.models.BaeldungAbout; -import main.java.com.baeldung.selenium.pages.BaeldungHomePage; -import main.java.com.baeldung.selenium.pages.StartHerePage; +import com.baeldung.selenium.config.SeleniumConfig; +import com.baeldung.selenium.models.BaeldungAbout; +import com.baeldung.selenium.pages.BaeldungHomePage; +import com.baeldung.selenium.pages.StartHerePage; import org.junit.After; import org.junit.Before; import org.junit.Test; diff --git a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/screenshot/TakeScreenShotSeleniumLiveTest.java b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/screenshot/TakeScreenShotSeleniumLiveTest.java new file mode 100644 index 0000000000..cf705bb81f --- /dev/null +++ b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/screenshot/TakeScreenShotSeleniumLiveTest.java @@ -0,0 +1,85 @@ +package com.baeldung.selenium.screenshot; + +import static org.junit.Assert.assertTrue; + +import java.io.File; +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import javax.imageio.ImageIO; + +import org.apache.commons.io.FileUtils; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import org.openqa.selenium.By; +import org.openqa.selenium.Capabilities; +import org.openqa.selenium.OutputType; +import org.openqa.selenium.TakesScreenshot; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.remote.DesiredCapabilities; + +import ru.yandex.qatools.ashot.AShot; +import ru.yandex.qatools.ashot.Screenshot; +import ru.yandex.qatools.ashot.coordinates.WebDriverCoordsProvider; +import ru.yandex.qatools.ashot.shooting.ShootingStrategies; + +public class TakeScreenShotSeleniumLiveTest { + + private static ChromeDriver driver; + + @BeforeClass + public static void setUp() { + System.setProperty("webdriver.chrome.driver", resolveResourcePath("chromedriver.mac")); + + Capabilities capabilities = DesiredCapabilities.chrome(); + driver = new ChromeDriver(capabilities); + driver.manage() + .timeouts() + .implicitlyWait(5, TimeUnit.SECONDS); + + driver.get("http://www.google.com/"); + } + + @AfterClass + public static void tearDown() throws IOException { + driver.close(); + + System.clearProperty("webdriver.chrome.driver"); + } + + @Test + public void whenGoogleIsLoaded_thenCaptureScreenshot() throws IOException { + takeScreenshot(resolveTestResourcePath("google-home.png")); + + assertTrue(new File(resolveTestResourcePath("google-home.png")).exists()); + } + + @Test + public void whenGoogleIsLoaded_thenCaptureLogo() throws IOException { + WebElement logo = driver.findElement(By.id("hplogo")); + + Screenshot screenshot = new AShot().shootingStrategy(ShootingStrategies.viewportPasting(1000)) + .coordsProvider(new WebDriverCoordsProvider()) + .takeScreenshot(driver, logo); + + ImageIO.write(screenshot.getImage(), "jpg", new File(resolveTestResourcePath("google-logo.png"))); + assertTrue(new File(resolveTestResourcePath("google-logo.png")).exists()); + } + + public void takeScreenshot(String pathname) throws IOException { + File src = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE); + FileUtils.copyFile(src, new File(pathname)); + } + + private static String resolveResourcePath(String filename) { + File file = new File("src/main/resources/" + filename); + return file.getAbsolutePath(); + } + + private static String resolveTestResourcePath(String filename) { + File file = new File("src/test/resources/" + filename); + return file.getAbsolutePath(); + } +} diff --git a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/testng/SeleniumWithTestNGLiveTest.java b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/testng/SeleniumWithTestNGLiveTest.java index 94426edc6d..85fa00c0ab 100644 --- a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/testng/SeleniumWithTestNGLiveTest.java +++ b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/testng/SeleniumWithTestNGLiveTest.java @@ -1,16 +1,19 @@ -package test.java.com.baeldung.selenium.testng; +package com.baeldung.selenium.testng; + +import com.baeldung.selenium.SeleniumExample; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; -import main.java.com.baeldung.selenium.SeleniumExample; import org.testng.annotations.AfterSuite; import org.testng.annotations.BeforeSuite; import org.testng.annotations.Test; -import static org.testng.Assert.*; - public class SeleniumWithTestNGLiveTest { private SeleniumExample seleniumExample; - private String expectedTitle = "Baeldung | Java, Spring and Web Development tutorials"; + private String expectedTitle = "About Baeldung | Baeldung"; @BeforeSuite public void setUp() {