diff --git a/pom.xml b/pom.xml index f16861cc68..19c602091d 100644 --- a/pom.xml +++ b/pom.xml @@ -50,6 +50,7 @@ spring-mvc-no-xml spring-mvc-xml spring-openid + spring-protobuf spring-quartz spring-rest diff --git a/spring-protobuf/pom.xml b/spring-protobuf/pom.xml index 28338f26c3..1275d72edf 100644 --- a/spring-protobuf/pom.xml +++ b/spring-protobuf/pom.xml @@ -40,4 +40,19 @@ 4.5.2 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.3 + + 1.8 + 1.8 + + + + diff --git a/spring-protobuf/src/main/java/com/baeldung/protobuf/Application.java b/spring-protobuf/src/main/java/com/baeldung/protobuf/Application.java index 38a49367a3..ce5453af61 100644 --- a/spring-protobuf/src/main/java/com/baeldung/protobuf/Application.java +++ b/spring-protobuf/src/main/java/com/baeldung/protobuf/Application.java @@ -1,23 +1,23 @@ package com.baeldung.protobuf; +import com.baeldung.protobuf.BaeldungTraining.Course; +import com.baeldung.protobuf.BaeldungTraining.Student; +import com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber; +import com.baeldung.protobuf.BaeldungTraining.Student.PhoneType; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter; +import org.springframework.web.client.RestTemplate; + import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.annotation.Bean; -import org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter; -import org.springframework.web.client.RestTemplate; - -import com.baeldung.protobuf.BaeldungTraining.Course; -import com.baeldung.protobuf.BaeldungTraining.Student; -import com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber; -import com.baeldung.protobuf.BaeldungTraining.Student.PhoneType; - @SpringBootApplication public class Application { + @Bean RestTemplate restTemplate(ProtobufHttpMessageConverter hmc) { return new RestTemplate(Arrays.asList(hmc)); @@ -29,21 +29,28 @@ public class Application { } @Bean - public CourseRepository createDummyCourses() { - Map dummy = new HashMap<>(); - - Course course1 = Course.newBuilder().setId(1).setCourseName("REST with Spring").addAllStudent(createDummyStudents()).build(); - Course course2 = Course.newBuilder().setId(2).setCourseName("Learn Spring Security").addAllStudent(new ArrayList()).build(); - - dummy.put(course1.getId(), course1); - dummy.put(course2.getId(), course2); - - return new CourseRepository(dummy); + public CourseRepository createStubCourses() { + Map courses = new HashMap<>(); + + Course course1 = Course.newBuilder() + .setId(1) + .setCourseName("REST with Spring") + .addAllStudent(createStubStudents()) + .build(); + + Course course2 = Course.newBuilder() + .setId(2) + .setCourseName("Learn Spring Security") + .addAllStudent(new ArrayList<>()) + .build(); + + courses.put(course1.getId(), course1); + courses.put(course2.getId(), course2); + + return new CourseRepository(courses); } - private List createDummyStudents() { - List studentList = new ArrayList<>(); - + private List createStubStudents() { PhoneNumber phone1 = createPhone("123456", PhoneType.MOBILE); Student student1 = createStudent(1, "John", "Doe", "john.doe@baeldung.com", Arrays.asList(phone1)); @@ -54,8 +61,7 @@ public class Application { PhoneNumber phone3_2 = createPhone("456789", PhoneType.LANDLINE); Student student3 = createStudent(3, "Jane", "Doe", "jane.doe@baeldung.com", Arrays.asList(phone3_1, phone3_2)); - studentList.addAll(Arrays.asList(student1, student2, student3)); - return studentList; + return Arrays.asList(student1, student2, student3); } private Student createStudent(int id, String firstName, String lastName, String email, List phones) { diff --git a/spring-protobuf/src/main/java/com/baeldung/protobuf/CourseController.java b/spring-protobuf/src/main/java/com/baeldung/protobuf/CourseController.java index 027f296fa2..807b9a9ea4 100644 --- a/spring-protobuf/src/main/java/com/baeldung/protobuf/CourseController.java +++ b/spring-protobuf/src/main/java/com/baeldung/protobuf/CourseController.java @@ -9,6 +9,7 @@ import com.baeldung.protobuf.BaeldungTraining.Course; @RestController public class CourseController { + @Autowired CourseRepository courseRepo; diff --git a/spring-protobuf/src/main/java/com/baeldung/protobuf/CourseRepository.java b/spring-protobuf/src/main/java/com/baeldung/protobuf/CourseRepository.java index aa00b2a850..60f24abf93 100644 --- a/spring-protobuf/src/main/java/com/baeldung/protobuf/CourseRepository.java +++ b/spring-protobuf/src/main/java/com/baeldung/protobuf/CourseRepository.java @@ -1,11 +1,12 @@ package com.baeldung.protobuf; -import java.util.Map; - import com.baeldung.protobuf.BaeldungTraining.Course; +import java.util.Map; + public class CourseRepository { - Map courses; + + private final Map courses; public CourseRepository (Map courses) { this.courses = courses; diff --git a/spring-protobuf/src/test/java/com/baeldung/protobuf/ApplicationTest.java b/spring-protobuf/src/test/java/com/baeldung/protobuf/ApplicationTest.java index 026fa04fa2..a17082cea7 100644 --- a/spring-protobuf/src/test/java/com/baeldung/protobuf/ApplicationTest.java +++ b/spring-protobuf/src/test/java/com/baeldung/protobuf/ApplicationTest.java @@ -1,13 +1,13 @@ package com.baeldung.protobuf; -import java.io.IOException; -import java.io.InputStream; - +import com.baeldung.protobuf.BaeldungTraining.Course; +import com.googlecode.protobuf.format.JsonFormat; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; - +import org.junit.Test; +import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.boot.test.WebIntegrationTest; @@ -15,20 +15,19 @@ import org.springframework.http.ResponseEntity; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.web.client.RestTemplate; -import org.junit.Test; -import org.junit.runner.RunWith; +import java.io.IOException; +import java.io.InputStream; -import com.baeldung.protobuf.BaeldungTraining.Course; -import com.googlecode.protobuf.format.JsonFormat; - -import static org.junit.Assert.assertThat; import static org.hamcrest.CoreMatchers.containsString; +import static org.junit.Assert.assertThat; @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = Application.class) @WebIntegrationTest public class ApplicationTest { + private static final String COURSE1_URL = "http://localhost:8080/courses/1"; + @Autowired private RestTemplate restTemplate;