From 66de0d440c303b6da25a896cffe9473c9ffae2e7 Mon Sep 17 00:00:00 2001 From: Maciej Szarlinski <mszarlinski@gmail.com> Date: Tue, 8 Nov 2016 18:18:31 +0100 Subject: [PATCH] Switch off springboot-petclinic-server, adjust client side urls to call API Gateway --- petclinic-api-gateway/pom.xml | 173 +++++++++++++----- .../api/infrastructure/config/WebConfig.java | 14 ++ .../resources/messages/messages.properties | 0 .../resources/messages/messages_de.properties | 0 .../resources/messages/messages_en.properties | 0 .../src/main/resources/templates/index.html | 0 .../clients/boundary/web/pet/PetResource.java | 14 +- .../boundary/web/visit/VisitResource.java | 4 +- pom.xml | 6 - .../owner-details/owner-details.component.js | 2 +- .../owner-form/owner-form.component.js | 2 +- .../scripts/vet-list/vet-list.component.js | 2 +- .../src/scripts/visits/visits.component.js | 2 +- 13 files changed, 148 insertions(+), 71 deletions(-) create mode 100644 petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/infrastructure/config/WebConfig.java rename {springboot-petclinic-server => petclinic-api-gateway}/src/main/resources/messages/messages.properties (100%) rename {springboot-petclinic-server => petclinic-api-gateway}/src/main/resources/messages/messages_de.properties (100%) rename {springboot-petclinic-server => petclinic-api-gateway}/src/main/resources/messages/messages_en.properties (100%) rename {springboot-petclinic-server => petclinic-api-gateway}/src/main/resources/templates/index.html (100%) diff --git a/petclinic-api-gateway/pom.xml b/petclinic-api-gateway/pom.xml index b28dd9c8..2c683164 100644 --- a/petclinic-api-gateway/pom.xml +++ b/petclinic-api-gateway/pom.xml @@ -1,7 +1,7 @@ <?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" - 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> + 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>org.springframework.samples.petclinic.api</groupId> <artifactId>petclinic-api-gateway</artifactId> @@ -23,51 +23,130 @@ <java.version>1.8</java.version> </properties> - <dependencies> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-actuator</artifactId> - </dependency> - <dependency> - <groupId>org.springframework.cloud</groupId> - <artifactId>spring-cloud-starter-config</artifactId> - </dependency> - <dependency> - <groupId>org.springframework.cloud</groupId> - <artifactId>spring-cloud-starter-eureka</artifactId> - </dependency> - <dependency> - <groupId>org.springframework.cloud</groupId> - <artifactId>spring-cloud-starter-zuul</artifactId> - </dependency> - - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-test</artifactId> - <scope>test</scope> - </dependency> - </dependencies> - - <dependencyManagement> - <dependencies> - <dependency> - <groupId>org.springframework.cloud</groupId> - <artifactId>spring-cloud-dependencies</artifactId> - <version>Camden.SR1</version> - <type>pom</type> - <scope>import</scope> - </dependency> - </dependencies> - </dependencyManagement> - - <build> - <plugins> - <plugin> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-maven-plugin</artifactId> - </plugin> - </plugins> - </build> + <dependencies> + <dependency> + <groupId>org.springframework.cloud</groupId> + <artifactId>spring-cloud-starter-zuul</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.samples</groupId> + <artifactId>springboot-petclinic-client</artifactId> + <version>${project.version}</version> + </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-web</artifactId> + </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-thymeleaf</artifactId> + </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-devtools</artifactId> + <optional>true</optional> + </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-configuration-processor</artifactId> + <optional>true</optional> + </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-actuator</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.cloud</groupId> + <artifactId>spring-cloud-starter-config</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.cloud</groupId> + <artifactId>spring-cloud-starter-eureka</artifactId> + </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-test</artifactId> + <scope>test</scope> + </dependency> + </dependencies> + + <build> + <finalName>petclinic</finalName> + <plugins> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + <configuration> + <fork>true</fork> + </configuration> + <executions> + <execution> + <!-- Spring Boot Actuator displays build-related information if a META-INF/build-info.properties file is present --> + <goals> + <goal>build-info</goal> + </goals> + <configuration> + <additionalProperties> + <encoding.source>${project.build.sourceEncoding}</encoding.source> + <encoding.reporting>${project.reporting.outputEncoding}</encoding.reporting> + <java.source>${maven.compiler.source}</java.source> + <java.target>${maven.compiler.target}</java.target> + </additionalProperties> + </configuration> + </execution> + </executions> + </plugin> + + <!-- Spring Boot Actuator displays build-related information if a META-INF/build-info.properties file is present --> + <plugin> + <groupId>pl.project13.maven</groupId> + <artifactId>git-commit-id-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>revision</goal> + </goals> + </execution> + </executions> + <configuration> + <verbose>true</verbose> + <dateFormat>yyyy-MM-dd'T'HH:mm:ssZ</dateFormat> + <generateGitPropertiesFile>true</generateGitPropertiesFile> + <generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties + </generateGitPropertiesFilename> + </configuration> + </plugin> + + <plugin> + <groupId>com.spotify</groupId> + <artifactId>docker-maven-plugin</artifactId> + <version>0.4.13</version> + <configuration> + <imageName>${docker.image.prefix}/springboot-petclinic</imageName> + <dockerDirectory>src/main/docker</dockerDirectory> + <resources> + <resource> + <targetPath>/</targetPath> + <directory>${project.build.directory}</directory> + <include>${project.build.finalName}.jar</include> + </resource> + </resources> + <forceTags>true</forceTags> + <imageTags> + <imageTag>${project.version}</imageTag> + <imageTag>latest</imageTag> + </imageTags> + <useConfigFile>true</useConfigFile> + </configuration> + </plugin> + </plugins> + </build> </project> diff --git a/petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/infrastructure/config/WebConfig.java b/petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/infrastructure/config/WebConfig.java new file mode 100644 index 00000000..19cd8ae3 --- /dev/null +++ b/petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/infrastructure/config/WebConfig.java @@ -0,0 +1,14 @@ +package org.springframework.samples.petclinic.api.infrastructure.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; + +@Configuration +public class WebConfig extends WebMvcConfigurerAdapter { + + @Override + public void addViewControllers(ViewControllerRegistry registry) { + registry.addViewController("/").setViewName("index"); + } +} diff --git a/springboot-petclinic-server/src/main/resources/messages/messages.properties b/petclinic-api-gateway/src/main/resources/messages/messages.properties similarity index 100% rename from springboot-petclinic-server/src/main/resources/messages/messages.properties rename to petclinic-api-gateway/src/main/resources/messages/messages.properties diff --git a/springboot-petclinic-server/src/main/resources/messages/messages_de.properties b/petclinic-api-gateway/src/main/resources/messages/messages_de.properties similarity index 100% rename from springboot-petclinic-server/src/main/resources/messages/messages_de.properties rename to petclinic-api-gateway/src/main/resources/messages/messages_de.properties diff --git a/springboot-petclinic-server/src/main/resources/messages/messages_en.properties b/petclinic-api-gateway/src/main/resources/messages/messages_en.properties similarity index 100% rename from springboot-petclinic-server/src/main/resources/messages/messages_en.properties rename to petclinic-api-gateway/src/main/resources/messages/messages_en.properties diff --git a/springboot-petclinic-server/src/main/resources/templates/index.html b/petclinic-api-gateway/src/main/resources/templates/index.html similarity index 100% rename from springboot-petclinic-server/src/main/resources/templates/index.html rename to petclinic-api-gateway/src/main/resources/templates/index.html diff --git a/petclinic-clients-service/src/main/java/org/springframework/samples/petclinic/clients/boundary/web/pet/PetResource.java b/petclinic-clients-service/src/main/java/org/springframework/samples/petclinic/clients/boundary/web/pet/PetResource.java index 2ebc2d79..0da9afc4 100644 --- a/petclinic-clients-service/src/main/java/org/springframework/samples/petclinic/clients/boundary/web/pet/PetResource.java +++ b/petclinic-clients-service/src/main/java/org/springframework/samples/petclinic/clients/boundary/web/pet/PetResource.java @@ -53,16 +53,6 @@ public class PetResource { return petService.findPetTypes(); } - //TODO: unused? -// @GetMapping("/owners/{ownerId}/pets/new") -// public String initCreationForm(@PathVariable("ownerId") int ownerId, Map<String, Object> model) { -// Owner owner = ownerService.findOwnerById(ownerId); -// Pet pet = new Pet(); -// owner.addPet(pet); -// model.put("pet", pet); -// return "pets/createOrUpdatePetForm"; -// } - @PostMapping("/owners/{ownerId}/pets") @ResponseStatus(HttpStatus.NO_CONTENT) public void processCreationForm( @@ -76,7 +66,7 @@ public class PetResource { save(pet, petRequest); } - @PutMapping("/owners/{ownerId}/pets/{petId}") + @PutMapping("/owners/*/pets/{petId}") @ResponseStatus(HttpStatus.NO_CONTENT) public void processUpdateForm(@RequestBody PetRequest petRequest) { save(petService.findPetById(petRequest.getId()), petRequest); @@ -93,7 +83,7 @@ public class PetResource { petService.savePet(pet); } - @GetMapping("/pets/{petId}") + @GetMapping("owners/*/pets/{petId}") public PetDetails findPet(@PathVariable("petId") int petId) { return new PetDetails(petService.findPetById(petId)); } diff --git a/petclinic-visits-service/src/main/java/org/springframework/samples/petclinic/visits/boundary/web/visit/VisitResource.java b/petclinic-visits-service/src/main/java/org/springframework/samples/petclinic/visits/boundary/web/visit/VisitResource.java index 8f528d1b..e67519ea 100644 --- a/petclinic-visits-service/src/main/java/org/springframework/samples/petclinic/visits/boundary/web/visit/VisitResource.java +++ b/petclinic-visits-service/src/main/java/org/springframework/samples/petclinic/visits/boundary/web/visit/VisitResource.java @@ -40,7 +40,7 @@ public class VisitResource { this.visitService = visitService; } - @PostMapping("/pets/{petId}/visits") + @PostMapping("owners/*/pets/{petId}/visits") @ResponseStatus(HttpStatus.NO_CONTENT) public void create( @Valid @RequestBody Visit visit, @@ -50,7 +50,7 @@ public class VisitResource { visitService.saveVisit(visit); } - @GetMapping("/pets/{petId}/visits") + @GetMapping("owners/*/pets/{petId}/visits") public List<Visit> visits(@PathVariable("petId") int petId) { return visitService.findVisitsByPetId(petId); } diff --git a/pom.xml b/pom.xml index 008eab2c..e6b117d9 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,6 @@ <modules> <module>springboot-petclinic-client</module> - <module>springboot-petclinic-server</module> <module>petclinic-clients-service</module> <module>petclinic-vets-service</module> <module>petclinic-visits-service</module> @@ -32,11 +31,6 @@ <dependencyManagement> <dependencies> - <dependency> - <groupId>org.springframework.samples</groupId> - <artifactId>spring-petclinic-client</artifactId> - <version>${project.version}</version> - </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> diff --git a/springboot-petclinic-client/src/scripts/owner-details/owner-details.component.js b/springboot-petclinic-client/src/scripts/owner-details/owner-details.component.js index 3569642d..98a43fcb 100644 --- a/springboot-petclinic-client/src/scripts/owner-details/owner-details.component.js +++ b/springboot-petclinic-client/src/scripts/owner-details/owner-details.component.js @@ -4,4 +4,4 @@ angular.module('ownerDetails') .component('ownerDetails', { templateUrl: 'scripts/owner-details/owner-details.template.html', controller: 'OwnerDetailsController' - }); \ No newline at end of file + }); diff --git a/springboot-petclinic-client/src/scripts/owner-form/owner-form.component.js b/springboot-petclinic-client/src/scripts/owner-form/owner-form.component.js index dd409691..e8dec69c 100644 --- a/springboot-petclinic-client/src/scripts/owner-form/owner-form.component.js +++ b/springboot-petclinic-client/src/scripts/owner-form/owner-form.component.js @@ -4,4 +4,4 @@ angular.module('ownerForm') .component('ownerForm', { templateUrl: 'scripts/owner-form/owner-form.template.html', controller: 'OwnerFormController' - }); \ No newline at end of file + }); diff --git a/springboot-petclinic-client/src/scripts/vet-list/vet-list.component.js b/springboot-petclinic-client/src/scripts/vet-list/vet-list.component.js index 892f4f98..6d8e9508 100644 --- a/springboot-petclinic-client/src/scripts/vet-list/vet-list.component.js +++ b/springboot-petclinic-client/src/scripts/vet-list/vet-list.component.js @@ -4,4 +4,4 @@ angular.module('vetList') .component('vetList', { templateUrl: 'scripts/vet-list/vet-list.template.html', controller: 'VetListController' - }); \ No newline at end of file + }); diff --git a/springboot-petclinic-client/src/scripts/visits/visits.component.js b/springboot-petclinic-client/src/scripts/visits/visits.component.js index bf6a17a4..0bfbcad3 100644 --- a/springboot-petclinic-client/src/scripts/visits/visits.component.js +++ b/springboot-petclinic-client/src/scripts/visits/visits.component.js @@ -4,4 +4,4 @@ angular.module('visits') .component('visits', { templateUrl: 'scripts/visits/visits.template.html', controller: 'VisitsController' - }); \ No newline at end of file + }); -- GitLab