Merge remote-tracking branch 'eugenp/master'
This commit is contained in:
commit
c3f2c6dee9
|
@ -0,0 +1,17 @@
|
||||||
|
package com.baeldung.zoneddatetime;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.OffsetDateTime;
|
||||||
|
import java.time.ZoneId;
|
||||||
|
import java.time.ZoneOffset;
|
||||||
|
|
||||||
|
public class OffsetDateTimeExample {
|
||||||
|
|
||||||
|
public OffsetDateTime getCurrentTimeByZoneOffset(String region) {
|
||||||
|
LocalDateTime now = LocalDateTime.now();
|
||||||
|
ZoneId zone = ZoneId.of(region);
|
||||||
|
ZoneOffset zoneOffSet= zone.getRules().getOffset(now);
|
||||||
|
OffsetDateTime date = OffsetDateTime.now(zoneOffSet);
|
||||||
|
return date;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
package com.baeldung.zoneddatetime;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.OffsetTime;
|
||||||
|
import java.time.ZoneId;
|
||||||
|
import java.time.ZoneOffset;
|
||||||
|
|
||||||
|
public class OffsetTimeExample {
|
||||||
|
|
||||||
|
public OffsetTime getCurrentTimeByZoneOffset(String region) {
|
||||||
|
LocalDateTime now = LocalDateTime.now();
|
||||||
|
ZoneId zone = ZoneId.of(region);
|
||||||
|
ZoneOffset zoneOffSet = zone.getRules()
|
||||||
|
.getOffset(now);
|
||||||
|
OffsetTime time = OffsetTime.now(zoneOffSet);
|
||||||
|
return time;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
package com.baeldung.zoneddatetime;
|
||||||
|
|
||||||
|
import java.time.ZoneId;
|
||||||
|
import java.time.ZonedDateTime;
|
||||||
|
|
||||||
|
public class ZoneDateTimeExample {
|
||||||
|
|
||||||
|
public ZonedDateTime getCurrentTimeByZoneId(String region) {
|
||||||
|
ZoneId zone = ZoneId.of(region);
|
||||||
|
ZonedDateTime date = ZonedDateTime.now(zone);
|
||||||
|
return date;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ZonedDateTime convertZonedDateTime(ZonedDateTime sourceDate, String destZone) {
|
||||||
|
|
||||||
|
ZoneId destZoneId = ZoneId.of(destZone);
|
||||||
|
ZonedDateTime destDate = sourceDate.withZoneSameInstant(destZoneId);
|
||||||
|
|
||||||
|
return destDate;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
package com.baeldung.zoneddatetime;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.OffsetDateTime;
|
||||||
|
import java.time.ZoneId;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class OffsetDateTimeExampleUnitTest {
|
||||||
|
|
||||||
|
OffsetDateTimeExample offsetDateTimeExample = new OffsetDateTimeExample();
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenZoneOffset_whenGetCurrentTime_thenResultHasZone() {
|
||||||
|
String zone = "Europe/Berlin";
|
||||||
|
OffsetDateTime time = offsetDateTimeExample.getCurrentTimeByZoneOffset(zone);
|
||||||
|
|
||||||
|
assertTrue(time.getOffset()
|
||||||
|
.equals(ZoneId.of(zone)
|
||||||
|
.getRules()
|
||||||
|
.getOffset(LocalDateTime.now())));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
package com.baeldung.zoneddatetime;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.OffsetTime;
|
||||||
|
import java.time.ZoneId;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class OffsetTimeExampleUnitTest {
|
||||||
|
|
||||||
|
OffsetTimeExample offsetTimeExample = new OffsetTimeExample();
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenZoneOffset_whenGetCurrentTime_thenResultHasZone() {
|
||||||
|
String zone = "Europe/Berlin";
|
||||||
|
OffsetTime time = offsetTimeExample.getCurrentTimeByZoneOffset(zone);
|
||||||
|
|
||||||
|
assertTrue(time.getOffset()
|
||||||
|
.equals(ZoneId.of(zone)
|
||||||
|
.getRules()
|
||||||
|
.getOffset(LocalDateTime.now())));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
package com.baeldung.zoneddatetime;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
import java.time.ZoneId;
|
||||||
|
import java.time.ZonedDateTime;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class ZoneDateTimeExampleUnitTest {
|
||||||
|
|
||||||
|
ZoneDateTimeExample zoneDateTimeExample = new ZoneDateTimeExample();
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenZone_whenGetCurrentTime_thenResultHasZone() {
|
||||||
|
String zone = "Europe/Berlin";
|
||||||
|
ZonedDateTime time = zoneDateTimeExample.getCurrentTimeByZoneId(zone);
|
||||||
|
assertTrue(time.getZone()
|
||||||
|
.equals(ZoneId.of(zone)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenZones_whenConvertDateByZone_thenGetConstantDiff() {
|
||||||
|
String sourceZone = "Europe/Berlin";
|
||||||
|
String destZone = "Asia/Tokyo";
|
||||||
|
ZonedDateTime sourceDate = zoneDateTimeExample.getCurrentTimeByZoneId(sourceZone);
|
||||||
|
ZonedDateTime destDate = zoneDateTimeExample.convertZonedDateTime(sourceDate, destZone);
|
||||||
|
assertTrue(sourceDate.toInstant().compareTo(destDate.toInstant()) == 0);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
package com.baeldung.kotlin
|
||||||
|
|
||||||
|
import org.junit.Test
|
||||||
|
import kotlin.test.assertEquals
|
||||||
|
|
||||||
|
class StringConcatenationTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun givenTwoStrings_concatenateWithTemplates_thenEquals() {
|
||||||
|
val a = "Hello"
|
||||||
|
val b = "Baeldung"
|
||||||
|
val c = "$a $b"
|
||||||
|
|
||||||
|
assertEquals("Hello Baeldung", c)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun givenTwoStrings_concatenateWithPlusOperator_thenEquals() {
|
||||||
|
val a = "Hello"
|
||||||
|
val b = "Baeldung"
|
||||||
|
val c = a + " " + b
|
||||||
|
|
||||||
|
assertEquals("Hello Baeldung", c)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun givenTwoStrings_concatenateWithStringBuilder_thenEquals() {
|
||||||
|
val a = "Hello"
|
||||||
|
val b = "Baeldung"
|
||||||
|
|
||||||
|
val builder = StringBuilder()
|
||||||
|
builder.append(a).append(" ").append(b)
|
||||||
|
|
||||||
|
val c = builder.toString()
|
||||||
|
|
||||||
|
assertEquals("Hello Baeldung", c)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun givenTwoStrings_concatenateWithPlusMethod_thenEquals() {
|
||||||
|
val a = "Hello"
|
||||||
|
val b = "Baeldung"
|
||||||
|
val c = a.plus(" ").plus(b)
|
||||||
|
|
||||||
|
assertEquals("Hello Baeldung", c)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
package com.baeldung.kotlin.gson
|
||||||
|
|
||||||
|
import com.google.gson.Gson
|
||||||
|
|
||||||
|
import org.junit.Assert
|
||||||
|
import org.junit.Test
|
||||||
|
|
||||||
|
class GsonUnitTest {
|
||||||
|
|
||||||
|
var gson = Gson()
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun givenObject_thenGetJSONString() {
|
||||||
|
var jsonString = gson.toJson(TestModel(1,"Test"))
|
||||||
|
Assert.assertEquals(jsonString, "{\"id\":1,\"description\":\"Test\"}")
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun givenJSONString_thenGetObject() {
|
||||||
|
var jsonString = "{\"id\":1,\"description\":\"Test\"}";
|
||||||
|
var testModel = gson.fromJson(jsonString, TestModel::class.java)
|
||||||
|
Assert.assertEquals(testModel.id, 1)
|
||||||
|
Assert.assertEquals(testModel.description, "Test")
|
||||||
|
}
|
||||||
|
|
||||||
|
data class TestModel(
|
||||||
|
val id: Int,
|
||||||
|
val description: String
|
||||||
|
)
|
||||||
|
}
|
|
@ -1,5 +1,11 @@
|
||||||
package com.baeldung.hibernate;
|
package com.baeldung.hibernate;
|
||||||
|
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import com.baeldung.hibernate.entities.DeptEmployee;
|
||||||
import com.baeldung.hibernate.optimisticlocking.OptimisticLockingCourse;
|
import com.baeldung.hibernate.optimisticlocking.OptimisticLockingCourse;
|
||||||
import com.baeldung.hibernate.optimisticlocking.OptimisticLockingStudent;
|
import com.baeldung.hibernate.optimisticlocking.OptimisticLockingStudent;
|
||||||
import com.baeldung.hibernate.pessimisticlocking.Individual;
|
import com.baeldung.hibernate.pessimisticlocking.Individual;
|
||||||
|
@ -16,10 +22,30 @@ import org.hibernate.boot.MetadataSources;
|
||||||
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
|
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
|
||||||
import org.hibernate.service.ServiceRegistry;
|
import org.hibernate.service.ServiceRegistry;
|
||||||
|
|
||||||
import java.io.FileInputStream;
|
import com.baeldung.hibernate.pojo.Course;
|
||||||
import java.io.IOException;
|
import com.baeldung.hibernate.pojo.Employee;
|
||||||
import java.net.URL;
|
import com.baeldung.hibernate.pojo.EntityDescription;
|
||||||
import java.util.Properties;
|
import com.baeldung.hibernate.pojo.OrderEntry;
|
||||||
|
import com.baeldung.hibernate.pojo.OrderEntryIdClass;
|
||||||
|
import com.baeldung.hibernate.pojo.OrderEntryPK;
|
||||||
|
import com.baeldung.hibernate.pojo.Person;
|
||||||
|
import com.baeldung.hibernate.pojo.Phone;
|
||||||
|
import com.baeldung.hibernate.pojo.PointEntity;
|
||||||
|
import com.baeldung.hibernate.pojo.PolygonEntity;
|
||||||
|
import com.baeldung.hibernate.pojo.Product;
|
||||||
|
import com.baeldung.hibernate.pojo.Student;
|
||||||
|
import com.baeldung.hibernate.pojo.TemporalValues;
|
||||||
|
import com.baeldung.hibernate.pojo.User;
|
||||||
|
import com.baeldung.hibernate.pojo.UserProfile;
|
||||||
|
import com.baeldung.hibernate.pojo.inheritance.Animal;
|
||||||
|
import com.baeldung.hibernate.pojo.inheritance.Bag;
|
||||||
|
import com.baeldung.hibernate.pojo.inheritance.Book;
|
||||||
|
import com.baeldung.hibernate.pojo.inheritance.Car;
|
||||||
|
import com.baeldung.hibernate.pojo.inheritance.MyEmployee;
|
||||||
|
import com.baeldung.hibernate.pojo.inheritance.MyProduct;
|
||||||
|
import com.baeldung.hibernate.pojo.inheritance.Pen;
|
||||||
|
import com.baeldung.hibernate.pojo.inheritance.Pet;
|
||||||
|
import com.baeldung.hibernate.pojo.inheritance.Vehicle;
|
||||||
|
|
||||||
public class HibernateUtil {
|
public class HibernateUtil {
|
||||||
private static SessionFactory sessionFactory;
|
private static SessionFactory sessionFactory;
|
||||||
|
@ -72,6 +98,8 @@ public class HibernateUtil {
|
||||||
metadataSources.addAnnotatedClass(PessimisticLockingCourse.class);
|
metadataSources.addAnnotatedClass(PessimisticLockingCourse.class);
|
||||||
metadataSources.addAnnotatedClass(com.baeldung.hibernate.pessimisticlocking.Customer.class);
|
metadataSources.addAnnotatedClass(com.baeldung.hibernate.pessimisticlocking.Customer.class);
|
||||||
metadataSources.addAnnotatedClass(com.baeldung.hibernate.pessimisticlocking.Address.class);
|
metadataSources.addAnnotatedClass(com.baeldung.hibernate.pessimisticlocking.Address.class);
|
||||||
|
metadataSources.addAnnotatedClass(DeptEmployee.class);
|
||||||
|
metadataSources.addAnnotatedClass(com.baeldung.hibernate.entities.Department.class);
|
||||||
metadataSources.addAnnotatedClass(OptimisticLockingCourse.class);
|
metadataSources.addAnnotatedClass(OptimisticLockingCourse.class);
|
||||||
metadataSources.addAnnotatedClass(OptimisticLockingStudent.class);
|
metadataSources.addAnnotatedClass(OptimisticLockingStudent.class);
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
package com.baeldung.hibernate.entities;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.persistence.*;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
public class Department {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.SEQUENCE)
|
||||||
|
private long id;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@OneToMany(mappedBy="department")
|
||||||
|
private List<DeptEmployee> employees;
|
||||||
|
|
||||||
|
public Department(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<DeptEmployee> getEmployees() {
|
||||||
|
return employees;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEmployees(List<DeptEmployee> employees) {
|
||||||
|
this.employees = employees;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,65 @@
|
||||||
|
package com.baeldung.hibernate.entities;
|
||||||
|
|
||||||
|
import javax.persistence.*;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
public class DeptEmployee {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.SEQUENCE)
|
||||||
|
private long id;
|
||||||
|
|
||||||
|
private String employeeNumber;
|
||||||
|
|
||||||
|
private String designation;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@ManyToOne
|
||||||
|
private Department department;
|
||||||
|
|
||||||
|
public DeptEmployee(String name, String employeeNumber, Department department) {
|
||||||
|
this.name = name;
|
||||||
|
this.employeeNumber = employeeNumber;
|
||||||
|
this.department = department;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getEmployeeNumber() {
|
||||||
|
return employeeNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEmployeeNumber(String employeeNumber) {
|
||||||
|
this.employeeNumber = employeeNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Department getDepartment() {
|
||||||
|
return department;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDepartment(Department department) {
|
||||||
|
this.department = department;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDesignation() {
|
||||||
|
return designation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDesignation(String designation) {
|
||||||
|
this.designation = designation;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
package com.baeldung.hibernate.pojo;
|
||||||
|
|
||||||
|
public class Result {
|
||||||
|
private String employeeName;
|
||||||
|
|
||||||
|
private String departmentName;
|
||||||
|
|
||||||
|
public Result(String employeeName, String departmentName) {
|
||||||
|
this.employeeName = employeeName;
|
||||||
|
this.departmentName = departmentName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getEmployeeName() {
|
||||||
|
return employeeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEmployeeName(String employeeName) {
|
||||||
|
this.employeeName = employeeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDepartmentName() {
|
||||||
|
return departmentName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDepartmentName(String departmentName) {
|
||||||
|
this.departmentName = departmentName;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,77 @@
|
||||||
|
package com.baeldung.hibernate;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.baeldung.hibernate.entities.DeptEmployee;
|
||||||
|
import org.hibernate.Session;
|
||||||
|
import org.hibernate.Transaction;
|
||||||
|
import org.hibernate.query.Query;
|
||||||
|
import org.hibernate.transform.Transformers;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import com.baeldung.hibernate.entities.Department;
|
||||||
|
import com.baeldung.hibernate.pojo.Result;
|
||||||
|
|
||||||
|
public class CustomClassIntegrationTest {
|
||||||
|
|
||||||
|
private Session session;
|
||||||
|
|
||||||
|
private Transaction transaction;
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
public void setUp() throws IOException {
|
||||||
|
session = HibernateUtil.getSessionFactory().openSession();
|
||||||
|
transaction = session.beginTransaction();
|
||||||
|
session.createNativeQuery("delete from manager").executeUpdate();
|
||||||
|
session.createNativeQuery("delete from department").executeUpdate();
|
||||||
|
Department department = new Department("Sales");
|
||||||
|
DeptEmployee employee = new DeptEmployee("John Smith", "001", department);
|
||||||
|
session.persist(department);
|
||||||
|
session.persist(employee);
|
||||||
|
transaction.commit();
|
||||||
|
transaction = session.beginTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenAllManagersAreSelected_ThenObjectGraphIsReturned() {
|
||||||
|
Query<DeptEmployee> query = session.createQuery("from com.baeldung.hibernate.entities.DeptEmployee");
|
||||||
|
List<DeptEmployee> deptEmployees = query.list();
|
||||||
|
DeptEmployee deptEmployee = deptEmployees.get(0);
|
||||||
|
assertEquals("John Smith", deptEmployee.getName());
|
||||||
|
assertEquals("Sales", deptEmployee.getDepartment().getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenIndividualPropertiesAreSelected_ThenObjectArrayIsReturned() {
|
||||||
|
Query query = session.createQuery("select m.name, m.department.name from com.baeldung.hibernate.entities.DeptEmployee m");
|
||||||
|
List managers = query.list();
|
||||||
|
Object[] manager = (Object[]) managers.get(0);
|
||||||
|
assertEquals("John Smith", manager[0]);
|
||||||
|
assertEquals("Sales", manager[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenResultConstructorInSelect_ThenListOfResultIsReturned() {
|
||||||
|
Query<Result> query = session.createQuery("select new com.baeldung.hibernate.pojo.Result(m.name, m.department.name) "
|
||||||
|
+ "from DeptEmployee m");
|
||||||
|
List<Result> results = query.list();
|
||||||
|
Result result = results.get(0);
|
||||||
|
assertEquals("John Smith", result.getEmployeeName());
|
||||||
|
assertEquals("Sales", result.getDepartmentName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenResultTransformerOnQuery_ThenListOfResultIsReturned() {
|
||||||
|
Query query = session.createQuery("select m.name as employeeName, m.department.name as departmentName "
|
||||||
|
+ "from com.baeldung.hibernate.entities.DeptEmployee m");
|
||||||
|
query.setResultTransformer(Transformers.aliasToBean(Result.class));
|
||||||
|
List<Result> results = query.list();
|
||||||
|
Result result = results.get(0);
|
||||||
|
assertEquals("John Smith", result.getEmployeeName());
|
||||||
|
assertEquals("Sales", result.getDepartmentName());
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,5 +6,4 @@
|
||||||
- [Writing Specifications with Kotlin and Spek](http://www.baeldung.com/kotlin-spek)
|
- [Writing Specifications with Kotlin and Spek](http://www.baeldung.com/kotlin-spek)
|
||||||
- [Processing JSON with Kotlin and Klaxson](http://www.baeldung.com/kotlin-json-klaxson)
|
- [Processing JSON with Kotlin and Klaxson](http://www.baeldung.com/kotlin-json-klaxson)
|
||||||
- [Kotlin with Ktor](http://www.baeldung.com/kotlin-ktor)
|
- [Kotlin with Ktor](http://www.baeldung.com/kotlin-ktor)
|
||||||
- [Idiomatic Logging in Kotlin](http://www.baeldung.com/kotlin-logging)
|
- [Guide to the Kotlin Exposed Framework](https://www.baeldung.com/kotlin-exposed-persistence)
|
||||||
- [Guide to the Kotlin Exposed Framework](https://www.baeldung.com/kotlin-exposed-persistence)
|
|
||||||
|
|
|
@ -147,7 +147,6 @@
|
||||||
<artifactId>jmapper-core</artifactId>
|
<artifactId>jmapper-core</artifactId>
|
||||||
<version>${jmapper.version}</version>
|
<version>${jmapper.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- crunch project -->
|
<!-- crunch project -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.crunch</groupId>
|
<groupId>org.apache.crunch</groupId>
|
||||||
|
@ -185,7 +184,72 @@
|
||||||
</exclusion>
|
</exclusion>
|
||||||
</exclusions>
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.flink</groupId>
|
||||||
|
<artifactId>flink-connector-kafka-0.11_2.11</artifactId>
|
||||||
|
<version>${flink.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.flink</groupId>
|
||||||
|
<artifactId>flink-streaming-java_2.11</artifactId>
|
||||||
|
<version>${flink.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.fasterxml.jackson.datatype</groupId>
|
||||||
|
<artifactId>jackson-datatype-jsr310</artifactId>
|
||||||
|
<version>${jackson.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.fasterxml.jackson.core</groupId>
|
||||||
|
<artifactId>jackson-databind</artifactId>
|
||||||
|
<version>${jackson.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.flink</groupId>
|
||||||
|
<artifactId>flink-core</artifactId>
|
||||||
|
<version>${flink.version}</version>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>commons-logging</artifactId>
|
||||||
|
<groupId>commons-logging</groupId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.flink</groupId>
|
||||||
|
<artifactId>flink-java</artifactId>
|
||||||
|
<version>${flink.version}</version>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>commons-logging</artifactId>
|
||||||
|
<groupId>commons-logging</groupId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.flink</groupId>
|
||||||
|
<artifactId>flink-test-utils_2.11</artifactId>
|
||||||
|
<version>${flink.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.assertj</groupId>
|
||||||
|
<artifactId>assertj-core</artifactId>
|
||||||
|
<version>${assertj.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.awaitility</groupId>
|
||||||
|
<artifactId>awaitility</artifactId>
|
||||||
|
<version>${awaitility.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.awaitility</groupId>
|
||||||
|
<artifactId>awaitility-proxy</artifactId>
|
||||||
|
<version>${awaitility.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
@ -336,6 +400,10 @@
|
||||||
<ignite.version>2.4.0</ignite.version>
|
<ignite.version>2.4.0</ignite.version>
|
||||||
<gson.version>2.8.2</gson.version>
|
<gson.version>2.8.2</gson.version>
|
||||||
<cache.version>1.1.0</cache.version>
|
<cache.version>1.1.0</cache.version>
|
||||||
|
<flink.version>1.5.0</flink.version>
|
||||||
|
<jackson.version>2.8.5</jackson.version>
|
||||||
|
<awaitility.version>3.0.0</awaitility.version>
|
||||||
|
<assertj.version>3.6.2</assertj.version>
|
||||||
<hazelcast.version>3.8.4</hazelcast.version>
|
<hazelcast.version>3.8.4</hazelcast.version>
|
||||||
<maven-antrun-plugin.version>1.8</maven-antrun-plugin.version>
|
<maven-antrun-plugin.version>1.8</maven-antrun-plugin.version>
|
||||||
<build-helper-maven-plugin.version>3.0.0</build-helper-maven-plugin.version>
|
<build-helper-maven-plugin.version>3.0.0</build-helper-maven-plugin.version>
|
||||||
|
|
|
@ -18,7 +18,6 @@ public class InputMessage {
|
||||||
public String getSender() {
|
public String getSender() {
|
||||||
return sender;
|
return sender;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSender(String sender) {
|
public void setSender(String sender) {
|
||||||
this.sender = sender;
|
this.sender = sender;
|
||||||
}
|
}
|
|
@ -1,8 +1,6 @@
|
||||||
package com.baeldung.flink.schema;
|
package com.baeldung.flink.schema;
|
||||||
|
|
||||||
import com.baeldung.flink.model.InputMessage;
|
import com.baeldung.flink.model.InputMessage;
|
||||||
import com.fasterxml.jackson.annotation.JsonAutoDetect;
|
|
||||||
import com.fasterxml.jackson.annotation.PropertyAccessor;
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
||||||
import org.apache.flink.api.common.serialization.DeserializationSchema;
|
import org.apache.flink.api.common.serialization.DeserializationSchema;
|
|
@ -154,45 +154,7 @@
|
||||||
<artifactId>commons-dbutils</artifactId>
|
<artifactId>commons-dbutils</artifactId>
|
||||||
<version>${commons.dbutils.version}</version>
|
<version>${commons.dbutils.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.flink</groupId>
|
|
||||||
<artifactId>flink-connector-kafka-0.11_2.11</artifactId>
|
|
||||||
<version>${flink.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.flink</groupId>
|
|
||||||
<artifactId>flink-streaming-java_2.11</artifactId>
|
|
||||||
<version>${flink.version}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.flink</groupId>
|
|
||||||
<artifactId>flink-core</artifactId>
|
|
||||||
<version>${flink.version}</version>
|
|
||||||
<exclusions>
|
|
||||||
<exclusion>
|
|
||||||
<artifactId>commons-logging</artifactId>
|
|
||||||
<groupId>commons-logging</groupId>
|
|
||||||
</exclusion>
|
|
||||||
</exclusions>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.flink</groupId>
|
|
||||||
<artifactId>flink-java</artifactId>
|
|
||||||
<version>${flink.version}</version>
|
|
||||||
<exclusions>
|
|
||||||
<exclusion>
|
|
||||||
<artifactId>commons-logging</artifactId>
|
|
||||||
<groupId>commons-logging</groupId>
|
|
||||||
</exclusion>
|
|
||||||
</exclusions>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.flink</groupId>
|
|
||||||
<artifactId>flink-test-utils_2.11</artifactId>
|
|
||||||
<version>${flink.version}</version>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.commons</groupId>
|
<groupId>org.apache.commons</groupId>
|
||||||
<artifactId>commons-math3</artifactId>
|
<artifactId>commons-math3</artifactId>
|
||||||
|
@ -239,11 +201,7 @@
|
||||||
<artifactId>jackson-databind</artifactId>
|
<artifactId>jackson-databind</artifactId>
|
||||||
<version>${jackson.version}</version>
|
<version>${jackson.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>com.fasterxml.jackson.datatype</groupId>
|
|
||||||
<artifactId>jackson-datatype-jsr310</artifactId>
|
|
||||||
<version>${jackson.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<!-- JDO -->
|
<!-- JDO -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.datanucleus</groupId>
|
<groupId>org.datanucleus</groupId>
|
||||||
|
@ -900,7 +858,6 @@
|
||||||
|
|
||||||
<httpclient.version>4.5.3</httpclient.version>
|
<httpclient.version>4.5.3</httpclient.version>
|
||||||
<commons.io.version>2.5</commons.io.version>
|
<commons.io.version>2.5</commons.io.version>
|
||||||
<flink.version>1.5.0</flink.version>
|
|
||||||
<jackson.version>2.8.5</jackson.version>
|
<jackson.version>2.8.5</jackson.version>
|
||||||
<neuroph.version>2.92</neuroph.version>
|
<neuroph.version>2.92</neuroph.version>
|
||||||
<serenity.version>1.9.26</serenity.version>
|
<serenity.version>1.9.26</serenity.version>
|
||||||
|
|
|
@ -18,16 +18,19 @@ import java.util.List;
|
||||||
public class BeanExamples {
|
public class BeanExamples {
|
||||||
|
|
||||||
public static List<CsvBean> beanBuilderExample(Path path, Class clazz) {
|
public static List<CsvBean> beanBuilderExample(Path path, Class clazz) {
|
||||||
|
ColumnPositionMappingStrategy ms = new ColumnPositionMappingStrategy();
|
||||||
|
return beanBuilderExample(path, clazz, ms);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<CsvBean> beanBuilderExample(Path path, Class clazz, MappingStrategy ms) {
|
||||||
CsvTransfer csvTransfer = new CsvTransfer();
|
CsvTransfer csvTransfer = new CsvTransfer();
|
||||||
try {
|
try {
|
||||||
ColumnPositionMappingStrategy ms = new ColumnPositionMappingStrategy();
|
|
||||||
ms.setType(clazz);
|
ms.setType(clazz);
|
||||||
|
|
||||||
Reader reader = Files.newBufferedReader(path);
|
Reader reader = Files.newBufferedReader(path);
|
||||||
CsvToBean cb = new CsvToBeanBuilder(reader)
|
CsvToBean cb = new CsvToBeanBuilder(reader).withType(clazz)
|
||||||
.withType(clazz)
|
.withMappingStrategy(ms)
|
||||||
.withMappingStrategy(ms)
|
.build();
|
||||||
.build();
|
|
||||||
|
|
||||||
csvTransfer.setCsvList(cb.parse());
|
csvTransfer.setCsvList(cb.parse());
|
||||||
reader.close();
|
reader.close();
|
||||||
|
@ -40,11 +43,10 @@ public class BeanExamples {
|
||||||
|
|
||||||
public static String writeCsvFromBean(Path path) {
|
public static String writeCsvFromBean(Path path) {
|
||||||
try {
|
try {
|
||||||
Writer writer = new FileWriter(path.toString());
|
Writer writer = new FileWriter(path.toString());
|
||||||
|
|
||||||
StatefulBeanToCsv sbc = new StatefulBeanToCsvBuilder(writer)
|
StatefulBeanToCsv sbc = new StatefulBeanToCsvBuilder(writer).withSeparator(CSVWriter.DEFAULT_SEPARATOR)
|
||||||
.withSeparator(CSVWriter.DEFAULT_SEPARATOR)
|
.build();
|
||||||
.build();
|
|
||||||
|
|
||||||
List<CsvBean> list = new ArrayList<>();
|
List<CsvBean> list = new ArrayList<>();
|
||||||
list.add(new WriteExampleBean("Test1", "sfdsf", "fdfd"));
|
list.add(new WriteExampleBean("Test1", "sfdsf", "fdfd"));
|
||||||
|
|
|
@ -42,4 +42,13 @@ public class BidiMapUnitTest {
|
||||||
map.put("key1", "value1");
|
map.put("key1", "value1");
|
||||||
assertEquals(map.getKey("value1"), "key1");
|
assertEquals(map.getKey("value1"), "key1");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenKeyValue_whenAddValue_thenReplaceFirstKey() {
|
||||||
|
BidiMap<String, String> map = new DualHashBidiMap<>();
|
||||||
|
map.put("key1", "value1");
|
||||||
|
map.put("key2", "value1");
|
||||||
|
assertEquals(map.size(), 1);
|
||||||
|
assertFalse(map.containsKey("key1"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
### Relevant articles
|
||||||
|
|
||||||
|
- [Guide to OptaPlanner](https://www.baeldung.com/opta-planner)
|
|
@ -78,9 +78,9 @@ public class PersistenceJPAConfig {
|
||||||
final Properties hibernateProperties = new Properties();
|
final Properties hibernateProperties = new Properties();
|
||||||
hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
|
hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
|
||||||
hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect"));
|
hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect"));
|
||||||
hibernateProperties.setProperty("hibernate.cache.use_second_level_cache", env.getProperty("hibernate.cache.use_second_level_cache"));
|
hibernateProperties.setProperty("hibernate.cache.use_second_level_cache", "false");
|
||||||
hibernateProperties.setProperty("hibernate.cache.use_query_cache", env.getProperty("hibernate.cache.use_query_cache"));
|
|
||||||
// hibernateProperties.setProperty("hibernate.globally_quoted_identifiers", "true");
|
|
||||||
return hibernateProperties;
|
return hibernateProperties;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatche
|
||||||
public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
|
public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
|
||||||
@Override
|
@Override
|
||||||
protected Class<?>[] getRootConfigClasses() {
|
protected Class<?>[] getRootConfigClasses() {
|
||||||
return new Class[] { PersistenceJNDIConfig.class };
|
return new Class[] { PersistenceJPAConfig.class };
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package org.baeldung.persistence.criteria.repository;
|
package org.baeldung.persistence.dao;
|
||||||
|
|
||||||
import org.baeldung.persistence.criteria.model.Book;
|
import org.baeldung.persistence.model.Book;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
package org.baeldung.persistence.criteria.repository;
|
package org.baeldung.persistence.dao;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.baeldung.persistence.criteria.model.Book;
|
import org.baeldung.persistence.model.Book;
|
||||||
|
|
||||||
public interface BookRepositoryCustom {
|
public interface BookRepositoryCustom {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package org.baeldung.persistence.criteria.dao;
|
package org.baeldung.persistence.dao;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -10,8 +10,7 @@ import javax.persistence.criteria.CriteriaQuery;
|
||||||
import javax.persistence.criteria.Predicate;
|
import javax.persistence.criteria.Predicate;
|
||||||
import javax.persistence.criteria.Root;
|
import javax.persistence.criteria.Root;
|
||||||
|
|
||||||
import org.baeldung.persistence.criteria.model.Book;
|
import org.baeldung.persistence.model.Book;
|
||||||
import org.baeldung.persistence.criteria.repository.BookRepositoryCustom;
|
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
@Repository
|
@Repository
|
|
@ -1,12 +1,12 @@
|
||||||
package org.baeldung.persistence.criteria.repository;
|
package org.baeldung.persistence.dao;
|
||||||
|
|
||||||
import static org.baeldung.persistence.criteria.repository.BookSpecifications.hasAuthor;
|
import static org.baeldung.persistence.dao.BookSpecifications.hasAuthor;
|
||||||
import static org.baeldung.persistence.criteria.repository.BookSpecifications.titleContains;
|
import static org.baeldung.persistence.dao.BookSpecifications.titleContains;
|
||||||
import static org.springframework.data.jpa.domain.Specifications.where;
|
import static org.springframework.data.jpa.domain.Specifications.where;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.baeldung.persistence.criteria.model.Book;
|
import org.baeldung.persistence.model.Book;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@Service
|
@Service
|
|
@ -1,6 +1,6 @@
|
||||||
package org.baeldung.persistence.criteria.repository;
|
package org.baeldung.persistence.dao;
|
||||||
|
|
||||||
import org.baeldung.persistence.criteria.model.Book;
|
import org.baeldung.persistence.model.Book;
|
||||||
import org.springframework.data.jpa.domain.Specification;
|
import org.springframework.data.jpa.domain.Specification;
|
||||||
|
|
||||||
public class BookSpecifications {
|
public class BookSpecifications {
|
|
@ -1,4 +1,4 @@
|
||||||
package org.baeldung.persistence.criteria.model;
|
package org.baeldung.persistence.model;
|
||||||
|
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
import javax.persistence.Id;
|
import javax.persistence.Id;
|
|
@ -21,8 +21,6 @@
|
||||||
<props>
|
<props>
|
||||||
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
|
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
|
||||||
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
|
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
|
||||||
<prop key="hibernate.cache.use_second_level_cache">${hibernate.cache.use_second_level_cache}</prop>
|
|
||||||
<prop key="hibernate.cache.use_query_cache">${hibernate.cache.use_query_cache}</prop>
|
|
||||||
</props>
|
</props>
|
||||||
</property>
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
151
pom.xml
151
pom.xml
|
@ -405,7 +405,7 @@
|
||||||
<module>json</module>
|
<module>json</module>
|
||||||
<module>jsoup</module>
|
<module>jsoup</module>
|
||||||
<module>testing-modules/junit-5</module>
|
<module>testing-modules/junit-5</module>
|
||||||
<module>jws</module>
|
<!-- <module>jws</module> --><!-- POM jar version repo download failure -->
|
||||||
<module>libraries</module>
|
<module>libraries</module>
|
||||||
<module>libraries-data</module>
|
<module>libraries-data</module>
|
||||||
<module>libraries-server</module>
|
<module>libraries-server</module>
|
||||||
|
@ -604,6 +604,80 @@
|
||||||
<module>jnosql</module>
|
<module>jnosql</module>
|
||||||
<module>spring-boot-angular-ecommerce</module>
|
<module>spring-boot-angular-ecommerce</module>
|
||||||
<module>jta</module>
|
<module>jta</module>
|
||||||
|
<!--<module>java-dates</module> --> <!-- Commented because we have still not upgraded to java 9 -->
|
||||||
|
<module>java-websocket</module>
|
||||||
|
<!-- <module>activejdbc</module> --><!-- PMD voilation -->
|
||||||
|
<!-- <module>animal-sniffer-mvn-plugin</module> --><!-- PMD voilation -->
|
||||||
|
<!-- <module>apache-avro</module> --><!-- Malformed POM -->
|
||||||
|
<module>apache-bval</module>
|
||||||
|
<module>apache-shiro</module>
|
||||||
|
<module>apache-spark</module>
|
||||||
|
<!-- <module>asciidoctor</module> --><!-- Malformed POM -->
|
||||||
|
<module>checker-plugin</module>
|
||||||
|
<!-- <module>core-java-10</module> --><!-- Not upgraded to java 10 -->
|
||||||
|
<!-- <module>core-java-11</module> --><!-- Not upgraded to java 11 -->
|
||||||
|
<module>core-java-sun</module>
|
||||||
|
<module>custom-pmd</module>
|
||||||
|
<module>dagger</module>
|
||||||
|
<module>data-structures</module>
|
||||||
|
<module>dubbo</module>
|
||||||
|
<!-- <module>flyway</module> --><!-- Malformed POM -->
|
||||||
|
<!-- <module>grpc</module> --><!-- protobuf-maven-plugin filecopy failure -->
|
||||||
|
<!-- <module>java-difference-date</module> --><!-- PMD voilation -->
|
||||||
|
<!-- <module>JGit</module> --><!-- Unit test failure -->
|
||||||
|
<module>jni</module>
|
||||||
|
<module>jooby</module>
|
||||||
|
<!-- <module>micronaut</module> --><!-- Not upgraded to java 9 -->
|
||||||
|
<!-- <module>microprofile</module> --><!-- Takes too much time : Downloads 93 MBs zip and .. -->
|
||||||
|
<!-- <module>muleesb</module> --><!-- load main class org.mule.munit.remote.RemoteRunner -->
|
||||||
|
<module>ratpack</module>
|
||||||
|
<!-- <module>rest-with-spark-java</module> --><!-- PMD voilation -->
|
||||||
|
<module>spring-boot-autoconfiguration</module>
|
||||||
|
<module>spring-boot-custom-starter</module>
|
||||||
|
<!-- <module>spring-boot-jasypt</module> --><!-- PMD voilation -->
|
||||||
|
<!-- <module>spring-custom-aop</module> --><!-- Malformed POM -->
|
||||||
|
<module>spring-data-rest-querydsl</module>
|
||||||
|
<!-- <module>spring-groovy</module> --><!-- PMD voilation -->
|
||||||
|
<module>spring-mobile</module>
|
||||||
|
<!-- <module>spring-mustache</module> --><!-- PMD voilation -->
|
||||||
|
<module>spring-mvc-simple</module>
|
||||||
|
<!-- <module>spring-mybatis</module> --><!-- Compilation failure -->
|
||||||
|
<module>spring-rest-hal-browser</module>
|
||||||
|
<module>spring-rest-shell</module>
|
||||||
|
<module>spring-rest-template</module>
|
||||||
|
<module>spring-roo</module>
|
||||||
|
<module>spring-security-stormpath</module>
|
||||||
|
<module>sse-jaxrs</module>
|
||||||
|
<!-- <module>static-analysis</module> --><!-- PMD voilation -->
|
||||||
|
<module>stripe</module>
|
||||||
|
<!-- <module>structurizr</module> --><!-- Artiifact not found -->
|
||||||
|
<!-- <module>Twitter4J</module> --><!-- Test failure -->
|
||||||
|
<module>wicket</module>
|
||||||
|
<module>xstream</module>
|
||||||
|
<module>cas/cas-secured-app</module>
|
||||||
|
<!-- <module>cas/cas-server</module> --><!-- Takes too much time -->
|
||||||
|
<!-- <module>graphql/graphql-java</module> --><!-- Wrong parent -->
|
||||||
|
<!-- <module>guest/deep-jsf</module> --><!-- guest post on different site -->
|
||||||
|
<!-- <module>guest/junit5-example</module> --><!-- guest post on different site - Compilation failure -->
|
||||||
|
<!-- <module>guest/log4j2-example</module> --><!-- PMD voilation -->
|
||||||
|
<!-- <module>guest/logback-example</module> --><!-- PMD voilation -->
|
||||||
|
<!-- <module>guest/memory-leaks</module> --><!-- guest post on different site -->
|
||||||
|
<!-- <module>guest/remote-debugging</module> --><!-- guest post on different site -->
|
||||||
|
<!-- <module>guest/spring-boot-app</module> --><!-- guest post on different site -->
|
||||||
|
<!-- <module>guest/spring-mvc</module> --><!-- Malformed POM -->
|
||||||
|
<!-- <module>guest/spring-security</module> --><!-- Malformed POM -->
|
||||||
|
<!-- <module>guest/thread-pools</module> --><!-- guest post on different site -->
|
||||||
|
<!-- <module>guest/tomcat-app</module> --><!-- guest post on different site -->
|
||||||
|
<module>jenkins/hello-world</module>
|
||||||
|
<!-- <module>rule-engines/easy-rules</module> --><!-- Wrong Parent -->
|
||||||
|
<!-- <module>rule-engines/openl-tablets</module> --><!-- Wrong Parent -->
|
||||||
|
<!-- <module>rule-engines/rulebook</module> --><!-- Wrong Parent -->
|
||||||
|
<module>spring-boot-custom-starter/greeter</module>
|
||||||
|
<module>spring-boot-h2/spring-boot-h2-database</module>
|
||||||
|
<module>spring-boot-h2/spring-boot-h2-remote-app</module>
|
||||||
|
<!-- <module>guest\webservices\rest-client</module> --><!-- guest post on different site -->
|
||||||
|
<!-- <module>guest\webservices\rest-server</module> --><!-- PMD voilation -->
|
||||||
|
<!-- <module>guest\webservices\spring-rest-service</module> --><!-- guest post on different site -->
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
</profile>
|
</profile>
|
||||||
|
@ -847,7 +921,80 @@
|
||||||
<!-- group 4 - OK, 12 min, 3,961 KB log, 12 failed tests -->
|
<!-- group 4 - OK, 12 min, 3,961 KB log, 12 failed tests -->
|
||||||
|
|
||||||
<!-- <module>libraries</module> <module>jmeter</module> -->
|
<!-- <module>libraries</module> <module>jmeter</module> -->
|
||||||
|
<!--<module>java-dates</module> --> <!-- Commented because we have still not upgraded to java 9 -->
|
||||||
|
<module>java-websocket</module>
|
||||||
|
<!-- <module>activejdbc</module> --><!-- PMD voilation -->
|
||||||
|
<!-- <module>animal-sniffer-mvn-plugin</module> --><!-- PMD voilation -->
|
||||||
|
<!-- <module>apache-avro</module> --><!-- Malformed POM -->
|
||||||
|
<module>apache-bval</module>
|
||||||
|
<module>apache-shiro</module>
|
||||||
|
<module>apache-spark</module>
|
||||||
|
<!-- <module>asciidoctor</module> --><!-- Malformed POM -->
|
||||||
|
<module>checker-plugin</module>
|
||||||
|
<!-- <module>core-java-10</module> --><!-- Not upgraded to java 10 -->
|
||||||
|
<!-- <module>core-java-11</module> --><!-- Not upgraded to java 11 -->
|
||||||
|
<module>core-java-sun</module>
|
||||||
|
<module>custom-pmd</module>
|
||||||
|
<module>dagger</module>
|
||||||
|
<module>data-structures</module>
|
||||||
|
<module>dubbo</module>
|
||||||
|
<!-- <module>flyway</module> --><!-- Malformed POM -->
|
||||||
|
<!-- <module>grpc</module> --><!-- protobuf-maven-plugin filecopy failure -->
|
||||||
|
<!-- <module>java-difference-date</module> --><!-- PMD voilation -->
|
||||||
|
<!-- <module>JGit</module> --><!-- Unit test failure -->
|
||||||
|
<module>jni</module>
|
||||||
|
<module>jooby</module>
|
||||||
|
<!-- <module>micronaut</module> --><!-- Not upgraded to java 9 -->
|
||||||
|
<!-- <module>microprofile</module> --><!-- Takes too much time : Downloads 93 MBs zip and .. -->
|
||||||
|
<!-- <module>muleesb</module> --><!-- load main class org.mule.munit.remote.RemoteRunner -->
|
||||||
|
<module>ratpack</module>
|
||||||
|
<!-- <module>rest-with-spark-java</module> --><!-- PMD voilation -->
|
||||||
|
<module>spring-boot-autoconfiguration</module>
|
||||||
|
<module>spring-boot-custom-starter</module>
|
||||||
|
<!-- <module>spring-boot-jasypt</module> --><!-- PMD voilation -->
|
||||||
|
<!-- <module>spring-custom-aop</module> --><!-- Malformed POM -->
|
||||||
|
<module>spring-data-rest-querydsl</module>
|
||||||
|
<!-- <module>spring-groovy</module> --><!-- PMD voilation -->
|
||||||
|
<module>spring-mobile</module>
|
||||||
|
<!-- <module>spring-mustache</module> --><!-- PMD voilation -->
|
||||||
|
<module>spring-mvc-simple</module>
|
||||||
|
<!-- <module>spring-mybatis</module> --><!-- Compilation failure -->
|
||||||
|
<module>spring-rest-hal-browser</module>
|
||||||
|
<module>spring-rest-shell</module>
|
||||||
|
<module>spring-rest-template</module>
|
||||||
|
<module>spring-roo</module>
|
||||||
|
<module>spring-security-stormpath</module>
|
||||||
|
<module>sse-jaxrs</module>
|
||||||
|
<!-- <module>static-analysis</module> --><!-- PMD voilation -->
|
||||||
|
<module>stripe</module>
|
||||||
|
<!-- <module>structurizr</module> --><!-- Artiifact not found -->
|
||||||
|
<!-- <module>Twitter4J</module> --><!-- Test failure -->
|
||||||
|
<module>wicket</module>
|
||||||
|
<module>xstream</module>
|
||||||
|
<module>cas/cas-secured-app</module>
|
||||||
|
<!-- <module>cas/cas-server</module> --><!-- Takes too much time -->
|
||||||
|
<!-- <module>graphql/graphql-java</module> --><!-- Wrong parent -->
|
||||||
|
<!-- <module>guest/deep-jsf</module> --><!-- guest post on different site -->
|
||||||
|
<!-- <module>guest/junit5-example</module> --><!-- guest post on different site - Compilation failure -->
|
||||||
|
<!-- <module>guest/log4j2-example</module> --><!-- PMD voilation -->
|
||||||
|
<!-- <module>guest/logback-example</module> --><!-- PMD voilation -->
|
||||||
|
<!-- <module>guest/memory-leaks</module> --><!-- guest post on different site -->
|
||||||
|
<!-- <module>guest/remote-debugging</module> --><!-- guest post on different site -->
|
||||||
|
<!-- <module>guest/spring-boot-app</module> --><!-- guest post on different site -->
|
||||||
|
<!-- <module>guest/spring-mvc</module> --><!-- Malformed POM -->
|
||||||
|
<!-- <module>guest/spring-security</module> --><!-- Malformed POM -->
|
||||||
|
<!-- <module>guest/thread-pools</module> --><!-- guest post on different site -->
|
||||||
|
<!-- <module>guest/tomcat-app</module> --><!-- guest post on different site -->
|
||||||
|
<module>jenkins/hello-world</module>
|
||||||
|
<!-- <module>rule-engines/easy-rules</module> --><!-- Wrong Parent -->
|
||||||
|
<!-- <module>rule-engines/openl-tablets</module> --><!-- Wrong Parent -->
|
||||||
|
<!-- <module>rule-engines/rulebook</module> --><!-- Wrong Parent -->
|
||||||
|
<module>spring-boot-custom-starter/greeter</module>
|
||||||
|
<module>spring-boot-h2/spring-boot-h2-database</module>
|
||||||
|
<module>spring-boot-h2/spring-boot-h2-remote-app</module>
|
||||||
|
<!-- <module>guest\webservices\rest-client</module> --><!-- guest post on different site -->
|
||||||
|
<!-- <module>guest\webservices\rest-server</module> --><!-- PMD voilation -->
|
||||||
|
<!-- <module>guest\webservices\spring-rest-service</module> --><!-- guest post on different site -->
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
</profile>
|
</profile>
|
||||||
|
|
|
@ -37,14 +37,14 @@ public class ReactorIntegrationTest {
|
||||||
Flux.just(1, 2, 3, 4)
|
Flux.just(1, 2, 3, 4)
|
||||||
.log()
|
.log()
|
||||||
.map(i -> i * 2)
|
.map(i -> i * 2)
|
||||||
.zipWith(Flux.range(0, Integer.MAX_VALUE).log(), (two, one) -> String.format("First Flux: %d, Second Flux: %d", one, two))
|
.zipWith(Flux.range(0, Integer.MAX_VALUE).log(), (one, two) -> String.format("First Flux: %d, Second Flux: %d", one, two))
|
||||||
.subscribe(elements::add);
|
.subscribe(elements::add);
|
||||||
|
|
||||||
assertThat(elements).containsExactly(
|
assertThat(elements).containsExactly(
|
||||||
"First Flux: 0, Second Flux: 2",
|
"First Flux: 2, Second Flux: 0",
|
||||||
"First Flux: 1, Second Flux: 4",
|
"First Flux: 4, Second Flux: 1",
|
||||||
"First Flux: 2, Second Flux: 6",
|
"First Flux: 6, Second Flux: 2",
|
||||||
"First Flux: 3, Second Flux: 8");
|
"First Flux: 8, Second Flux: 3");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>com.baeldung</groupId>
|
<groupId>com.baeldung</groupId>
|
||||||
|
@ -134,7 +135,26 @@
|
||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
<!-- this surefire configuration allows concurrent execution; do not remove -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
|
<version>${maven-surefire-plugin.version}</version>
|
||||||
|
<configuration>
|
||||||
|
<parallel>methods</parallel>
|
||||||
|
<useUnlimitedThreads>true</useUnlimitedThreads>
|
||||||
|
<excludes>
|
||||||
|
<exclude>**/*IntegrationTest.java</exclude>
|
||||||
|
<exclude>**/*IntTest.java</exclude>
|
||||||
|
<exclude>**/*LongRunningUnitTest.java</exclude>
|
||||||
|
<exclude>**/*ManualTest.java</exclude>
|
||||||
|
<exclude>**/JdbcTest.java</exclude>
|
||||||
|
<exclude>**/*LiveTest.java</exclude>
|
||||||
|
</excludes>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
|
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
|
@ -142,6 +162,8 @@
|
||||||
<asciidoctor-plugin.version>1.5.6</asciidoctor-plugin.version>
|
<asciidoctor-plugin.version>1.5.6</asciidoctor-plugin.version>
|
||||||
<commons-collections4.version>4.1</commons-collections4.version>
|
<commons-collections4.version>4.1</commons-collections4.version>
|
||||||
<snippetsDirectory>${project.build.directory}/generated-snippets</snippetsDirectory>
|
<snippetsDirectory>${project.build.directory}/generated-snippets</snippetsDirectory>
|
||||||
|
<maven-surefire-plugin.version>2.21.0</maven-surefire-plugin.version>
|
||||||
|
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -45,6 +45,15 @@
|
||||||
<artifactId>spring-shell</artifactId>
|
<artifactId>spring-shell</artifactId>
|
||||||
<version>${org.springframework.shell.version}</version>
|
<version>${org.springframework.shell.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
<artifactId>spring-websocket</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
<artifactId>spring-messaging</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- aspectj -->
|
<!-- aspectj -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
|
|
|
@ -13,21 +13,36 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
public class ScopesController {
|
public class ScopesController {
|
||||||
public static final Logger LOG = LoggerFactory.getLogger(ScopesController.class);
|
public static final Logger LOG = LoggerFactory.getLogger(ScopesController.class);
|
||||||
|
|
||||||
@Resource(name = "requestMessage")
|
@Resource(name = "requestScopedBean")
|
||||||
HelloMessageGenerator requestMessage;
|
HelloMessageGenerator requestScopedBean;
|
||||||
|
|
||||||
@Resource(name = "sessionMessage")
|
@Resource(name = "sessionScopedBean")
|
||||||
HelloMessageGenerator sessionMessage;
|
HelloMessageGenerator sessionScopedBean;
|
||||||
|
|
||||||
@RequestMapping("/scopes")
|
@Resource(name = "applicationScopedBean")
|
||||||
public String getScopes(final Model model) {
|
HelloMessageGenerator applicationScopedBean;
|
||||||
LOG.info("Request Message:" + requestMessage.getMessage());
|
|
||||||
LOG.info("Session Message" + sessionMessage.getMessage());
|
@RequestMapping("/scopes/request")
|
||||||
requestMessage.setMessage("Good morning!");
|
public String getRequestScopeMessage(final Model model) {
|
||||||
sessionMessage.setMessage("Good afternoon!");
|
model.addAttribute("previousMessage", requestScopedBean.getMessage());
|
||||||
model.addAttribute("requestMessage", requestMessage.getMessage());
|
requestScopedBean.setMessage("Request Scope Message!");
|
||||||
model.addAttribute("sessionMessage", sessionMessage.getMessage());
|
model.addAttribute("currentMessage", requestScopedBean.getMessage());
|
||||||
return "scopesExample";
|
return "scopesExample";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequestMapping("/scopes/session")
|
||||||
|
public String getSessionScopeMessage(final Model model) {
|
||||||
|
model.addAttribute("previousMessage", sessionScopedBean.getMessage());
|
||||||
|
sessionScopedBean.setMessage("Session Scope Message!");
|
||||||
|
model.addAttribute("currentMessage", sessionScopedBean.getMessage());
|
||||||
|
return "scopesExample";
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping("/scopes/application")
|
||||||
|
public String getApplicationScopeMessage(final Model model) {
|
||||||
|
model.addAttribute("previousMessage", applicationScopedBean.getMessage());
|
||||||
|
applicationScopedBean.setMessage("Application Scope Message!");
|
||||||
|
model.addAttribute("currentMessage", applicationScopedBean.getMessage());
|
||||||
|
return "scopesExample";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,19 +27,25 @@ public class ScopesConfig {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS)
|
@Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS)
|
||||||
public HelloMessageGenerator requestMessage() {
|
public HelloMessageGenerator requestScopedBean() {
|
||||||
return new HelloMessageGenerator();
|
return new HelloMessageGenerator();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS)
|
@Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS)
|
||||||
public HelloMessageGenerator sessionMessage() {
|
public HelloMessageGenerator sessionScopedBean() {
|
||||||
return new HelloMessageGenerator();
|
return new HelloMessageGenerator();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@Scope(value = WebApplicationContext.SCOPE_APPLICATION, proxyMode = ScopedProxyMode.TARGET_CLASS)
|
@Scope(value = WebApplicationContext.SCOPE_APPLICATION, proxyMode = ScopedProxyMode.TARGET_CLASS)
|
||||||
public HelloMessageGenerator globalSessionMessage() {
|
public HelloMessageGenerator applicationScopedBean() {
|
||||||
|
return new HelloMessageGenerator();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
@Scope(scopeName = "websocket", proxyMode = ScopedProxyMode.TARGET_CLASS)
|
||||||
|
public HelloMessageGenerator websocketScopedBean() {
|
||||||
return new HelloMessageGenerator();
|
return new HelloMessageGenerator();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
<head></head>
|
<head></head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<h1>Bean Scopes Examples</h1>
|
<h1>Bean Scopes Examples</h1>
|
||||||
<br>
|
<br> Previous Message: ${previousMessage }
|
||||||
Request Message: ${requestMessage }<br>
|
<br> Current Message: ${currentMessage }
|
||||||
Session Message: ${sessionMessage }
|
<br>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
|
@ -46,6 +46,10 @@
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<mainClass>com.baeldung.springbootmvc.SpringBootMvcApplication</mainClass>
|
||||||
|
<layout>JAR</layout>
|
||||||
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
@ -56,6 +60,7 @@
|
||||||
<java.version>1.8</java.version>
|
<java.version>1.8</java.version>
|
||||||
<!-- ROME for RSS -->
|
<!-- ROME for RSS -->
|
||||||
<rome.version>1.10.0</rome.version>
|
<rome.version>1.10.0</rome.version>
|
||||||
|
<start-class>com.baeldung.springbootmvc.SpringBootMvcApplication</start-class>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -6,8 +6,8 @@ import org.springframework.context.annotation.ComponentScan;
|
||||||
|
|
||||||
@SpringBootApplication
|
@SpringBootApplication
|
||||||
@ComponentScan(basePackages = "com.baeldung.dependency.exception")
|
@ComponentScan(basePackages = "com.baeldung.dependency.exception")
|
||||||
public class CustomConfiguration {
|
public class SpringDependenciesExampleApplication {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
SpringApplication.run(CustomConfiguration.class, args);
|
SpringApplication.run(SpringDependenciesExampleApplication.class, args);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>com.baeldung</groupId>
|
||||||
|
<artifactId>spring-context-testing</artifactId>
|
||||||
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter</artifactId>
|
||||||
|
<version>${spring.boot.starter.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-test</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
<version>${spring.boot.starter.version}</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<spring.boot.starter.version>2.0.4.RELEASE</spring.boot.starter.version>
|
||||||
|
</properties>
|
||||||
|
</project>
|
|
@ -0,0 +1,15 @@
|
||||||
|
package com.baeldung.testpropertysource;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class ClassUsingProperty {
|
||||||
|
|
||||||
|
@Value("${baeldung.testpropertysource.one}")
|
||||||
|
private String propertyOne;
|
||||||
|
|
||||||
|
public String retrievePropertyOne() {
|
||||||
|
return propertyOne;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
package com.baeldung.testpropertysource;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
|
import org.springframework.test.context.TestPropertySource;
|
||||||
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
@ContextConfiguration(classes = ClassUsingProperty.class)
|
||||||
|
@TestPropertySource
|
||||||
|
public class DefaultTestPropertySourceIntegrationTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
ClassUsingProperty classUsingProperty;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenDefaultTestPropertySource_whenVariableOneRetrieved_thenValueInDefaultFileReturned() {
|
||||||
|
String output = classUsingProperty.retrievePropertyOne();
|
||||||
|
|
||||||
|
assertThat(output).isEqualTo("default-value");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
package com.baeldung.testpropertysource;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
|
import org.springframework.test.context.TestPropertySource;
|
||||||
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
@ContextConfiguration(classes = ClassUsingProperty.class)
|
||||||
|
@TestPropertySource(locations = "/other-location.properties")
|
||||||
|
public class LocationTestPropertySourceIntegrationTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
ClassUsingProperty classUsingProperty;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenDefaultTestPropertySource_whenVariableOneRetrieved_thenValueInDefaultFileReturned() {
|
||||||
|
String output = classUsingProperty.retrievePropertyOne();
|
||||||
|
|
||||||
|
assertThat(output).isEqualTo("other-location-value");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
package com.baeldung.testpropertysource;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
|
import org.springframework.test.context.TestPropertySource;
|
||||||
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
@ContextConfiguration(classes = ClassUsingProperty.class)
|
||||||
|
@TestPropertySource(locations = "/other-location.properties", properties = "baeldung.testpropertysource.one=other-properties-value")
|
||||||
|
public class PropertiesTestPropertySourceIntegrationTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
ClassUsingProperty classUsingProperty;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenDefaultTestPropertySource_whenVariableOneRetrieved_thenValueInDefaultFileReturned() {
|
||||||
|
String output = classUsingProperty.retrievePropertyOne();
|
||||||
|
|
||||||
|
assertThat(output).isEqualTo("other-properties-value");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
baeldung.testpropertysource.one=default-value
|
|
@ -0,0 +1 @@
|
||||||
|
baeldung.testpropertysource.one=other-location-value
|
Loading…
Reference in New Issue